diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000000..b56e5b9c67 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,17 @@ +# Editor config +# http://editorconfig.org + +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +indent_style = space +indent_size = 2 +max_line_length = 100 +trim_trailing_whitespace = true + +[*.{md,mdx}] +insert_final_newline = false +trim_trailing_whitespace = false diff --git a/.env.example b/.env.example deleted file mode 100644 index 4ce02c1a8f..0000000000 --- a/.env.example +++ /dev/null @@ -1,8 +0,0 @@ -# rename this file to .env and supply the values listed below -# also make sure they are available to the build tool (e.g. Vercel) -# warning: variables prefixed with GATSBY_ will be made available to client-side code -# be careful not to expose sensitive data (in this case your Algolia admin key) -GATSBY_ALGOLIA_APP_ID="XXX" -GATSBY_ALGOLIA_SEARCH_KEY="XXX" -GATSBY_ALGOLIA_ADMIN_API_KEY="XXX" -GATSBY_ALGOLIA_INDEX_NAME="XXX" \ No newline at end of file diff --git a/.flycode.yaml b/.flycode.yaml deleted file mode 100644 index 4e02848c07..0000000000 --- a/.flycode.yaml +++ /dev/null @@ -1,11 +0,0 @@ -version: '0.1' -environments: - - name: main - branch: main - mode: pull-request -apps: - - name: docs - path: '' - text-resources: - - path: '*.tsx' - format: react-hardcoded diff --git a/.github/workflows/image-optimise.yml b/.github/workflows/image-optimise.yml index 3f961f2618..b8fb3b3b55 100644 --- a/.github/workflows/image-optimise.yml +++ b/.github/workflows/image-optimise.yml @@ -36,7 +36,7 @@ jobs: github.event.pull_request.head.repo.full_name == github.repository) steps: - name: Checkout Branch - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Compress Images id: calibre @@ -51,7 +51,7 @@ jobs: if: | github.event_name != 'pull_request' && steps.calibre.outputs.markdown != '' - uses: peter-evans/create-pull-request@v3 + uses: peter-evans/create-pull-request@v6.0.2 with: title: Auto Compress Images branch-suffix: timestamp diff --git a/.github/workflows/list-changed-pages.yml b/.github/workflows/list-changed-pages.yml index d5b24ed7ac..b6d4583bae 100644 --- a/.github/workflows/list-changed-pages.yml +++ b/.github/workflows/list-changed-pages.yml @@ -1,99 +1,62 @@ -name: Comment based on changed pages (Vercel Deploy URLs + Redirect Suggestions) - +name: List Changed Pages on: pull_request: + branches: + - main + - docusaurus + paths: + - 'content/**/*' jobs: - post-comment-with-links-to-changed-pages: - name: Create or Update + post-files-changed-comment: + name: 'Post files changed comment' runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Get list of changed files - id: files - uses: Ana06/get-changed-files@v1.2 # it's a fork of jitterbit/get-changed-files@v1 which works better with pull requests - - name: List Vercel Deploy URLs - id: links - # Note that this uses `%0A` instead of `\n` because of https://github.com/peter-evans/create-or-update-comment#setting-the-comment-body-from-a-file which I could not get to work here - but this brute force method does. - run: | - body="This PR changes the following pages (Vercel Preview Deploy links):%0A%0A" - no_changed_pages="%0A- This PR does not change any pages the [GH Actions workflow](https://github.com/prisma/docs/blob/main/.github/workflows/list-changed-pages.yml) could detect." - vercelLinks="Changed Vercel links" - body="$body%0A%0A$vercelLinks" - for changed_file in ${{ steps.files.outputs.all }}; do - if [[ $changed_file == content/* ]] - then - no_changed_pages="" - - cleaned_file=$(echo "$changed_file" | sed -E 's:content/:/:g' | sed -E 's:/index.mdx::g' | sed -e 's/.mdx//g' | sed -E 's:/[0-9]+-:/:g' ) - branch_name=$(echo "${{github.event.pull_request.head.ref}}" | sed -e 's/\//-/g') - # TODO special case for images and similar non .mdx files - - # Output inside the action - echo "- https://docs-git-${branch_name}-prisma.vercel.app$cleaned_file" + - uses: actions/checkout@v4 - # Also collect into string - linksVercel="%0A- [/docs$cleaned_file](https://docs-git-${branch_name}-prisma.vercel.app$cleaned_file) ([currently](https://prisma.io/docs$cleaned_file))" - body="$body$linksVercel" - fi - done - - body="$body$no_changed_pages" - body="$body%0A%0A(Note that links will only be valid after Vercel preview deploy succeeded)" - echo "::set-output name=body::$body" - - - name: Find existing comment (links) - uses: peter-evans/find-comment@v1 - id: fc + - name: Get all changed markdown files + id: changed-files + uses: tj-actions/changed-files@v44 with: - issue-number: ${{ github.event.pull_request.number }} - comment-author: 'github-actions[bot]' - body-includes: following pages + files: content/**/*.{md,mdx} - - name: Create comment (links) - if: steps.fc.outputs.comment-id == '' - uses: peter-evans/create-or-update-comment@v1 - with: - issue-number: ${{ github.event.pull_request.number }} - body: ${{ steps.links.outputs.body }} - - - name: Update comment (links) - if: steps.fc.outputs.comment-id != '' - uses: peter-evans/create-or-update-comment@v1 - with: - comment-id: ${{ steps.fc.outputs.comment-id }} - body: ${{ steps.links.outputs.body }} - edit-mode: replace - - ### REDIRECTS ### - - - name: Create suggested redirects - id: redirects + - name: Build comment body + id: build-comment-body + env: + CHANGED_FILES: ${{ steps.changed-files.outputs.any_changed }} + ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }} run: | - bash .github/workflows/scripts/generate-redirects.sh - - - name: Find existing comment (redirects) + OUTPUT="" + if [ ${CHANGED_FILES} == 'true' ]; then + OUTPUT="| original | preview |%0A| ------ | ------ |%0A" + for file in ${ALL_CHANGED_FILES} + do + OUTPUT+="| ${file} | |%0A" + done + else + OUTPUT="No files changed." + fi + echo "::set-output name=body::$OUTPUT" + + - name: Find existing comment uses: peter-evans/find-comment@v1 - id: fc2 + id: find-existing with: issue-number: ${{ github.event.pull_request.number }} comment-author: 'github-actions[bot]' - body-includes: following redirects + body-includes: 'original | preview' - - name: Create comment (redirects) - if: steps.fc2.outputs.comment-id == '' + - name: Create comment + if: steps.find-existing.outputs.comment-id == '' uses: peter-evans/create-or-update-comment@v1 with: issue-number: ${{ github.event.pull_request.number }} - body: ${{ steps.redirects.outputs.body }} + body: ${{ steps.build-comment-body.outputs.body }} - - name: Update comment (redirects) - if: steps.fc2.outputs.comment-id != '' + - name: Update comment + if: steps.find-existing.outputs.comment-id != '' uses: peter-evans/create-or-update-comment@v1 with: - comment-id: ${{ steps.fc2.outputs.comment-id }} - body: ${{ steps.redirects.outputs.body }} + comment-id: ${{ steps.find-existing.outputs.comment-id }} + body: ${{ steps.build-comment-body.outputs.body }} edit-mode: replace diff --git a/.github/workflows/lost-pixel.yml b/.github/workflows/lost-pixel.yml index 325ba8eea0..e70a57fa63 100644 --- a/.github/workflows/lost-pixel.yml +++ b/.github/workflows/lost-pixel.yml @@ -1,38 +1,33 @@ ---- -name: LostPixel - +name: 'Lost Pixel' on: [push] jobs: - gatsby-for-percy: - name: Lost Pixel screenshots via Gatsby build + build: runs-on: ubuntu-latest + name: Lost Pixel + steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v2 + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 with: - cache: 'npm' - node-version: '14' - - run: npm ci - - name: Caching Gatsby - id: gatsby-cache-build - uses: actions/cache@v2 - with: - path: public - .cache - key: ${{ runner.os }}-gatsby-build-${{ github.run_id }} - restore-keys: | - ${{ runner.os }}-gatsby-build- - - name: Build Gatsby app - run: npx gatsby build --prefix-paths - env: - GATSBY_EXPERIMENTAL_PAGE_BUILD_ON_DATA_CHANGES: true - CI: true + node-version: 18 + + - name: Install deps + run: npm install + + - name: Build docs + run: npm run clean && npm run build + + - name: Start docs + run: npm run serve & + + - name: Generate sitemap + run: npx lost-pixel page-sitemap-gen http://172.17.0.1:3000/sitemap.xml "./lost-pixel-pages.json" - - name: Run Gatsby app - run: npx gatsby serve --host 172.17.0.1 & + - name: Edit page names + run: sed -i -e 's/_/\//g' -e 's|prisma\.io||g' -re 's/(name.+)(\/)(\")/\1-\3/g' lost-pixel-pages.json - name: Lost Pixel - uses: lost-pixel/lost-pixel@v3.4.4 + uses: lost-pixel/lost-pixel@v3.16.0 env: LOST_PIXEL_API_KEY: ${{ secrets.LOST_PIXEL_API_KEY }} diff --git a/.github/workflows/notion.yml b/.github/workflows/notion.yml deleted file mode 100644 index 7090581aed..0000000000 --- a/.github/workflows/notion.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: Notion Board -on: - issues: - issue_comment: - workflow_dispatch: - inputs: - setup: - description: 'Populate your notion database with all the required properties' - type: boolean - syncIssues: - description: 'sync all other existing issues in this repo' - type: boolean - issueType: - type: choice - description: 'The issue type you want to sync' - options: - - all - - open - - closed - default: open -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Notion Board - uses: Souvikns/Notion-Board@2.2.0 - with: - setup: ${{github.event.inputs.setup}} - syncIssues: ${{github.event.inputs.syncIssues}} - issueType: ${{github.event.inputs.issueType}} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - NOTION_API_KEY: ${{ secrets.NOTION_API_KEY }} - NOTION_DATABASE: ${{ secrets.NOTION_DATABASE }} diff --git a/.github/workflows/spellcheck.yml b/.github/workflows/spellcheck.yml index 67dfe2cd3a..561628baaa 100644 --- a/.github/workflows/spellcheck.yml +++ b/.github/workflows/spellcheck.yml @@ -16,9 +16,9 @@ jobs: name: 'Docs: Spellcheck' runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 name: Check out the code - - uses: actions/setup-node@v1 + - uses: actions/setup-node@v4 name: Setup node with: node-version: '18' diff --git a/.gitignore b/.gitignore index f5c81e12ac..b2381dedda 100644 --- a/.gitignore +++ b/.gitignore @@ -1,94 +1,26 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# Runtime data -pids -*.pid -*.seed -*.pid.lock - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (http://nodejs.org/api/addons.html) -build/Release - -# Dependency directories -node_modules/ -jspm_packages/ - -# Typescript v1 declaration files -typings/ - -# Optional npm cache directory -.npm +# Dependencies +/node_modules -# Optional eslint cache -.eslintcache +# Production +/build +/public -# Optional REPL history -.node_repl_history +# Generated files +.docusaurus +.cache-loader +.cache -# Output of 'npm pack' -*.tgz - -# dotenv environment variables file -.env - -# gatsby files -.cache/ -public -reduxcache* - -# Mac files +# Misc .DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local -# Yarn -yarn-error.log -.pnp/ -.pnp.js -# Yarn Integrity file -.yarn-integrity -yarn.lock - -.envrc - -# Example page -content/00-example.mdx - -# History -.history/ - -# webStorm settings -.idea - -# vscode settings -.vscode/ -.vercel - -# nova settings -.nova - -# gatsby typegen -src/gatsby-types.d.ts +npm-debug.log* +yarn-debug.log* +yarn-error.log* -# \ No newline at end of file +# wrangler project +.dev.vars +.wrangler/ diff --git a/.husky/pre-commit b/.husky/pre-commit deleted file mode 100755 index a67e262429..0000000000 --- a/.husky/pre-commit +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -# . "$(dirname "$0")/_/husky.sh" - -npx lint-staged diff --git a/.prettierignore b/.prettierignore index 77dd0b9762..b17149b31b 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,6 +1 @@ -node_modules/ -public/ -.cache/ -static/ -out/ -history/ \ No newline at end of file +*.mdx \ No newline at end of file diff --git a/.prettierrc b/.prettierrc index 4e666722c2..e74ed9ff35 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,17 +1,6 @@ { - "printWidth": 100, - "jsxBracketSameLine": false, - "singleQuote": true, - "tabWidth": 2, - "trailingComma": "es5", - "semi": false, - "plugins": ["prettier-plugin-prisma"], - "overrides": [ - { - "files": "*.mdx", - "options": { - "printWidth": 80 - } - } - ] + "trailingComma": "es5", + "tabWidth": 4, + "semi": false, + "singleQuote": true } diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json deleted file mode 100644 index 9ad5ca195e..0000000000 --- a/.vs/VSWorkspaceState.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "ExpandedNodes": [""], - "PreviewInSolutionExplorer": false -} diff --git a/.vs/docs/v15/.suo b/.vs/docs/v15/.suo deleted file mode 100644 index 6e8b5972a3..0000000000 Binary files a/.vs/docs/v15/.suo and /dev/null differ diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite deleted file mode 100644 index c6bca6a3e9..0000000000 Binary files a/.vs/slnx.sqlite and /dev/null differ diff --git a/api/feedback.js b/api/feedback.js deleted file mode 100644 index 27ce0a292b..0000000000 --- a/api/feedback.js +++ /dev/null @@ -1,40 +0,0 @@ -const { PrismaClient } = require('@prisma/client') - -const client = new PrismaClient() - -export default async function handle(req, res) { - const body = JSON.parse(req.body) - if (!body.feedback) { - throw new Error(`Please provide feedback `) - } - if (!body.id) { - throw new Error(`Please provide id to set the feedback for`) - } - - const fetchedFeedback = await client.feedback.findUnique({ - where: { - id: body.id, - }, - select: { - feedback: true, - }, - }) - - if (fetchedFeedback.feedback) { - // Don't allow updating existing feedback - return { - statusCode: 400, - } - } - - const feedback = await client.feedback.update({ - data: { - feedback: body.feedback, - }, - where: { - id: body.id, - }, - }) - - res.json(feedback) -} diff --git a/api/sentiment.js b/api/sentiment.js deleted file mode 100644 index 57c0b38718..0000000000 --- a/api/sentiment.js +++ /dev/null @@ -1,35 +0,0 @@ -const { PrismaClient } = require('@prisma/client') - -const client = new PrismaClient() - -export default async function handle(req, res) { - const { pageUrl, sentiment } = req.body - if (!pageUrl) { - throw new Error(`Please provide a pageUrl`) - } - - if (!sentiment) { - throw new Error(`Please provide a sentiment`) - } - - if (!['Happy', 'Unhappy'].includes(sentiment)) { - throw new Error(`Please provide "Happy" or "Unhappy" as the sentiment`) - } - const pagePath = stripTrailingSlash(pageUrl) - - const sentimentResult = await client.feedback.create({ - data: { - pageUrl: pagePath, - ip: req.headers['x-forwarded-for'], - userAgent: req.headers['user-agent'], - sentiment: sentiment, - }, - }) - res.setHeader('Access-Control-Allow-Origin', '*') - res.setHeader('Access-Control-Allow-Methods', '*') - return res.send(sentimentResult) -} - -function stripTrailingSlash(url) { - return url.replace(/\/$/, '') -} diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000000..e00595dae7 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,3 @@ +module.exports = { + presets: [require.resolve('@docusaurus/core/lib/babel/preset')], +}; diff --git a/config.ts b/config.ts deleted file mode 100644 index c74dd432c7..0000000000 --- a/config.ts +++ /dev/null @@ -1,282 +0,0 @@ -const siteConfig = { - gatsby: { - pathPrefix: '/docs', - siteUrl: 'https://www.prisma.io', - titlePrefix: '', - titleSuffix: ' | Prisma Docs', - }, - redirects: [ - // Added this object for redirect because gatsby filters through the redirects key in gatsby-browser.js. - // This object will create a "dummy" page in percy, creating a 404 page of `/foo/index` - { - from: '/foo', - to: '/bar', - }, - ], - header: { - secondLevelHeaderMenuItems: [ - { - text: 'Get Started', - to: '/getting-started', - type: 'bucket', - bucketName: '/100-getting-started', - hidden: false, - }, - { - text: 'ORM', - to: '/orm', - type: 'bucket', - bucketName: '/200-orm', - hidden: false, - }, - { - text: 'Accelerate', - to: '/accelerate', - type: 'bucket', - bucketName: '/300-accelerate', - hidden: false, - includeSideNav: '/500-platform', - }, - { - text: 'Pulse', - to: '/pulse', - type: 'bucket', - bucketName: '/400-pulse', - hidden: false, - includeSideNav: '/500-platform', - }, - { - text: 'Platform', - to: '/platform', - type: 'bucket', - bucketName: '/500-platform', - hidden: true, - }, - { - text: 'About', - to: '/about', - type: 'bucket', - bucketName: '/600-about', - hidden: true, - }, - ], - search: { - indexName: process.env.GATSBY_ALGOLIA_INDEX_NAME, - algoliaAppId: process.env.GATSBY_ALGOLIA_APP_ID, - algoliaSearchKey: process.env.GATSBY_ALGOLIA_SEARCH_KEY, - algoliaAdminKey: process.env.GATSBY_ALGOLIA_ADMIN_API_KEY, - }, - }, - homepage: { - SummaryLinkData: { - gettingStarted: 'getting-started', - readyToRun: 'https://github.com/prisma/prisma-examples', - slack: 'https://slack.prisma.io/', - discord: 'https://pris.ly/discord', - git: 'https://github.com/prisma', - buttons: [ - { - text: 'Getting started', - url: 'getting-started', - special: true, - icon: 'DoubleArrow', - }, - { - text: 'Example projects', - url: 'https://github.com/prisma/prisma-examples', - special: false, - icon: null, - }, - ], - }, - ORMPlatformLinkData: { - porm: { - title: 'Build with Prisma ORM', - icon: 'database', - description: - 'Open source Node.js and TypeScript ORM with an intuitive data model, automated migrations, type-safety, and auto-completion.', - links: [ - { - url: 'getting-started', - title: 'Getting started', - }, - { - url: 'https://github.com/prisma/prisma-examples', - title: 'Example projects', - external: true, - }, - ], - }, - pdp: { - title: 'Grow as your app evolves', - icon: 'triangle', - description: - 'Expand your application capabilities with global database caching, connection pooling and real-time database events.', - links: [ - { - url: 'accelerate', - title: 'Prisma Accelerate', - }, - { - url: 'pulse', - title: 'Prisma Pulse', - }, - ], - }, - }, - GeneralLinkData: [ - { - title: `What is Prisma ORM`, - description: 'An overview of what Prisma ORM is and how it works.', - url: 'orm/overview/introduction/what-is-prisma', - icon: 'fa-regular fa-question', - }, - { - title: `CRUD`, - description: 'How to perform CRUD operations with your generated Prisma Client API. ', - url: 'orm/prisma-client/queries/crud', - icon: 'fa-solid fa-arrow-right-arrow-left', - }, - { - title: `Prisma ORM in your stack`, - description: - 'Use Prisma ORM to build a GraphQL or REST API, or as part of a fullstack application.', - url: 'orm/overview/prisma-in-your-stack', - icon: 'fa-solid fa-server', - }, - { - title: `Preview features`, - description: 'Available preview features and how to enable them.', - url: 'orm/reference/preview-features', - icon: 'fa-solid fa-eye', - }, - { - title: `Adopting Prisma ORM`, - description: 'Migrate to Prisma ORM from other ORMs.', - url: 'orm/more/migrating-to-prisma', - icon: 'fa-solid fa-download', - }, - { - title: `Deployment guides`, - description: - 'Deploy Node.js applications with Prisma Client to platforms like Vercel, AWS Lambda, Netlify and Heroku.', - url: 'orm/prisma-client/deployment', - icon: 'fa-solid fa-book', - }, - ], - CommunityLinksData: [ - // { - // id: 'slack', - // title: 'Slack', - // description: 'Engage with a vibrant community of developers and companies adopting Prisma', - // icon: 'fa-brands fa-slack', - // link: 'https://slack.prisma.io/', - // linkText: 'Join our channel', - // }, - { - id: 'discord', - title: 'Discord', - description: - 'Chat in real-time, hang out, and share ideas with community members and our team.', - icon: 'fa-brands fa-discord', - link: 'https://pris.ly/discord', - linkText: 'Join our server', - }, - { - id: 'github', - title: 'GitHub', - description: - 'Browse the Prisma ORM source code, send feedback, or join the discussion on GitHub.', - icon: 'fa-brands fa-github', - link: 'https://github.com/prisma', - linkText: 'Contribute in GitHub', - }, - { - id: 'X', - title: 'X', - description: 'Stay up-to-date, join the discussion, and connect with the community on X.', - icon: 'fa-brands fa-x-twitter', - link: 'https://twitter.com/prisma', - linkText: 'Follow us on X', - }, - ], - CardLinks: { - components: [ - { - url: 'orm/prisma-schema', - title: 'Prisma Schema', - }, - { - url: 'orm/tools/prisma-cli', - title: 'Prisma CLI', - }, - { - url: 'orm/prisma-client', - title: 'Prisma Client', - }, - { - url: 'orm/tools/prisma-studio', - title: 'Prisma Studio', - }, - { - url: 'orm/prisma-migrate', - title: 'Prisma Migrate', - }, - ], - reference: [ - { - url: 'orm/reference/prisma-client-reference', - title: 'Prisma Client API reference', - }, - { - url: 'orm/reference/prisma-schema-reference', - title: 'Prisma schema reference', - }, - { - url: 'orm/reference/error-reference', - title: 'Error message reference', - }, - { - url: 'orm/reference/prisma-cli-reference', - title: 'Prisma CLI reference', - }, - ], - }, - }, - siteMetadata: { - title: 'Prisma Documentation | ORM, Accelerate, Pulse & More', - description: - "Get started with Prisma in the official documentation, and learn more about all Prisma's features with reference documentation, guides, and more.", - keywords: 'Docs, Prisma, ORM', - docsLocation: 'https://github.com/prisma/docs/tree/main/content', - twitter: { - site: '@prisma', - creator: '@prisma', - image: '/social/docs-social.png', - }, - og: { - site_name: 'Prisma', - type: 'website', - image: { - alt: 'Database tools for modern developers', - height: '630', - type: 'image/png', - url: '/social/docs-social.png', - width: '1200', - }, - }, - SpecialPaths: ['prisma-cli', 'deployment', 'sql-views'], - }, - feedback: { - sentimentUrl: '/docs/api/sentiment', - feedbackUrl: '/docs/api/feedback', - }, - footer: { - newsletter: { - text: 'Stay up to date with the latest features and changes to Prisma', - GATSBY_BREVO_API_KEY: process.env.GATSBY_BREVO_API_KEY || '', - }, - }, -} - -export default siteConfig diff --git a/content/100-getting-started/01-quickstart.mdx b/content/100-getting-started/01-quickstart.mdx index 15939eaf28..2fa021dc55 100644 --- a/content/100-getting-started/01-quickstart.mdx +++ b/content/100-getting-started/01-quickstart.mdx @@ -1,9 +1,9 @@ --- title: 'Quickstart' -duration: '5 min' metaTitle: 'Quickstart with TypeScript & SQLite' metaDescription: 'Get started with Prisma ORM in 5 minutes. You will learn how to send queries to a SQLite database in a plain TypeScript script using Prisma Client.' search: true +sidebar_custom_props: { badge: '5 min' } --- @@ -69,7 +69,7 @@ This creates a new `prisma` directory with your Prisma schema file and configure The Prisma schema provides an intuitive way to model data. Add the following models to your `schema.prisma` file: -```prisma file=prisma/schema.prisma +```prisma file=prisma/schema.prisma showLineNumbers model User { id Int @id @default(autoincrement()) email String @unique @@ -122,7 +122,7 @@ touch script.ts Then, paste the following boilerplate into it: -```ts file=script.ts +```ts file=script.ts showLineNumbers import { PrismaClient } from '@prisma/client' const prisma = new PrismaClient() @@ -148,12 +148,13 @@ This code contains a `main` function that's invoked at the end of the script. It Let's start with a small query to create a new `User` record in the database and log the resulting object to the console. Add the following code to your `script.ts` file: -```ts file=script.ts highlight=6-12;add +```ts file=script.ts highlight=6-12;add showLineNumbers import { PrismaClient } from '@prisma/client' const prisma = new PrismaClient() async function main() { + // add-start const user = await prisma.user.create({ data: { name: 'Alice', @@ -161,6 +162,7 @@ async function main() { }, }) console.log(user) + // add-end } main() @@ -185,7 +187,6 @@ Next, execute the script with the following command: ```terminal npx ts-node script.ts ``` - @@ -208,14 +209,16 @@ Prisma Client offers various queries to read data from your database. In this se Delete the previous Prisma Client query and add the new `findMany` query instead: -```ts file=script.ts highlight=6-7;add +```ts file=script.ts highlight=6-7;add showLineNumbers import { PrismaClient } from '@prisma/client' const prisma = new PrismaClient() async function main() { + // add-start const users = await prisma.user.findMany() console.log(users) + // add-end } main() @@ -259,12 +262,13 @@ One of the main features of Prisma Client is the ease of working with [relations First, adjust your script to include the nested query: -```ts file=script.ts highlight=6-17;add +```ts file=script.ts highlight=6-17;add showLineNumbers import { PrismaClient } from '@prisma/client' const prisma = new PrismaClient() async function main() { + // add-start const user = await prisma.user.create({ data: { name: 'Bob', @@ -277,6 +281,7 @@ async function main() { }, }) console.log(user) + // add-end } main() @@ -316,18 +321,20 @@ By default, Prisma Client only returns _scalar_ fields in the result objects of In order to also retrieve the `Post` records that belong to a `User`, you can use the `include` option via the `posts` relation field: -```ts file=script.ts highlight=6-11;add +```ts file=script.ts highlight=6-11;add showLineNumbers import { PrismaClient } from '@prisma/client' const prisma = new PrismaClient() async function main() { +// add-start const usersWithPosts = await prisma.user.findMany({ include: { posts: true, }, }) console.dir(usersWithPosts, { depth: null }) + // add-end } main() diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases-node-cockroachdb.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases-node-cockroachdb.mdx new file mode 100644 index 0000000000..f8f9196b0c --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases-node-cockroachdb.mdx @@ -0,0 +1,48 @@ +--- +title: 'Relational databases' +metaTitle: 'Start from scratch with Prisma ORM using JavaScript and CockroachDB (15 min)' +metaDescription: 'Learn how to create a new Node.js project from scratch by connecting Prisma ORM to your CockroachDB database and generating a Prisma Client for database access.' +hide_table_of_contents: true +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +sidebar_custom_props: { badge: '15 min' } +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/connect-your-database-node-cockroachdb +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases- +--- + + + +Learn how to create a new Node.js or TypeScript project from scratch by connecting Prisma ORM to your database and generating a Prisma Client for database access. The following tutorial introduces you to the [Prisma CLI](/orm/tools/prisma-cli), [Prisma Client](/orm/prisma-client), and [Prisma Migrate](/orm/prisma-migrate). + + + +## Prerequisites + +In order to successfully complete this guide, you need: + +- [Node.js](https://nodejs.org/en/) installed on your machine +- a [CockroachDB](https://www.cockroachlabs.com/) database server running + +> See [System requirements](/orm/reference/system-requirements) for exact version requirements. + +Make sure you have your database [connection URL](/orm/reference/connection-urls) at hand. If you don't have a database server running and just want to explore Prisma ORM, check out the [Quickstart](/getting-started/quickstart). + +## Create project setup + +As a first step, create a project directory and navigate into it: + +```terminal copy +mkdir hello-prisma +cd hello-prisma +``` + +Next, initialize a Node.js project and add the Prisma CLI as a development dependency to it: + +```terminal copy +npm init -y +npm install prisma --save-dev +``` + +This creates a `package.json` with an initial setup for a Node.js app. + diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases-node-mysql.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases-node-mysql.mdx new file mode 100644 index 0000000000..a8047c5724 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases-node-mysql.mdx @@ -0,0 +1,71 @@ +--- +title: 'Relational databases' +metaTitle: 'Start from scratch with Prisma ORM using JavaScript and MySQL (15 min)' +metaDescription: 'Learn how to create a new Node.js project from scratch by connecting Prisma ORM to your MySQL database and generating a Prisma Client for database access.' +hide_table_of_contents: true +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +sidebar_custom_props: { badge: '15 min' } +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/connect-your-database-node-mysql +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases- +--- + + + +Learn how to create a new Node.js or TypeScript project from scratch by connecting Prisma ORM to your database and generating a Prisma Client for database access. The following tutorial introduces you to the [Prisma CLI](/orm/tools/prisma-cli), [Prisma Client](/orm/prisma-client), and [Prisma Migrate](/orm/prisma-migrate). + + + +## Prerequisites + +In order to successfully complete this guide, you need: + +- [Node.js](https://nodejs.org/en/) installed on your machine +- a [MySQL](https://www.mysql.com/) database server running + +> See [System requirements](/orm/reference/system-requirements) for exact version requirements. + +Make sure you have your database [connection URL](/orm/reference/connection-urls) at hand. If you don't have a database server running and just want to explore Prisma ORM, check out the [Quickstart](/getting-started/quickstart). + +## Create project setup + +As a first step, create a project directory and navigate into it: + +```terminal copy +mkdir hello-prisma +cd hello-prisma +``` + +Next, initialize a Node.js project and add the Prisma CLI as a development dependency to it: + +```terminal copy +npm init -y +npm install prisma --save-dev +``` + +This creates a `package.json` with an initial setup for a Node.js app. + + + +See [installation instructions](/orm/tools/prisma-cli#installation) to learn how to install Prisma using a different package manager. + + + +You can now invoke the Prisma CLI by prefixing it with `npx`: + +```terminal +npx prisma +``` + +Next, set up your Prisma ORM project by creating your [Prisma schema](/orm/prisma-schema) file with the following command: + +```terminal copy +npx prisma init +``` + +This command does two things: + +- creates a new directory called `prisma` that contains a file called `schema.prisma`, which contains the Prisma schema with your database connection variable and schema models +- creates the [`.env` file](/orm/more/development-environment/environment-variables/env-files) in the root directory of the project, which is used for defining environment variables (such as your database connection) + diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases-node-planetscale.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases-node-planetscale.mdx new file mode 100644 index 0000000000..622da45074 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases-node-planetscale.mdx @@ -0,0 +1,63 @@ +--- +title: 'Relational databases' +metaTitle: 'Start from scratch with Prisma ORM using JavaScript and PlanetScale (15 min)' +metaDescription: 'Learn how to create a new Node.js project from scratch by connecting Prisma ORM to your PlanetScale database and generating a Prisma Client for database access.' +hide_table_of_contents: true +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +sidebar_custom_props: { badge: '15 min' } +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/connect-your-database-node-planetscale +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases- +--- + + + +Learn how to create a new Node.js or TypeScript project from scratch by connecting Prisma ORM to your database and generating a Prisma Client for database access. The following tutorial introduces you to the [Prisma CLI](/orm/tools/prisma-cli), [Prisma Client](/orm/prisma-client), and [Prisma Migrate](/orm/prisma-migrate). + + + +## Prerequisites + +In order to successfully complete this guide, you need: + +- [Node.js](https://nodejs.org/en/) installed on your machine +- a [PlanetScale](https://www.planetscale.com/) database server running + + + +This tutorial will also assume that you can push to the `main` branch of your database. Do not do this if your `main` branch has been promoted to production. + + + +Next, initialize a Node.js project and add the Prisma CLI as a development dependency to it: + +```terminal copy +npm init -y +npm install prisma --save-dev +``` + +This creates a `package.json` with an initial setup for a Node.js app. + + + +See [installation instructions](/orm/tools/prisma-cli#installation) to learn how to install Prisma using a different package manager. + + + +You can now invoke the Prisma CLI by prefixing it with `npx`: + +```terminal +npx prisma +``` + +Next, set up your Prisma ORM project by creating your [Prisma schema](/orm/prisma-schema) file with the following command: + +```terminal copy +npx prisma init +``` + +This command does two things: + +- creates a new directory called `prisma` that contains a file called `schema.prisma`, which contains the Prisma schema with your database connection variable and schema models +- creates the [`.env` file](/orm/more/development-environment/environment-variables/env-files) in the root directory of the project, which is used for defining environment variables (such as your database connection) diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases-node-postgresql.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases-node-postgresql.mdx new file mode 100644 index 0000000000..553f40ea32 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases-node-postgresql.mdx @@ -0,0 +1,70 @@ +--- +title: 'Relational databases' +metaTitle: 'Start from scratch with Prisma ORM using JavaScript and PostgreSQL (15 min)' +metaDescription: 'Learn how to create a new Node.js project from scratch by connecting Prisma ORM to your PostgreSQL database and generating a Prisma Client for database access.' +hide_table_of_contents: true +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +sidebar_custom_props: { badge: '15 min' } +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/connect-your-database-node-postgresql +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases- +--- + + + +Learn how to create a new Node.js or TypeScript project from scratch by connecting Prisma ORM to your database and generating a Prisma Client for database access. The following tutorial introduces you to the [Prisma CLI](/orm/tools/prisma-cli), [Prisma Client](/orm/prisma-client), and [Prisma Migrate](/orm/prisma-migrate). + + + +## Prerequisites + +In order to successfully complete this guide, you need: + +- [Node.js](https://nodejs.org/en/) installed on your machine +- a [PostgreSQL](https://www.postgresql.org/) database server running + +> See [System requirements](/orm/reference/system-requirements) for exact version requirements. + +Make sure you have your database [connection URL](/orm/reference/connection-urls) at hand. If you don't have a database server running and just want to explore Prisma ORM, check out the [Quickstart](/getting-started/quickstart). + +## Create project setup + +As a first step, create a project directory and navigate into it: + +```terminal copy +mkdir hello-prisma +cd hello-prisma +``` + +Next, initialize a Node.js project and add the Prisma CLI as a development dependency to it: + +```terminal copy +npm init -y +npm install prisma --save-dev +``` + +This creates a `package.json` with an initial setup for a Node.js app. + + + +See [installation instructions](/orm/tools/prisma-cli#installation) to learn how to install Prisma using a different package manager. + + + +You can now invoke the Prisma CLI by prefixing it with `npx`: + +```terminal +npx prisma +``` + +Next, set up your Prisma ORM project by creating your [Prisma schema](/orm/prisma-schema) file with the following command: + +```terminal copy +npx prisma init +``` + +This command does two things: + +- creates a new directory called `prisma` that contains a file called `schema.prisma`, which contains the Prisma schema with your database connection variable and schema models +- creates the [`.env` file](/orm/more/development-environment/environment-variables/env-files) in the root directory of the project, which is used for defining environment variables (such as your database connection) diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases-node-sqlserver.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases-node-sqlserver.mdx new file mode 100644 index 0000000000..6beb9a4e51 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases-node-sqlserver.mdx @@ -0,0 +1,73 @@ +--- +title: 'Relational databases' +metaTitle: 'Start from scratch with Prisma ORM using JavaScript and SQL Server (15 min)' +metaDescription: 'Learn how to create a new Node.js project from scratch by connecting Prisma ORM to your SQL Server database and generating a Prisma Client for database access.' +hide_table_of_contents: true +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +sidebar_custom_props: { badge: '15 min' } +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/connect-your-database-node-sqlserver +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases- +--- + + + +Learn how to create a new Node.js or TypeScript project from scratch by connecting Prisma ORM to your database and generating a Prisma Client for database access. The following tutorial introduces you to the [Prisma CLI](/orm/tools/prisma-cli), [Prisma Client](/orm/prisma-client), and [Prisma Migrate](/orm/prisma-migrate). + + + +## Prerequisites + +In order to successfully complete this guide, you need: + +- [Node.js](https://nodejs.org/en/) installed on your machine +- A [Microsoft SQL Server](https://docs.microsoft.com/en-us/sql/?view=sql-server-ver15) database + - [Microsoft SQL Server on Linux for Docker](/orm/overview/databases/sql-server/sql-server-docker) + - [Microsoft SQL Server on Windows (local)](/orm/overview/databases/sql-server/sql-server-local) + + +> See [System requirements](/orm/reference/system-requirements) for exact version requirements. + +Make sure you have your database [connection URL](/orm/reference/connection-urls) at hand. If you don't have a database server running and just want to explore Prisma ORM, check out the [Quickstart](/getting-started/quickstart). + +## Create project setup + +As a first step, create a project directory and navigate into it: + +```terminal copy +mkdir hello-prisma +cd hello-prisma +``` + +Next, initialize a Node.js project and add the Prisma CLI as a development dependency to it: + +```terminal copy +npm init -y +npm install prisma --save-dev +``` + +This creates a `package.json` with an initial setup for a Node.js app. + + + +See [installation instructions](/orm/tools/prisma-cli#installation) to learn how to install Prisma using a different package manager. + + + +You can now invoke the Prisma CLI by prefixing it with `npx`: + +```terminal +npx prisma +``` + +Next, set up your Prisma ORM project by creating your [Prisma schema](/orm/prisma-schema) file with the following command: + +```terminal copy +npx prisma init +``` + +This command does two things: + +- creates a new directory called `prisma` that contains a file called `schema.prisma`, which contains the Prisma schema with your database connection variable and schema models +- creates the [`.env` file](/orm/more/development-environment/environment-variables/env-files) in the root directory of the project, which is used for defining environment variables (such as your database connection) diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases-typescript-cockroachdb.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases-typescript-cockroachdb.mdx new file mode 100644 index 0000000000..abd608321d --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases-typescript-cockroachdb.mdx @@ -0,0 +1,76 @@ +--- +title: 'Relational databases' +metaTitle: 'Start from scratch with Prisma ORM using TypeScript and CockroachDB (15 min)' +metaDescription: 'Learn how to create a new TypeScript project from scratch by connecting Prisma ORM to your CockroachDB database and generating a Prisma Client for database access.' +hide_table_of_contents: true +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +sidebar_custom_props: { badge: '15 min' } +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/connect-your-database-typescript-cockroachdb +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases- +--- + + + +Learn how to create a new Node.js or TypeScript project from scratch by connecting Prisma ORM to your database and generating a Prisma Client for database access. The following tutorial introduces you to the [Prisma CLI](/orm/tools/prisma-cli), [Prisma Client](/orm/prisma-client), and [Prisma Migrate](/orm/prisma-migrate). + + + +## Prerequisites + +In order to successfully complete this guide, you need: + +- [Node.js](https://nodejs.org/en/) installed on your machine +- a [CockroachDB](https://www.cockroachlabs.com/) database server running + +> See [System requirements](/orm/reference/system-requirements) for exact version requirements. + +Make sure you have your database [connection URL](/orm/reference/connection-urls) at hand. If you don't have a database server running and just want to explore Prisma ORM, check out the [Quickstart](/getting-started/quickstart). + +## Create project setup + +As a first step, create a project directory and navigate into it: + +```terminal copy +mkdir hello-prisma +cd hello-prisma +``` + +Next, initialize a TypeScript project and add the Prisma CLI as a development dependency to it: + +```terminal copy +npm init -y +npm install prisma typescript ts-node @types/node --save-dev +``` + +This creates a `package.json` with an initial setup for your TypeScript app. + +Next, initialize TypeScript: + +```terminal copy +npx tsc --init +``` + + + +See [installation instructions](/orm/tools/prisma-cli#installation) to learn how to install Prisma using a different package manager. + + + +You can now invoke the Prisma CLI by prefixing it with `npx`: + +```terminal +npx prisma +``` + +Next, set up your Prisma ORM project by creating your [Prisma schema](/orm/prisma-schema) file with the following command: + +```terminal copy +npx prisma init +``` + +This command does two things: + +- creates a new directory called `prisma` that contains a file called `schema.prisma`, which contains the Prisma schema with your database connection variable and schema models +- creates the [`.env` file](/orm/more/development-environment/environment-variables/env-files) in the root directory of the project, which is used for defining environment variables (such as your database connection) diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases-typescript-mysql.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases-typescript-mysql.mdx new file mode 100644 index 0000000000..025e6df3a3 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases-typescript-mysql.mdx @@ -0,0 +1,76 @@ +--- +title: 'Relational databases' +metaTitle: 'Start from scratch with Prisma ORM using TypeScript and MySQL (15 min)' +metaDescription: 'Learn how to create a new TypeScript project from scratch by connecting Prisma ORM to your MySQL database and generating a Prisma Client for database access.' +hide_table_of_contents: true +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +sidebar_custom_props: { badge: '15 min' } +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/connect-your-database-typescript-mysql +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases- +--- + + + +Learn how to create a new Node.js or TypeScript project from scratch by connecting Prisma ORM to your database and generating a Prisma Client for database access. The following tutorial introduces you to the [Prisma CLI](/orm/tools/prisma-cli), [Prisma Client](/orm/prisma-client), and [Prisma Migrate](/orm/prisma-migrate). + + + +## Prerequisites + +In order to successfully complete this guide, you need: + +- [Node.js](https://nodejs.org/en/) installed on your machine +- a [MySQL](https://www.mysql.com/) database server running + +> See [System requirements](/orm/reference/system-requirements) for exact version requirements. + +Make sure you have your database [connection URL](/orm/reference/connection-urls) at hand. If you don't have a database server running and just want to explore Prisma ORM, check out the [Quickstart](/getting-started/quickstart). + +## Create project setup + +As a first step, create a project directory and navigate into it: + +```terminal copy +mkdir hello-prisma +cd hello-prisma +``` + +Next, initialize a TypeScript project and add the Prisma CLI as a development dependency to it: + +```terminal copy +npm init -y +npm install prisma typescript ts-node @types/node --save-dev +``` + +This creates a `package.json` with an initial setup for your TypeScript app. + +Next, initialize TypeScript: + +```terminal copy +npx tsc --init +``` + + + +See [installation instructions](/orm/tools/prisma-cli#installation) to learn how to install Prisma using a different package manager. + + + +You can now invoke the Prisma CLI by prefixing it with `npx`: + +```terminal +npx prisma +``` + +Next, set up your Prisma ORM project by creating your [Prisma schema](/orm/prisma-schema) file with the following command: + +```terminal copy +npx prisma init +``` + +This command does two things: + +- creates a new directory called `prisma` that contains a file called `schema.prisma`, which contains the Prisma schema with your database connection variable and schema models +- creates the [`.env` file](/orm/more/development-environment/environment-variables/env-files) in the root directory of the project, which is used for defining environment variables (such as your database connection) diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases-typescript-planetscale.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases-typescript-planetscale.mdx new file mode 100644 index 0000000000..a5d2dddfb5 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases-typescript-planetscale.mdx @@ -0,0 +1,82 @@ +--- +title: 'Relational databases' +metaTitle: 'Start from scratch with Prisma ORM using TypeScript and PlanetScale (15 min)' +metaDescription: 'Learn how to create a new TypeScript project from scratch by connecting Prisma ORM to your PlanetScale database and generating a Prisma Client for database access.' +hide_table_of_contents: true +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +sidebar_custom_props: { badge: '15 min' } +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/connect-your-database-typescript-planetscale +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases- +--- + + + +Learn how to create a new Node.js or TypeScript project from scratch by connecting Prisma ORM to your database and generating a Prisma Client for database access. The following tutorial introduces you to the [Prisma CLI](/orm/tools/prisma-cli), [Prisma Client](/orm/prisma-client), and [Prisma Migrate](/orm/prisma-migrate). + + + +## Prerequisites + +In order to successfully complete this guide, you need: + +- [Node.js](https://nodejs.org/en/) installed on your machine +- a [PlanetScale](https://www.planetscale.com/) database server running + + + +This tutorial will also assume that you can push to the `main` branch of your database. Do not do this if your `main` branch has been promoted to production. + + + +> See [System requirements](/orm/reference/system-requirements) for exact version requirements. + +Make sure you have your database [connection URL](/orm/reference/connection-urls) at hand. If you don't have a database server running and just want to explore Prisma ORM, check out the [Quickstart](/getting-started/quickstart). + +## Create project setup + +As a first step, create a project directory and navigate into it: + +```terminal copy +mkdir hello-prisma +cd hello-prisma +``` + +Next, initialize a TypeScript project and add the Prisma CLI as a development dependency to it: + +```terminal copy +npm init -y +npm install prisma typescript ts-node @types/node --save-dev +``` + +This creates a `package.json` with an initial setup for your TypeScript app. + +Next, initialize TypeScript: + +```terminal copy +npx tsc --init +``` + + + +See [installation instructions](/orm/tools/prisma-cli#installation) to learn how to install Prisma using a different package manager. + + + +You can now invoke the Prisma CLI by prefixing it with `npx`: + +```terminal +npx prisma +``` + +Next, set up your Prisma ORM project by creating your [Prisma schema](/orm/prisma-schema) file with the following command: + +```terminal copy +npx prisma init +``` + +This command does two things: + +- creates a new directory called `prisma` that contains a file called `schema.prisma`, which contains the Prisma schema with your database connection variable and schema models +- creates the [`.env` file](/orm/more/development-environment/environment-variables/env-files) in the root directory of the project, which is used for defining environment variables (such as your database connection) diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases-typescript-postgresql.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases-typescript-postgresql.mdx new file mode 100644 index 0000000000..a0c411d96c --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases-typescript-postgresql.mdx @@ -0,0 +1,75 @@ +--- +title: 'Relational databases' +metaTitle: 'Start from scratch with Prisma ORM using TypeScript and PostgreSQL (15 min)' +metaDescription: 'Learn how to create a new TypeScript project from scratch by connecting Prisma ORM to your PostgreSQL database and generating a Prisma Client for database access.' +hide_table_of_contents: true +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +sidebar_custom_props: { badge: '15 min' } +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/connect-your-database-typescript-postgresql +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases- +--- + + + +Learn how to create a new Node.js or TypeScript project from scratch by connecting Prisma ORM to your database and generating a Prisma Client for database access. The following tutorial introduces you to the [Prisma CLI](/orm/tools/prisma-cli), [Prisma Client](/orm/prisma-client), and [Prisma Migrate](/orm/prisma-migrate). + + + +## Prerequisites + +In order to successfully complete this guide, you need: + +- [Node.js](https://nodejs.org/en/) installed on your machine +- a [PostgreSQL](https://www.postgresql.org/) database server running + +> See [System requirements](/orm/reference/system-requirements) for exact version requirements. + +Make sure you have your database [connection URL](/orm/reference/connection-urls) at hand. If you don't have a database server running and just want to explore Prisma ORM, check out the [Quickstart](/getting-started/quickstart). + +## Create project setup + +As a first step, create a project directory and navigate into it: + +```terminal copy +mkdir hello-prisma +cd hello-prisma +``` + +Next, initialize a TypeScript project and add the Prisma CLI as a development dependency to it: + +```terminal copy +npm init -y +npm install prisma typescript ts-node @types/node --save-dev +``` + +This creates a `package.json` with an initial setup for your TypeScript app. + +Next, initialize TypeScript: + +```terminal copy +npx tsc --init +``` + + + +See [installation instructions](/orm/tools/prisma-cli#installation) to learn how to install Prisma using a different package manager. + + + +You can now invoke the Prisma CLI by prefixing it with `npx`: + +```terminal +npx prisma +``` + +Next, set up your Prisma ORM project by creating your [Prisma schema](/orm/prisma-schema) file with the following command: + +```terminal copy +npx prisma init +``` + +This command does two things: + +- creates a new directory called `prisma` that contains a file called `schema.prisma`, which contains the Prisma schema with your database connection variable and schema models +- creates the [`.env` file](/orm/more/development-environment/environment-variables/env-files) in the root directory of the project, which is used for defining environment variables (such as your database connection) diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases-typescript-sqlserver.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases-typescript-sqlserver.mdx new file mode 100644 index 0000000000..11f885f70c --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases-typescript-sqlserver.mdx @@ -0,0 +1,78 @@ +--- +title: 'Relational databases' +metaTitle: 'Start from scratch with Prisma ORM using TypeScript and SQL Server (15 min)' +metaDescription: 'Learn how to create a new TypeScript project from scratch by connecting Prisma ORM to your SQL Server database and generating a Prisma Client for database access.' +hide_table_of_contents: true +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +sidebar_custom_props: { badge: '15 min' } +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/connect-your-database-typescript-sqlserver +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases- +--- + + + +Learn how to create a new Node.js or TypeScript project from scratch by connecting Prisma ORM to your database and generating a Prisma Client for database access. The following tutorial introduces you to the [Prisma CLI](/orm/tools/prisma-cli), [Prisma Client](/orm/prisma-client), and [Prisma Migrate](/orm/prisma-migrate). + + + +## Prerequisites + +In order to successfully complete this guide, you need: + +- [Node.js](https://nodejs.org/en/) installed on your machine +- A [Microsoft SQL Server](https://docs.microsoft.com/en-us/sql/?view=sql-server-ver15) database + - [Microsoft SQL Server on Linux for Docker](/orm/overview/databases/sql-server/sql-server-docker) + - [Microsoft SQL Server on Windows (local)](/orm/overview/databases/sql-server/sql-server-local) + +> See [System requirements](/orm/reference/system-requirements) for exact version requirements. + +Make sure you have your database [connection URL](/orm/reference/connection-urls) at hand. If you don't have a database server running and just want to explore Prisma ORM, check out the [Quickstart](/getting-started/quickstart). + +## Create project setup + +As a first step, create a project directory and navigate into it: + +```terminal copy +mkdir hello-prisma +cd hello-prisma +``` + +Next, initialize a TypeScript project and add the Prisma CLI as a development dependency to it: + +```terminal copy +npm init -y +npm install prisma typescript ts-node @types/node --save-dev +``` + +This creates a `package.json` with an initial setup for your TypeScript app. + +Next, initialize TypeScript: + +```terminal copy +npx tsc --init +``` + + + +See [installation instructions](/orm/tools/prisma-cli#installation) to learn how to install Prisma using a different package manager. + + + +You can now invoke the Prisma CLI by prefixing it with `npx`: + +```terminal +npx prisma +``` + +Next, set up your Prisma ORM project by creating your [Prisma schema](/orm/prisma-schema) file with the following command: + +```terminal copy +npx prisma init +``` + +This command does two things: + +- creates a new directory called `prisma` that contains a file called `schema.prisma`, which contains the Prisma schema with your database connection variable and schema models +- creates the [`.env` file](/orm/more/development-environment/environment-variables/env-files) in the root directory of the project, which is used for defining environment variables (such as your database connection) diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/100-connect-your-database-node-cockroachdb.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/100-connect-your-database-node-cockroachdb.mdx new file mode 100644 index 0000000000..8bf46dd079 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/100-connect-your-database-node-cockroachdb.mdx @@ -0,0 +1,62 @@ +--- +title: 'Connect your database' +metaTitle: 'Connect your database using JavaScript and CockroachDB' +metaDescription: 'Connect your database to your project using JavaScript and CockroachDB' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/using-prisma-migrate-node-cockroachdb +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases/connect-your-database- +--- + +To connect your database, you need to set the `url` field of the `datasource` block in your Prisma schema to your database [connection URL](/orm/reference/connection-urls): + +```prisma file=prisma/schema.prisma showLineNumbers +datasource db { + provider = "postgresql" + url = env("DATABASE_URL") +} +``` + +Note that the default schema created by `prisma init` uses PostgreSQL as the `provider`. For CockroachDB, you need to edit the `datasource` block to use the `cockroachdb` provider instead: + +```prisma file=prisma/schema.prisma highlight=2;edit showLineNumbers +datasource db { + //edit-next-line + provider = "cockroachdb" + url = env("DATABASE_URL") +} +``` + +The `url` is [set via an environment variable](/orm/more/development-environment/environment-variables) which is defined in `.env`. You now need to adjust the connection URL to point to your own database. + +The [format of the connection URL](/orm/reference/connection-urls) for your database depends on the database you use. CockroachDB uses the PostgreSQL connection URL format, which has the following structure (the parts spelled all-uppercased are _placeholders_ for your specific connection details): + +```no-lines +postgresql://USER:PASSWORD@HOST:PORT/DATABASE?PARAMETERS +``` + +Here's a short explanation of each component: + +- `USER`: The name of your database user +- `PASSWORD`: The password for your database user +- `PORT`: The port where your database server is running. The default for CockroachDB is `26257`. +- `DATABASE`: The name of the database +- `PARAMETERS`: Any additional connection parameters. See the CockroachDB documentation [here](https://www.cockroachlabs.com/docs/stable/connection-parameters.html#additional-connection-parameters). + +For a [CockroachDB Serverless](https://www.cockroachlabs.com/docs/cockroachcloud/quickstart.html) or [Cockroach Dedicated](https://www.cockroachlabs.com/docs/cockroachcloud/quickstart-trial-cluster) database hosted on [CockroachDB Cloud](https://www.cockroachlabs.com/get-started-cockroachdb/), the [connection URL](/orm/reference/connection-urls) looks similar to this: + +```bash file=.env +DATABASE_URL="postgresql://:@..cockroachlabs.cloud:26257/defaultdb?sslmode=verify-full&sslrootcert=$HOME/.postgresql/root.crt&options=--" +``` + +To find your connection string on CockroachDB Cloud, click the 'Connect' button on the overview page for your database cluster, and select the 'Connection string' tab. + +For a [CockroachDB database hosted locally](https://www.cockroachlabs.com/docs/stable/secure-a-cluster.html), the [connection URL](/orm/reference/connection-urls) looks similar to this: + +```bash file=.env +DATABASE_URL="postgresql://root@localhost:26257?sslmode=disable" +``` + +Your connection string is displayed as part of the welcome text when starting CockroachDB from the command line. diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/100-connect-your-database-node-mysql.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/100-connect-your-database-node-mysql.mdx new file mode 100644 index 0000000000..b2a4fa480c --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/100-connect-your-database-node-mysql.mdx @@ -0,0 +1,69 @@ +--- +title: 'Connect your database' +metaTitle: 'Connect your database using JavaScript and MySQL' +metaDescription: 'Connect your database to your project using JavaScript and MySQL' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +sidebar_class_name: hidden-sidebar +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/using-prisma-migrate-node-mysql +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases/connect-your-database- +--- + +To connect your database, you need to set the `url` field of the `datasource` block in your Prisma schema to your database [connection URL](/orm/reference/connection-urls): + +```prisma file=prisma/schema.prisma showLineNumbers +datasource db { + provider = "postgresql" + url = env("DATABASE_URL") +} +``` + +Note that the default schema created by `prisma init` uses PostgreSQL, so you first need to switch the `provider` to `mysql`: + +```prisma file=prisma/schema.prisma highlight=2;edit showLineNumbers +datasource db { + //edit-next-line + provider = "mysql" + url = env("DATABASE_URL") +} +``` + +In this case, the `url` is [set via an environment variable](/orm/prisma-schema/overview#accessing-environment-variables-from-the-schema) which is defined in `.env`: + +```bash file=.env +DATABASE_URL="mysql://johndoe:randompassword@localhost:3306/mydb" +``` + + + +We recommend adding `.env` to your `.gitignore` file to prevent committing your environment variables. + + + +You now need to adjust the connection URL to point to your own database. + +The [format of the connection URL](/orm/reference/connection-urls) for your database typically depends on the database you use. For MySQL, it looks as follows (the parts spelled all-uppercased are _placeholders_ for your specific connection details): + +```no-lines +mysql://USER:PASSWORD@HOST:PORT/DATABASE +``` + +Here's a short explanation of each component: + +- `USER`: The name of your database user +- `PASSWORD`: The password for your database user +- `PORT`: The port where your database server is running (typically `3306` for MySQL) +- `DATABASE`: The name of the [database](https://dev.mysql.com/doc/refman/8.0/en/creating-database.html) + +As an example, for a MySQL database hosted on AWS RDS, the [connection URL](/orm/reference/connection-urls) might look similar to this: + +```bash file=.env +DATABASE_URL="mysql://johndoe:XXX@mysql–instance1.123456789012.us-east-1.rds.amazonaws.com:3306/mydb" +``` + +When running MySQL locally, your connection URL typically looks similar to this: + +```bash file=.env +DATABASE_URL="mysql://root:randompassword@localhost:3306/mydb" +``` diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/100-connect-your-database-node-planetscale.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/100-connect-your-database-node-planetscale.mdx new file mode 100644 index 0000000000..840083b86f --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/100-connect-your-database-node-planetscale.mdx @@ -0,0 +1,97 @@ +--- +title: 'Connect your database' +metaTitle: 'Connect your database using JavaScript and PlanetScale' +metaDescription: 'Connect your database to your project using JavaScript and PlanetScale' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +sidebar_class_name: hidden-sidebar +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/using-prisma-migrate-node-planetscale +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases/connect-your-database- +--- + +To connect your database, you need to set the `url` field of the `datasource` block in your Prisma schema to your database [connection URL](/orm/reference/connection-urls): + +```prisma file=prisma/schema.prisma showLineNumbers +datasource db { + provider = "postgresql" + url = env("DATABASE_URL") +} +``` + +Note that the default schema created by `prisma init` uses PostgreSQL as the `provider`. For PlanetScale, you need to edit the `datasource` block to use the `mysql` provider instead: + +```prisma file=prisma/schema.prisma highlight=2;edit showLineNumbers +datasource db { + //edit-next-line + provider = "mysql" + url = env("DATABASE_URL") +} +``` + +You will also need to set the relation mode type to `prisma` in order to [emulate foreign key constraints](/orm/overview/databases/planetscale#option-1-emulate-relations-in-prisma-client) in the `datasource` block: + +```prisma file=schema.prisma highlight=4;add showLineNumbers +datasource db { + provider = "mysql" + url = env("DATABASE_URL") + //add-next-line + relationMode = "prisma" +} +``` + +> **Note**: Since February 2024, you can alternatively [use foreign key constraints on a database-level in PlanetScale](/orm/overview/databases/planetscale#option-2-enable-foreign-key-constraints-in-the-planetscale-database-settings), which omits the need for setting `relationMode = "prisma"`. + +The `url` is [set via an environment variable](/orm/prisma-schema/overview#accessing-environment-variables-from-the-schema) which is defined in `.env`: + +```bash file=.env +DATABASE_URL="mysql://janedoe:mypassword@server.us-east-2.psdb.cloud/mydb?sslaccept=strict" +``` + +You now need to adjust the connection URL to point to your own database. + +The [format of the connection URL](/orm/reference/connection-urls) for your database typically depends on the database you use. PlanetScale uses the MySQL connection URL format, which has the following structure (the parts spelled all-uppercased are _placeholders_ for your specific connection details): + +```no-lines +mysql://USER:PASSWORD@HOST:PORT/DATABASE +``` + +Here's a short explanation of each component: + +- `USER`: The name of your database user +- `PASSWORD`: The password for your database user +- `PORT`: The port where your database server is running (typically `3306` for MySQL) +- `DATABASE`: The name of the [database](https://dev.mysql.com/doc/refman/8.0/en/creating-database.html) + +For a database hosted with PlanetScale, the [connection URL](/orm/reference/connection-urls) looks similar to this: + +```bash file=.env +DATABASE_URL="mysql://myusername:mypassword@server.us-east-2.psdb.cloud/mydb?sslaccept=strict" +``` + +The connection URL for a given database branch can be found from your PlanetScale account by going to the overview page for the branch and selecting the 'Connect' dropdown. In the 'Passwords' section, generate a new password and select 'Prisma' to get the Prisma format for the connection URL. + +
+Alternative method: connecting using the PlanetScale CLI + +Alternatively, you can connect to your PlanetScale database server using the [PlanetScale CLI](https://docs.planetscale.com/reference/planetscale-environment-setup), and use a local connection URL. In this case the connection URL will look like this: + +```bash file=.env +DATABASE_URL="mysql://root@localhost:PORT/mydb" +``` + + + +We recommend adding `.env` to your `.gitignore` file to prevent committing your environment variables. + + + +To connect to your branch, use the following command: + +```terminal +pscale connect prisma-test branchname --port PORT +``` + +The `--port` flag can be omitted if you are using the default port `3306`. + +
diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/100-connect-your-database-node-postgresql.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/100-connect-your-database-node-postgresql.mdx new file mode 100644 index 0000000000..f2278f7f00 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/100-connect-your-database-node-postgresql.mdx @@ -0,0 +1,63 @@ +--- +title: 'Connect your database' +metaTitle: 'Connect your database using JavaScript and PostgreSQL' +metaDescription: 'Connect your database to your project using JavaScript and PostgreSQL' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +sidebar_class_name: hidden-sidebar +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/using-prisma-migrate-node-postgresql +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases/connect-your-database- +--- + +To connect your database, you need to set the `url` field of the `datasource` block in your Prisma schema to your database [connection URL](/orm/reference/connection-urls): + +```prisma file=prisma/schema.prisma showLineNumbers +datasource db { + provider = "postgresql" + url = env("DATABASE_URL") +} +``` + +In this case, the `url` is [set via an environment variable](/orm/more/development-environment/environment-variables) which is defined in `.env`: + +```bash file=.env +DATABASE_URL="postgresql://johndoe:randompassword@localhost:5432/mydb?schema=public" +``` + + + +We recommend adding `.env` to your `.gitignore` file to prevent committing your environment variables. + + + +You now need to adjust the connection URL to point to your own database. + +The [format of the connection URL](/orm/reference/connection-urls) for your database depends on the database you use. For PostgreSQL, it looks as follows (the parts spelled all-uppercased are _placeholders_ for your specific connection details): + +```no-lines +postgresql://USER:PASSWORD@HOST:PORT/DATABASE?schema=SCHEMA +``` + +Here's a short explanation of each component: + +- `USER`: The name of your database user +- `PASSWORD`: The password for your database user +- `HOST`: The name of your host name (for the local environment, it is `localhost`) +- `PORT`: The port where your database server is running (typically `5432` for PostgreSQL) +- `DATABASE`: The name of the [database](https://www.postgresql.org/docs/12/manage-ag-overview.html) +- `SCHEMA`: The name of the [schema](https://www.postgresql.org/docs/12/ddl-schemas.html) inside the database + +If you're unsure what to provide for the `schema` parameter for a PostgreSQL connection URL, you can probably omit it. In that case, the default schema name `public` will be used. + +As an example, for a PostgreSQL database hosted on Heroku, the [connection URL](/orm/reference/connection-urls) might look similar to this: + +```bash file=.env +DATABASE_URL="postgresql://opnmyfngbknppm:XXX@ec2-46-137-91-216.eu-west-1.compute.amazonaws.com:5432/d50rgmkqi2ipus?schema=hello-prisma" +``` + +When running PostgreSQL locally on macOS, your user and password as well as the database name _typically_ correspond to the current _user_ of your OS, e.g. assuming the user is called `janedoe`: + +```bash file=.env +DATABASE_URL="postgresql://janedoe:janedoe@localhost:5432/janedoe?schema=hello-prisma" +``` diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/100-connect-your-database-node-sqlserver.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/100-connect-your-database-node-sqlserver.mdx new file mode 100644 index 0000000000..abbf7541ab --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/100-connect-your-database-node-sqlserver.mdx @@ -0,0 +1,38 @@ +--- +title: 'Connect your database' +metaTitle: 'Connect your database using JavaScript and SQL Server' +metaDescription: 'Connect your database to your project using JavaScript and SQL Server' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +sidebar_class_name: hidden-sidebar +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/using-prisma-migrate-node-sqlserver +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases/connect-your-database- +--- + +To connect your database, you need to set the `url` field of the `datasource` block in your Prisma schema to your database [connection URL](/orm/reference/connection-urls): +```prisma file=prisma/schema.prisma showLineNumbers +datasource db { + provider = "sqlserver" + url = env("DATABASE_URL") +} +``` + +In this case, the `url` is [set via an environment variable](/orm/prisma-schema/overview#accessing-environment-variables-from-the-schema) which is defined in `.env`: + +The following example connection URL [uses SQL authentication](/orm/overview/databases/sql-server), but there are [other ways to format your connection URL](/orm/overview/databases/sql-server) + +```bash file=.env + DATABASE_URL="sqlserver://localhost:1433;database=mydb;user=sa;password=r@ndomP@$$w0rd;trustServerCertificate=true" +``` + + + +We recommend adding `.env` to your `.gitignore` file to prevent committing your environment variables. + + + +Adjust the connection URL to match your setup - see [Microsoft SQL Server connection URL](/orm/overview/databases/sql-server) for more information. + +> Make sure TCP/IP connections are enabled via [SQL Server Configuration Manager](https://docs.microsoft.com/en-us/sql/relational-databases/sql-server-configuration-manager) to avoid `No connection could be made because the target machine actively refused it. (os error 10061)` + diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/100-connect-your-database-typescript-cockroachdb.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/100-connect-your-database-typescript-cockroachdb.mdx new file mode 100644 index 0000000000..f94bbe6d03 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/100-connect-your-database-typescript-cockroachdb.mdx @@ -0,0 +1,62 @@ +--- +title: 'Connect your database' +metaTitle: 'Connect your database using TypeScript and CockroachDB' +metaDescription: 'Connect your database to your project using TypeScript and CockroachDB' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +sidebar_class_name: 'hidden-sidebar tech-switch' +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/using-prisma-migrate-typescript-cockroachdb +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases/connect-your-database- +--- + +To connect your database, you need to set the `url` field of the `datasource` block in your Prisma schema to your database [connection URL](/orm/reference/connection-urls): + +```prisma file=prisma/schema.prisma showLineNumbers +datasource db { + provider = "postgresql" + url = env("DATABASE_URL") +} +``` + +Note that the default schema created by `prisma init` uses PostgreSQL as the `provider`. For CockroachDB, you need to edit the `datasource` block to use the `cockroachdb` provider instead: + +```prisma file=prisma/schema.prisma highlight=2;edit showLineNumbers +datasource db { + //edit-next-line + provider = "cockroachdb" + url = env("DATABASE_URL") +} +``` + +The `url` is [set via an environment variable](/orm/more/development-environment/environment-variables) which is defined in `.env`. You now need to adjust the connection URL to point to your own database. + +The [format of the connection URL](/orm/reference/connection-urls) for your database depends on the database you use. CockroachDB uses the PostgreSQL connection URL format, which has the following structure (the parts spelled all-uppercased are _placeholders_ for your specific connection details): + +```no-lines +postgresql://USER:PASSWORD@HOST:PORT/DATABASE?PARAMETERS +``` + +Here's a short explanation of each component: + +- `USER`: The name of your database user +- `PASSWORD`: The password for your database user +- `PORT`: The port where your database server is running. The default for CockroachDB is `26257`. +- `DATABASE`: The name of the database +- `PARAMETERS`: Any additional connection parameters. See the CockroachDB documentation [here](https://www.cockroachlabs.com/docs/stable/connection-parameters.html#additional-connection-parameters). + +For a [CockroachDB Serverless](https://www.cockroachlabs.com/docs/cockroachcloud/quickstart.html) or [Cockroach Dedicated](https://www.cockroachlabs.com/docs/cockroachcloud/quickstart-trial-cluster) database hosted on [CockroachDB Cloud](https://www.cockroachlabs.com/get-started-cockroachdb/), the [connection URL](/orm/reference/connection-urls) looks similar to this: + +```bash file=.env +DATABASE_URL="postgresql://:@..cockroachlabs.cloud:26257/defaultdb?sslmode=verify-full&sslrootcert=$HOME/.postgresql/root.crt&options=--" +``` + +To find your connection string on CockroachDB Cloud, click the 'Connect' button on the overview page for your database cluster, and select the 'Connection string' tab. + +For a [CockroachDB database hosted locally](https://www.cockroachlabs.com/docs/stable/secure-a-cluster.html), the [connection URL](/orm/reference/connection-urls) looks similar to this: + +```bash file=.env +DATABASE_URL="postgresql://root@localhost:26257?sslmode=disable" +``` + +Your connection string is displayed as part of the welcome text when starting CockroachDB from the command line. diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/100-connect-your-database-typescript-mysql.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/100-connect-your-database-typescript-mysql.mdx new file mode 100644 index 0000000000..a1988eb951 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/100-connect-your-database-typescript-mysql.mdx @@ -0,0 +1,69 @@ +--- +title: 'Connect your database' +metaTitle: 'Connect your database using TypeScript and MySQL' +metaDescription: 'Connect your database to your project using TypeScript and MySQL' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +sidebar_class_name: hidden-sidebar +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/using-prisma-migrate-typescript-mysql +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases/connect-your-database- +--- + +To connect your database, you need to set the `url` field of the `datasource` block in your Prisma schema to your database [connection URL](/orm/reference/connection-urls): + +```prisma file=prisma/schema.prisma showLineNumbers +datasource db { + provider = "postgresql" + url = env("DATABASE_URL") +} +``` + +Note that the default schema created by `prisma init` uses PostgreSQL, so you first need to switch the `provider` to `mysql`: + +```prisma file=prisma/schema.prisma highlight=2;edit showLineNumbers +datasource db { + //edit-next-line + provider = "mysql" + url = env("DATABASE_URL") +} +``` + +In this case, the `url` is [set via an environment variable](/orm/prisma-schema/overview#accessing-environment-variables-from-the-schema) which is defined in `.env`: + +```bash file=.env +DATABASE_URL="mysql://johndoe:randompassword@localhost:3306/mydb" +``` + + + +We recommend adding `.env` to your `.gitignore` file to prevent committing your environment variables. + + + +You now need to adjust the connection URL to point to your own database. + +The [format of the connection URL](/orm/reference/connection-urls) for your database typically depends on the database you use. For MySQL, it looks as follows (the parts spelled all-uppercased are _placeholders_ for your specific connection details): + +```no-lines +mysql://USER:PASSWORD@HOST:PORT/DATABASE +``` + +Here's a short explanation of each component: + +- `USER`: The name of your database user +- `PASSWORD`: The password for your database user +- `PORT`: The port where your database server is running (typically `3306` for MySQL) +- `DATABASE`: The name of the [database](https://dev.mysql.com/doc/refman/8.0/en/creating-database.html) + +As an example, for a MySQL database hosted on AWS RDS, the [connection URL](/orm/reference/connection-urls) might look similar to this: + +```bash file=.env +DATABASE_URL="mysql://johndoe:XXX@mysql–instance1.123456789012.us-east-1.rds.amazonaws.com:3306/mydb" +``` + +When running MySQL locally, your connection URL typically looks similar to this: + +```bash file=.env +DATABASE_URL="mysql://root:randompassword@localhost:3306/mydb" +``` diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/100-connect-your-database-typescript-planetscale.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/100-connect-your-database-typescript-planetscale.mdx new file mode 100644 index 0000000000..e48d59cb91 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/100-connect-your-database-typescript-planetscale.mdx @@ -0,0 +1,97 @@ +--- +title: 'Connect your database' +metaTitle: 'Connect your database using TypeScript and PlanetScale' +metaDescription: 'Connect your database to your project using TypeScript and PlanetScale' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +sidebar_class_name: hidden-sidebar +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/using-prisma-migrate-typescript-planetscale +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases/connect-your-database- +--- + +To connect your database, you need to set the `url` field of the `datasource` block in your Prisma schema to your database [connection URL](/orm/reference/connection-urls): + +```prisma file=prisma/schema.prisma showLineNumbers +datasource db { + provider = "postgresql" + url = env("DATABASE_URL") +} +``` + +Note that the default schema created by `prisma init` uses PostgreSQL as the `provider`. For PlanetScale, you need to edit the `datasource` block to use the `mysql` provider instead: + +```prisma file=prisma/schema.prisma highlight=2;edit showLineNumbers +datasource db { + //edit-next-line + provider = "mysql" + url = env("DATABASE_URL") +} +``` + +You will also need to set the relation mode type to `prisma` in order to [emulate foreign key constraints](/orm/overview/databases/planetscale#option-1-emulate-relations-in-prisma-client) in the `datasource` block: + +```prisma file=schema.prisma highlight=4;add showLineNumbers +datasource db { + provider = "mysql" + url = env("DATABASE_URL") + //add-next-line + relationMode = "prisma" +} +``` + +> **Note**: Since February 2024, you can alternatively [use foreign key constraints on a database-level in PlanetScale](/orm/overview/databases/planetscale#option-2-enable-foreign-key-constraints-in-the-planetscale-database-settings), which omits the need for setting `relationMode = "prisma"`. + +The `url` is [set via an environment variable](/orm/prisma-schema/overview#accessing-environment-variables-from-the-schema) which is defined in `.env`: + +```bash file=.env +DATABASE_URL="mysql://janedoe:mypassword@server.us-east-2.psdb.cloud/mydb?sslaccept=strict" +``` + +You now need to adjust the connection URL to point to your own database. + +The [format of the connection URL](/orm/reference/connection-urls) for your database typically depends on the database you use. PlanetScale uses the MySQL connection URL format, which has the following structure (the parts spelled all-uppercased are _placeholders_ for your specific connection details): + +```no-lines +mysql://USER:PASSWORD@HOST:PORT/DATABASE +``` + +Here's a short explanation of each component: + +- `USER`: The name of your database user +- `PASSWORD`: The password for your database user +- `PORT`: The port where your database server is running (typically `3306` for MySQL) +- `DATABASE`: The name of the [database](https://dev.mysql.com/doc/refman/8.0/en/creating-database.html) + +For a database hosted with PlanetScale, the [connection URL](/orm/reference/connection-urls) looks similar to this: + +```bash file=.env +DATABASE_URL="mysql://myusername:mypassword@server.us-east-2.psdb.cloud/mydb?sslaccept=strict" +``` + +The connection URL for a given database branch can be found from your PlanetScale account by going to the overview page for the branch and selecting the 'Connect' dropdown. In the 'Passwords' section, generate a new password and select 'Prisma' to get the Prisma format for the connection URL. + +
+Alternative method: connecting using the PlanetScale CLI + +Alternatively, you can connect to your PlanetScale database server using the [PlanetScale CLI](https://docs.planetscale.com/reference/planetscale-environment-setup), and use a local connection URL. In this case the connection URL will look like this: + +```bash file=.env +DATABASE_URL="mysql://root@localhost:PORT/mydb" +``` + + + +We recommend adding `.env` to your `.gitignore` file to prevent committing your environment variables. + + + +To connect to your branch, use the following command: + +```terminal +pscale connect prisma-test branchname --port PORT +``` + +The `--port` flag can be omitted if you are using the default port `3306`. + +
diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/100-connect-your-database-typescript-postgresql.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/100-connect-your-database-typescript-postgresql.mdx new file mode 100644 index 0000000000..1130384c75 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/100-connect-your-database-typescript-postgresql.mdx @@ -0,0 +1,62 @@ +--- +title: 'Connect your database' +metaTitle: 'Connect your database using TypeScript and PostgreSQL' +metaDescription: 'Connect your database to your project using TypeScript and PostgreSQL' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/using-prisma-migrate-typescript-postgresql +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases/connect-your-database- +--- + +To connect your database, you need to set the `url` field of the `datasource` block in your Prisma schema to your database [connection URL](/orm/reference/connection-urls): + +```prisma file=prisma/schema.prisma showLineNumbers +datasource db { + provider = "postgresql" + url = env("DATABASE_URL") +} +``` + +In this case, the `url` is [set via an environment variable](/orm/more/development-environment/environment-variables) which is defined in `.env`: + +```bash file=.env +DATABASE_URL="postgresql://johndoe:randompassword@localhost:5432/mydb?schema=public" +``` + + + +We recommend adding `.env` to your `.gitignore` file to prevent committing your environment variables. + + + +You now need to adjust the connection URL to point to your own database. + +The [format of the connection URL](/orm/reference/connection-urls) for your database depends on the database you use. For PostgreSQL, it looks as follows (the parts spelled all-uppercased are _placeholders_ for your specific connection details): + +```no-lines +postgresql://USER:PASSWORD@HOST:PORT/DATABASE?schema=SCHEMA +``` + +Here's a short explanation of each component: + +- `USER`: The name of your database user +- `PASSWORD`: The password for your database user +- `HOST`: The name of your host name (for the local environment, it is `localhost`) +- `PORT`: The port where your database server is running (typically `5432` for PostgreSQL) +- `DATABASE`: The name of the [database](https://www.postgresql.org/docs/12/manage-ag-overview.html) +- `SCHEMA`: The name of the [schema](https://www.postgresql.org/docs/12/ddl-schemas.html) inside the database + +If you're unsure what to provide for the `schema` parameter for a PostgreSQL connection URL, you can probably omit it. In that case, the default schema name `public` will be used. + +As an example, for a PostgreSQL database hosted on Heroku, the [connection URL](/orm/reference/connection-urls) might look similar to this: + +```bash file=.env +DATABASE_URL="postgresql://opnmyfngbknppm:XXX@ec2-46-137-91-216.eu-west-1.compute.amazonaws.com:5432/d50rgmkqi2ipus?schema=hello-prisma" +``` + +When running PostgreSQL locally on macOS, your user and password as well as the database name _typically_ correspond to the current _user_ of your OS, e.g. assuming the user is called `janedoe`: + +```bash file=.env +DATABASE_URL="postgresql://janedoe:janedoe@localhost:5432/janedoe?schema=hello-prisma" +``` diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/100-connect-your-database-typescript-sqlserver.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/100-connect-your-database-typescript-sqlserver.mdx new file mode 100644 index 0000000000..5fed5311af --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/100-connect-your-database-typescript-sqlserver.mdx @@ -0,0 +1,39 @@ +--- +title: 'Connect your database' +metaTitle: 'Connect your database using TypeScript and SQL Server' +metaDescription: 'Connect your database to your project using TypeScript and SQL Server' +langSwitcher: ['typescript', 'node'] +sidebar_class_name: hidden-sidebar +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/using-prisma-migrate-typescript-sqlserver +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases/connect-your-database- +--- + +To connect your database, you need to set the `url` field of the `datasource` block in your Prisma schema to your database [connection URL](/orm/reference/connection-urls): + +```prisma file=prisma/schema.prisma showLineNumbers +datasource db { + provider = "sqlserver" + url = env("DATABASE_URL") +} +``` + +In this case, the `url` is [set via an environment variable](/orm/prisma-schema/overview#accessing-environment-variables-from-the-schema) which is defined in `.env`: + +The following example connection URL [uses SQL authentication](/orm/overview/databases/sql-server), but there are [other ways to format your connection URL](/orm/overview/databases/sql-server) + +```bash file=.env + DATABASE_URL="sqlserver://localhost:1433;database=mydb;user=sa;password=r@ndomP@$$w0rd;trustServerCertificate=true" +``` + + + +We recommend adding `.env` to your `.gitignore` file to prevent committing your environment variables. + + + +Adjust the connection URL to match your setup - see [Microsoft SQL Server connection URL](/orm/overview/databases/sql-server) for more information. + +> Make sure TCP/IP connections are enabled via [SQL Server Configuration Manager](https://docs.microsoft.com/en-us/sql/relational-databases/sql-server-configuration-manager) to avoid `No connection could be made because the target machine actively refused it. (os error 10061)` + diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/100-connect-your-database.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/100-connect-your-database.mdx deleted file mode 100644 index e2f7b0fe20..0000000000 --- a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/100-connect-your-database.mdx +++ /dev/null @@ -1,551 +0,0 @@ ---- -title: 'Connect your database' -metaTitle: 'Connect your database' -metaDescription: 'Connect your database to your project' -langSwitcher: ['typescript', 'node'] -dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] -toc: false ---- - -## Connect your database - -To connect your database, you need to set the `url` field of the `datasource` block in your Prisma schema to your database [connection URL](/orm/reference/connection-urls): - - - -```prisma file=prisma/schema.prisma -datasource db { - provider = "postgresql" - url = env("DATABASE_URL") -} -``` - -In this case, the `url` is [set via an environment variable](/orm/more/development-environment/environment-variables) which is defined in `.env`: - -```bash file=.env -DATABASE_URL="postgresql://johndoe:randompassword@localhost:5432/mydb?schema=public" -``` - - - -We recommend adding `.env` to your `.gitignore` file to prevent committing your environment variables. - - - -You now need to adjust the connection URL to point to your own database. - -The [format of the connection URL](/orm/reference/connection-urls) for your database depends on the database you use. For PostgreSQL, it looks as follows (the parts spelled all-uppercased are _placeholders_ for your specific connection details): - -```no-lines -postgresql://USER:PASSWORD@HOST:PORT/DATABASE?schema=SCHEMA -``` - -Here's a short explanation of each component: - -- `USER`: The name of your database user -- `PASSWORD`: The password for your database user -- `HOST`: The name of your host name (for the local environment, it is `localhost`) -- `PORT`: The port where your database server is running (typically `5432` for PostgreSQL) -- `DATABASE`: The name of the [database](https://www.postgresql.org/docs/12/manage-ag-overview.html) -- `SCHEMA`: The name of the [schema](https://www.postgresql.org/docs/12/ddl-schemas.html) inside the database - -If you're unsure what to provide for the `schema` parameter for a PostgreSQL connection URL, you can probably omit it. In that case, the default schema name `public` will be used. - -As an example, for a PostgreSQL database hosted on Heroku, the [connection URL](/orm/reference/connection-urls) might look similar to this: - -```bash file=.env -DATABASE_URL="postgresql://opnmyfngbknppm:XXX@ec2-46-137-91-216.eu-west-1.compute.amazonaws.com:5432/d50rgmkqi2ipus?schema=hello-prisma" -``` - -When running PostgreSQL locally on macOS, your user and password as well as the database name _typically_ correspond to the current _user_ of your OS, e.g. assuming the user is called `janedoe`: - -```bash file=.env -DATABASE_URL="postgresql://janedoe:janedoe@localhost:5432/janedoe?schema=hello-prisma" -``` - - - - - -```prisma file=prisma/schema.prisma -datasource db { - provider = "postgresql" - url = env("DATABASE_URL") -} -``` - -Note that the default schema created by `prisma init` uses PostgreSQL, so you first need to switch the `provider` to `mysql`: - -```prisma file=prisma/schema.prisma highlight=2;edit -datasource db { - provider = "mysql" - url = env("DATABASE_URL") -} -``` - -In this case, the `url` is [set via an environment variable](/orm/prisma-schema/overview#accessing-environment-variables-from-the-schema) which is defined in `.env`: - -```bash file=.env -DATABASE_URL="mysql://johndoe:randompassword@localhost:3306/mydb" -``` - - - -We recommend adding `.env` to your `.gitignore` file to prevent committing your environment variables. - - - -You now need to adjust the connection URL to point to your own database. - -The [format of the connection URL](/orm/reference/connection-urls) for your database typically depends on the database you use. For MySQL, it looks as follows (the parts spelled all-uppercased are _placeholders_ for your specific connection details): - -```no-lines -mysql://USER:PASSWORD@HOST:PORT/DATABASE -``` - -Here's a short explanation of each component: - -- `USER`: The name of your database user -- `PASSWORD`: The password for your database user -- `PORT`: The port where your database server is running (typically `3306` for MySQL) -- `DATABASE`: The name of the [database](https://dev.mysql.com/doc/refman/8.0/en/creating-database.html) - -As an example, for a MySQL database hosted on AWS RDS, the [connection URL](/orm/reference/connection-urls) might look similar to this: - -```bash file=.env -DATABASE_URL="mysql://johndoe:XXX@mysql–instance1.123456789012.us-east-1.rds.amazonaws.com:3306/mydb" -``` - -When running MySQL locally, your connection URL typically looks similar to this: - -```bash file=.env -DATABASE_URL="mysql://root:randompassword@localhost:3306/mydb" -``` - - - - - -```prisma file=prisma/schema.prisma -datasource db { - provider = "postgresql" - url = env("DATABASE_URL") -} -``` - -Note that the default schema created by `prisma init` uses PostgreSQL as the `provider`. For PlanetScale, you need to edit the `datasource` block to use the `mysql` provider instead: - -```prisma file=prisma/schema.prisma highlight=2;edit -datasource db { - provider = "mysql" - url = env("DATABASE_URL") -} -``` - -You will also need to set the relation mode type to `prisma` in order to [emulate foreign key constraints](/orm/overview/databases/planetscale#option-1-emulate-relations-in-prisma-client) in the `datasource` block: - -```prisma file=schema.prisma highlight=4;add -datasource db { - provider = "mysql" - url = env("DATABASE_URL") - relationMode = "prisma" -} -``` - -> **Note**: Since February 2024, you can alternatively [use foreign key constraints on a database-level in PlanetScale](/orm/overview/databases/planetscale#option-2-enable-foreign-key-constraints-in-the-planetscale-database-settings), which omits the need for setting `relationMode = "prisma"`. - -The `url` is [set via an environment variable](/orm/prisma-schema/overview#accessing-environment-variables-from-the-schema) which is defined in `.env`: - -```bash file=.env -DATABASE_URL="mysql://janedoe:mypassword@server.us-east-2.psdb.cloud/mydb?sslaccept=strict" -``` - -You now need to adjust the connection URL to point to your own database. - -The [format of the connection URL](/orm/reference/connection-urls) for your database typically depends on the database you use. PlanetScale uses the MySQL connection URL format, which has the following structure (the parts spelled all-uppercased are _placeholders_ for your specific connection details): - -```no-lines -mysql://USER:PASSWORD@HOST:PORT/DATABASE -``` - -Here's a short explanation of each component: - -- `USER`: The name of your database user -- `PASSWORD`: The password for your database user -- `PORT`: The port where your database server is running (typically `3306` for MySQL) -- `DATABASE`: The name of the [database](https://dev.mysql.com/doc/refman/8.0/en/creating-database.html) - -For a database hosted with PlanetScale, the [connection URL](/orm/reference/connection-urls) looks similar to this: - -```bash file=.env -DATABASE_URL="mysql://myusername:mypassword@server.us-east-2.psdb.cloud/mydb?sslaccept=strict" -``` - -The connection URL for a given database branch can be found from your PlanetScale account by going to the overview page for the branch and selecting the 'Connect' dropdown. In the 'Passwords' section, generate a new password and select 'Prisma' to get the Prisma format for the connection URL. - -
Alternative method: connecting using the PlanetScale CLI - -Alternatively, you can connect to your PlanetScale database server using the [PlanetScale CLI](https://docs.planetscale.com/reference/planetscale-environment-setup), and use a local connection URL. In this case the connection URL will look like this: - -```bash file=.env -DATABASE_URL="mysql://root@localhost:PORT/mydb" -``` - - - -We recommend adding `.env` to your `.gitignore` file to prevent committing your environment variables. - - - -To connect to your branch, use the following command: - -```terminal -pscale connect prisma-test branchname --port PORT -``` - -The `--port` flag can be omitted if you are using the default port `3306`. - -
- -
- - - -```prisma file=prisma/schema.prisma -datasource db { - provider = "sqlserver" - url = env("DATABASE_URL") -} -``` - -In this case, the `url` is [set via an environment variable](/orm/prisma-schema/overview#accessing-environment-variables-from-the-schema) which is defined in `.env`: - -The following example connection URL [uses SQL authentication](/orm/overview/databases/sql-server), but there are [other ways to format your connection URL](/orm/overview/databases/sql-server) - -```bash file=.env - DATABASE_URL="sqlserver://localhost:1433;database=mydb;user=sa;password=r@ndomP@$$w0rd;trustServerCertificate=true" -``` - - - -We recommend adding `.env` to your `.gitignore` file to prevent committing your environment variables. - - - -Adjust the connection URL to match your setup - see [Microsoft SQL Server connection URL](/orm/overview/databases/sql-server) for more information. - -> Make sure TCP/IP connections are enabled via [SQL Server Configuration Manager](https://docs.microsoft.com/en-us/sql/relational-databases/sql-server-configuration-manager) to avoid `No connection could be made because the target machine actively refused it. (os error 10061)` - - - - - -```prisma file=prisma/schema.prisma -datasource db { - provider = "postgresql" - url = env("DATABASE_URL") -} -``` - -Note that the default schema created by `prisma init` uses PostgreSQL as the `provider`. For CockroachDB, you need to edit the `datasource` block to use the `cockroachdb` provider instead: - -```prisma file=prisma/schema.prisma highlight=2;edit -datasource db { - provider = "cockroachdb" - url = env("DATABASE_URL") -} -``` - -The `url` is [set via an environment variable](/orm/more/development-environment/environment-variables) which is defined in `.env`. You now need to adjust the connection URL to point to your own database. - -The [format of the connection URL](/orm/reference/connection-urls) for your database depends on the database you use. CockroachDB uses the PostgreSQL connection URL format, which has the following structure (the parts spelled all-uppercased are _placeholders_ for your specific connection details): - -```no-lines -postgresql://USER:PASSWORD@HOST:PORT/DATABASE?PARAMETERS -``` - -Here's a short explanation of each component: - -- `USER`: The name of your database user -- `PASSWORD`: The password for your database user -- `PORT`: The port where your database server is running. The default for CockroachDB is `26257`. -- `DATABASE`: The name of the database -- `PARAMETERS`: Any additional connection parameters. See the CockroachDB documentation [here](https://www.cockroachlabs.com/docs/stable/connection-parameters.html#additional-connection-parameters). - -For a [CockroachDB Serverless](https://www.cockroachlabs.com/docs/cockroachcloud/quickstart.html) or [Cockroach Dedicated](https://www.cockroachlabs.com/docs/cockroachcloud/quickstart-trial-cluster) database hosted on [CockroachDB Cloud](https://www.cockroachlabs.com/get-started-cockroachdb/), the [connection URL](/orm/reference/connection-urls) looks similar to this: - -```bash file=.env -DATABASE_URL="postgresql://:@..cockroachlabs.cloud:26257/defaultdb?sslmode=verify-full&sslrootcert=$HOME/.postgresql/root.crt&options=--" -``` - -To find your connection string on CockroachDB Cloud, click the 'Connect' button on the overview page for your database cluster, and select the 'Connection string' tab. - -For a [CockroachDB database hosted locally](https://www.cockroachlabs.com/docs/stable/secure-a-cluster.html), the [connection URL](/orm/reference/connection-urls) looks similar to this: - -```bash file=.env -DATABASE_URL="postgresql://root@localhost:26257?sslmode=disable" -``` - -Your connection string is displayed as part of the welcome text when starting CockroachDB from the command line. - - - - - - - - - Installation - - - - Using Prisma Migrate - - - - - - - - - - - - Installation - - - - Using Prisma Migrate - - - - - - - - - - - - Installation - - - - Creating the database schema - - - - - - - - - - - - Installation - - - - Using Prisma Migrate - - - - - - - - - - - - Installation - - - - Using Prisma Migrate - - - - - - - - - - - - Installation - - - - Using Prisma Migrate - - - - - - - - - - - - Installation - - - - Using Prisma Migrate - - - - - - - - - - - - Installation - - - - Creating the database schema - - - - - - - - - - - - Installation - - - - Using Prisma Migrate - - - - - - - - - - - - Installation - - - - Using Prisma Migrate - - - - - diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/150-using-prisma-migrate-node-cockroachdb.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/150-using-prisma-migrate-node-cockroachdb.mdx new file mode 100644 index 0000000000..78036da01c --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/150-using-prisma-migrate-node-cockroachdb.mdx @@ -0,0 +1,60 @@ +--- +title: 'Using Prisma Migrate' +metaTitle: 'Using Prisma Migrate with JavaScript and CockroachDB' +metaDescription: 'Create database tables with Prisma Migrate using JavaScript and CockroachDB' +langSwitcher: ['typescript', 'node'] +sidebar_class_name: hidden-sidebar +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/install-prisma-client-node-cockroachdb +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases/using-prisma-migrate- +--- + +## Creating the database schema + +In this guide, you'll use [Prisma Migrate](/orm/prisma-migrate) to create the tables in your database. Add the following Prisma data model to your Prisma schema in `prisma/schema.prisma`: + +```prisma file=prisma/schema.prisma copy showLineNumbers +model Post { + id BigInt @id @default(sequence()) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + title String @db.VarChar(255) + content String? + published Boolean @default(false) + author User @relation(fields: [authorId], references: [id]) + authorId BigInt +} + +model Profile { + id BigInt @id @default(sequence()) + bio String? + user User @relation(fields: [userId], references: [id]) + userId BigInt @unique +} + +model User { + id BigInt @id @default(sequence()) + email String @unique + name String? + posts Post[] + profile Profile? +} +``` + +To map your data model to the database schema, you need to use the `prisma migrate` CLI commands: + +```terminal +npx prisma migrate dev --name init +``` + +This command does two things: + +1. It creates a new SQL migration file for this migration +1. It runs the SQL migration file against the database + +:::note +`generate` is called under the hood by default, after running `prisma migrate dev`. If the `prisma-client-js` generator is defined in your schema, this will check if `@prisma/client` is installed and install it if it's missing. +::: + +Great, you now created three tables in your database with Prisma Migrate 🚀 diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/150-using-prisma-migrate-node-mysql.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/150-using-prisma-migrate-node-mysql.mdx new file mode 100644 index 0000000000..ef9fdabddb --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/150-using-prisma-migrate-node-mysql.mdx @@ -0,0 +1,59 @@ +--- +title: 'Using Prisma Migrate' +metaTitle: 'Using Prisma Migrate with JavaScript and MySQL' +metaDescription: 'Create database tables with Prisma Migrate using JavaScript and MySQL' +langSwitcher: ['typescript', 'node'] +sidebar_class_name: hidden-sidebar +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/install-prisma-client-node-mysql +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases/using-prisma-migrate- +--- + +## Creating the database schema + + +In this guide, you'll use [Prisma Migrate](/orm/prisma-migrate) to create the tables in your database. Add the following Prisma data model to your Prisma schema in `prisma/schema.prisma`: + +```prisma file=prisma/schema.prisma copy showLineNumbers +model Post { + id Int @id @default(autoincrement()) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + title String @db.VarChar(255) + content String? + published Boolean @default(false) + author User @relation(fields: [authorId], references: [id]) + authorId Int +} + +model Profile { + id Int @id @default(autoincrement()) + bio String? + user User @relation(fields: [userId], references: [id]) + userId Int @unique +} + +model User { + id Int @id @default(autoincrement()) + email String @unique + name String? + posts Post[] + profile Profile? +} +``` + +To map your data model to the database schema, you need to use the `prisma migrate` CLI commands: + +```terminal +npx prisma migrate dev --name init +``` + +This command does two things: + +1. It creates a new SQL migration file for this migration +1. It runs the SQL migration file against the database + +> **Note**: `generate` is called under the hood by default, after running `prisma migrate dev`. If the `prisma-client-js` generator is defined in your schema, this will check if `@prisma/client` is installed and install it if it's missing. + +Great, you now created three tables in your database with Prisma Migrate 🚀 diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/150-using-prisma-migrate-node-planetscale.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/150-using-prisma-migrate-node-planetscale.mdx new file mode 100644 index 0000000000..d8b5bf4ea2 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/150-using-prisma-migrate-node-planetscale.mdx @@ -0,0 +1,57 @@ +--- +title: 'Using Prisma Migrate' +metaTitle: 'Using Prisma Migrate with JavaScript and PlanetScale' +metaDescription: 'Create database tables with Prisma Migrate using JavaScript and PlanetScale' +langSwitcher: ['typescript', 'node'] +sidebar_class_name: hidden-sidebar +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/install-prisma-client-node-planetscale +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases/using-prisma-migrate- +--- + +## Creating the database schema + +In this guide, you'll use Prisma's [`db push` command](/orm/prisma-migrate/workflows/prototyping-your-schema) to create the tables in your database. Add the following Prisma data model to your Prisma schema in `prisma/schema.prisma`: + +```prisma file=prisma/schema.prisma copy showLineNumbers +model Post { + id Int @id @default(autoincrement()) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + title String @db.VarChar(255) + content String? + published Boolean @default(false) + author User @relation(fields: [authorId], references: [id]) + authorId Int + + @@index(authorId) +} + +model Profile { + id Int @id @default(autoincrement()) + bio String? + user User @relation(fields: [userId], references: [id]) + userId Int @unique + + @@index(userId) +} + +model User { + id Int @id @default(autoincrement()) + email String @unique + name String? + posts Post[] + profile Profile? +} +``` + +You are now ready to push your new schema to your database. Connect to your `main` branch using the instructions in [Connect your database](/getting-started/setup-prisma/start-from-scratch/relational-databases/connect-your-database-typescript-planetscale). + +Now use the `db push` CLI command to push to the `main` branch: + +```terminal +npx prisma db push +``` + +Great, you now created three tables in your database with Prisma's `db push` command 🚀 diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/150-using-prisma-migrate-node-postgresql.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/150-using-prisma-migrate-node-postgresql.mdx new file mode 100644 index 0000000000..c830bfdcfa --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/150-using-prisma-migrate-node-postgresql.mdx @@ -0,0 +1,60 @@ +--- +title: 'Using Prisma Migrate' +metaTitle: 'Using Prisma Migrate with JavaScript and PostgreSQL' +metaDescription: 'Create database tables with Prisma Migrate using JavaScript and PostgreSQL' +langSwitcher: ['typescript', 'node'] +sidebar_class_name: hidden-sidebar +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/install-prisma-client-node-postgresql +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases/using-prisma-migrate- +--- + +## Creating the database schema + +In this guide, you'll use [Prisma Migrate](/orm/prisma-migrate) to create the tables in your database. Add the following data model to your [Prisma schema](/orm/prisma-schema) in `prisma/schema.prisma`: + +```prisma file=prisma/schema.prisma showLineNumbers +model Post { + id Int @id @default(autoincrement()) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + title String @db.VarChar(255) + content String? + published Boolean @default(false) + author User @relation(fields: [authorId], references: [id]) + authorId Int +} + +model Profile { + id Int @id @default(autoincrement()) + bio String? + user User @relation(fields: [userId], references: [id]) + userId Int @unique +} + +model User { + id Int @id @default(autoincrement()) + email String @unique + name String? + posts Post[] + profile Profile? +} +``` + +To map your data model to the database schema, you need to use the `prisma migrate` CLI commands: + +```terminal +npx prisma migrate dev --name init +``` + +This command does two things: + +1. It creates a new SQL migration file for this migration +1. It runs the SQL migration file against the database + +:::note +`generate` is called under the hood by default, after running `prisma migrate dev`. If the `prisma-client-js` generator is defined in your schema, this will check if `@prisma/client` is installed and install it if it's missing. +::: + +Great, you now created three tables in your database with Prisma Migrate 🚀 diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/150-using-prisma-migrate-node-sqlserver.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/150-using-prisma-migrate-node-sqlserver.mdx new file mode 100644 index 0000000000..da3115cccf --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/150-using-prisma-migrate-node-sqlserver.mdx @@ -0,0 +1,58 @@ +--- +title: 'Using Prisma Migrate' +metaTitle: 'Using Prisma Migrate with JavaScript and SQL Server' +metaDescription: 'Create database tables with Prisma Migrate using JavaScript and SQL Server' +langSwitcher: ['typescript', 'node'] +sidebar_class_name: hidden-sidebar +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/install-prisma-client-node-sqlserver +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases/using-prisma-migrate- +--- + +## Creating the database schema + +In this guide, you'll use [Prisma Migrate](/orm/prisma-migrate) to create the tables in your database. Add the following Prisma data model to your Prisma schema in `prisma/schema.prisma`: + +```prisma file=prisma/schema.prisma copy showLineNumbers +model Post { + id Int @id @default(autoincrement()) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + title String @db.VarChar(255) + content String? + published Boolean @default(false) + author User @relation(fields: [authorId], references: [id]) + authorId Int +} + +model Profile { + id Int @id @default(autoincrement()) + bio String? + user User @relation(fields: [userId], references: [id]) + userId Int @unique +} + +model User { + id Int @id @default(autoincrement()) + email String @unique + name String? + posts Post[] + profile Profile? +} +``` + +To map your data model to the database schema, you need to use the `prisma migrate` CLI commands: + +```terminal +npx prisma migrate dev --name init +``` + +This command does two things: + +1. It creates a new SQL migration file for this migration +1. It runs the SQL migration file against the database + +> **Note**: `generate` is called under the hood by default, after running `prisma migrate dev`. If the `prisma-client-js` generator is defined in your schema, this will check if `@prisma/client` is installed and install it if it's missing. + +Great, you now created three tables in your database with Prisma Migrate 🚀 diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/150-using-prisma-migrate-typescript-cockroachdb.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/150-using-prisma-migrate-typescript-cockroachdb.mdx new file mode 100644 index 0000000000..6fe3148297 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/150-using-prisma-migrate-typescript-cockroachdb.mdx @@ -0,0 +1,60 @@ +--- +title: 'Using Prisma Migrate' +metaTitle: 'Using Prisma Migrate with TypeScript and CockroachDB' +metaDescription: 'Create database tables with Prisma Migrate using TypeScript and CockroachDB' +langSwitcher: ['typescript', 'node'] +sidebar_class_name: hidden-sidebar +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/install-prisma-client-typescript-cockroachdb +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases/using-prisma-migrate- +--- + +## Creating the database schema + +In this guide, you'll use [Prisma Migrate](/orm/prisma-migrate) to create the tables in your database. Add the following Prisma data model to your Prisma schema in `prisma/schema.prisma`: + +```prisma file=prisma/schema.prisma copy showLineNumbers +model Post { + id BigInt @id @default(sequence()) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + title String @db.VarChar(255) + content String? + published Boolean @default(false) + author User @relation(fields: [authorId], references: [id]) + authorId BigInt +} + +model Profile { + id BigInt @id @default(sequence()) + bio String? + user User @relation(fields: [userId], references: [id]) + userId BigInt @unique +} + +model User { + id BigInt @id @default(sequence()) + email String @unique + name String? + posts Post[] + profile Profile? +} +``` + +To map your data model to the database schema, you need to use the `prisma migrate` CLI commands: + +```terminal +npx prisma migrate dev --name init +``` + +This command does two things: + +1. It creates a new SQL migration file for this migration +1. It runs the SQL migration file against the database + +:::note +`generate` is called under the hood by default, after running `prisma migrate dev`. If the `prisma-client-js` generator is defined in your schema, this will check if `@prisma/client` is installed and install it if it's missing. +::: + +Great, you now created three tables in your database with Prisma Migrate 🚀 diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/150-using-prisma-migrate-typescript-mysql.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/150-using-prisma-migrate-typescript-mysql.mdx new file mode 100644 index 0000000000..51d16ba2ac --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/150-using-prisma-migrate-typescript-mysql.mdx @@ -0,0 +1,58 @@ +--- +title: 'Using Prisma Migrate' +metaTitle: 'Using Prisma Migrate with TypeScript and MySQL' +metaDescription: 'Create database tables with Prisma Migrate using TypeScript and MySQL' +langSwitcher: ['typescript', 'node'] +sidebar_class_name: hidden-sidebar +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/install-prisma-client-typescript-mysql +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases/using-prisma-migrate- +--- + +## Creating the database schema + +In this guide, you'll use [Prisma Migrate](/orm/prisma-migrate) to create the tables in your database. Add the following Prisma data model to your Prisma schema in `prisma/schema.prisma`: + +```prisma file=prisma/schema.prisma copy showLineNumbers +model Post { + id Int @id @default(autoincrement()) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + title String @db.VarChar(255) + content String? + published Boolean @default(false) + author User @relation(fields: [authorId], references: [id]) + authorId Int +} + +model Profile { + id Int @id @default(autoincrement()) + bio String? + user User @relation(fields: [userId], references: [id]) + userId Int @unique +} + +model User { + id Int @id @default(autoincrement()) + email String @unique + name String? + posts Post[] + profile Profile? +} +``` + +To map your data model to the database schema, you need to use the `prisma migrate` CLI commands: + +```terminal +npx prisma migrate dev --name init +``` + +This command does two things: + +1. It creates a new SQL migration file for this migration +1. It runs the SQL migration file against the database + +> **Note**: `generate` is called under the hood by default, after running `prisma migrate dev`. If the `prisma-client-js` generator is defined in your schema, this will check if `@prisma/client` is installed and install it if it's missing. + +Great, you now created three tables in your database with Prisma Migrate 🚀 diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/150-using-prisma-migrate-typescript-planetscale.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/150-using-prisma-migrate-typescript-planetscale.mdx new file mode 100644 index 0000000000..3ae73f6230 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/150-using-prisma-migrate-typescript-planetscale.mdx @@ -0,0 +1,57 @@ +--- +title: 'Using Prisma Migrate' +metaTitle: 'Using Prisma Migrate with TypeScript and PlanetScale' +metaDescription: 'Create database tables with Prisma Migrate using TypeScript and PlanetScale' +langSwitcher: ['typescript', 'node'] +sidebar_class_name: hidden-sidebar +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/install-prisma-client-typescript-planetscale +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases/using-prisma-migrate- +--- + +## Creating the database schema + +In this guide, you'll use Prisma's [`db push` command](/orm/prisma-migrate/workflows/prototyping-your-schema) to create the tables in your database. Add the following Prisma data model to your Prisma schema in `prisma/schema.prisma`: + +```prisma file=prisma/schema.prisma copy showLineNumbers +model Post { + id Int @id @default(autoincrement()) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + title String @db.VarChar(255) + content String? + published Boolean @default(false) + author User @relation(fields: [authorId], references: [id]) + authorId Int + + @@index(authorId) +} + +model Profile { + id Int @id @default(autoincrement()) + bio String? + user User @relation(fields: [userId], references: [id]) + userId Int @unique + + @@index(userId) +} + +model User { + id Int @id @default(autoincrement()) + email String @unique + name String? + posts Post[] + profile Profile? +} +``` + +You are now ready to push your new schema to your database. Connect to your `main` branch using the instructions in [Connect your database](/getting-started/setup-prisma/start-from-scratch/relational-databases/connect-your-database-typescript-planetscale). + +Now use the `db push` CLI command to push to the `main` branch: + +```terminal +npx prisma db push +``` + +Great, you now created three tables in your database with Prisma's `db push` command 🚀 diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/150-using-prisma-migrate-typescript-postgresql.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/150-using-prisma-migrate-typescript-postgresql.mdx new file mode 100644 index 0000000000..eb3dd1ac70 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/150-using-prisma-migrate-typescript-postgresql.mdx @@ -0,0 +1,59 @@ +--- +title: 'Using Prisma Migrate' +metaTitle: 'Using Prisma Migrate with TypeScript and PostgreSQL' +metaDescription: 'Create database tables with Prisma Migrate using TypeScript and PostgreSQL' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/install-prisma-client-typescript-postgresql +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases/using-prisma-migrate- +--- + +## Creating the database schema + +In this guide, you'll use [Prisma Migrate](/orm/prisma-migrate) to create the tables in your database. Add the following data model to your [Prisma schema](/orm/prisma-schema) in `prisma/schema.prisma`: + +```prisma file=prisma/schema.prisma showLineNumbers +model Post { + id Int @id @default(autoincrement()) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + title String @db.VarChar(255) + content String? + published Boolean @default(false) + author User @relation(fields: [authorId], references: [id]) + authorId Int +} + +model Profile { + id Int @id @default(autoincrement()) + bio String? + user User @relation(fields: [userId], references: [id]) + userId Int @unique +} + +model User { + id Int @id @default(autoincrement()) + email String @unique + name String? + posts Post[] + profile Profile? +} +``` + +To map your data model to the database schema, you need to use the `prisma migrate` CLI commands: + +```terminal +npx prisma migrate dev --name init +``` + +This command does two things: + +1. It creates a new SQL migration file for this migration +1. It runs the SQL migration file against the database + +:::note +`generate` is called under the hood by default, after running `prisma migrate dev`. If the `prisma-client-js` generator is defined in your schema, this will check if `@prisma/client` is installed and install it if it's missing. +::: + +Great, you now created three tables in your database with Prisma Migrate 🚀 diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/150-using-prisma-migrate-typescript-sqlserver.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/150-using-prisma-migrate-typescript-sqlserver.mdx new file mode 100644 index 0000000000..753aefcfd4 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/150-using-prisma-migrate-typescript-sqlserver.mdx @@ -0,0 +1,58 @@ +--- +title: 'Using Prisma Migrate' +metaTitle: 'Using Prisma Migrate with TypeScript and SQL Server' +metaDescription: 'Create database tables with Prisma Migrate using TypeScript and SQL Server' +langSwitcher: ['typescript', 'node'] +sidebar_class_name: hidden-sidebar +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/install-prisma-client-typescript-sqlserver +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases/using-prisma-migrate- +--- + +## Creating the database schema + +In this guide, you'll use [Prisma Migrate](/orm/prisma-migrate) to create the tables in your database. Add the following Prisma data model to your Prisma schema in `prisma/schema.prisma`: + +```prisma file=prisma/schema.prisma copy showLineNumbers +model Post { + id Int @id @default(autoincrement()) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + title String @db.VarChar(255) + content String? + published Boolean @default(false) + author User @relation(fields: [authorId], references: [id]) + authorId Int +} + +model Profile { + id Int @id @default(autoincrement()) + bio String? + user User @relation(fields: [userId], references: [id]) + userId Int @unique +} + +model User { + id Int @id @default(autoincrement()) + email String @unique + name String? + posts Post[] + profile Profile? +} +``` + +To map your data model to the database schema, you need to use the `prisma migrate` CLI commands: + +```terminal +npx prisma migrate dev --name init +``` + +This command does two things: + +1. It creates a new SQL migration file for this migration +1. It runs the SQL migration file against the database + +> **Note**: `generate` is called under the hood by default, after running `prisma migrate dev`. If the `prisma-client-js` generator is defined in your schema, this will check if `@prisma/client` is installed and install it if it's missing. + +Great, you now created three tables in your database with Prisma Migrate 🚀 diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/150-using-prisma-migrate.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/150-using-prisma-migrate.mdx deleted file mode 100644 index fcc8b432ca..0000000000 --- a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/150-using-prisma-migrate.mdx +++ /dev/null @@ -1,841 +0,0 @@ ---- -title: 'Using Prisma Migrate' -metaTitle: 'Using Prisma Migrate' -metaDescription: 'Create database tables with Prisma Migrate' -langSwitcher: ['typescript', 'node'] -dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] -toc: false ---- - -## Creating the database schema - - - -In this guide, you'll use [Prisma Migrate](/orm/prisma-migrate) to create the tables in your database. Add the following data model to your [Prisma schema](/orm/prisma-schema) in `prisma/schema.prisma`: - -```prisma file=prisma/schema.prisma copy -model Post { - id Int @id @default(autoincrement()) - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - title String @db.VarChar(255) - content String? - published Boolean @default(false) - author User @relation(fields: [authorId], references: [id]) - authorId Int -} - -model Profile { - id Int @id @default(autoincrement()) - bio String? - user User @relation(fields: [userId], references: [id]) - userId Int @unique -} - -model User { - id Int @id @default(autoincrement()) - email String @unique - name String? - posts Post[] - profile Profile? -} -``` - -To map your data model to the database schema, you need to use the `prisma migrate` CLI commands: - -```terminal -npx prisma migrate dev --name init -``` - -This command does two things: - -1. It creates a new SQL migration file for this migration -1. It runs the SQL migration file against the database - -> **Note**: `generate` is called under the hood by default, after running `prisma migrate dev`. If the `prisma-client-js` generator is defined in your schema, this will check if `@prisma/client` is installed and install it if it's missing. - -Great, you now created three tables in your database with Prisma Migrate 🚀 - - - - - -In this guide, you'll use [Prisma Migrate](/orm/prisma-migrate) to create the tables in your database. Add the following data model to your Prisma schema in `prisma/schema.prisma`: - -```prisma file=prisma/schema.prisma copy -model Post { - id Int @id @default(autoincrement()) - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - title String @db.VarChar(255) - content String? - published Boolean @default(false) - author User @relation(fields: [authorId], references: [id]) - authorId Int -} - -model Profile { - id Int @id @default(autoincrement()) - bio String? - user User @relation(fields: [userId], references: [id]) - userId Int @unique -} - -model User { - id Int @id @default(autoincrement()) - email String @unique - name String? - posts Post[] - profile Profile? -} -``` - -To map your data model to the database schema, you need to use the `prisma migrate` CLI commands: - -```terminal -npx prisma migrate dev --name init -``` - -This command does two things: - -1. It creates a new SQL migration file for this migration -1. It runs the SQL migration file against the database - -> **Note**: `generate` is called under the hood by default, after running `prisma migrate dev`. If the `prisma-client-js` generator is defined in your schema, this will check if `@prisma/client` is installed and install it if it's missing. - -Great, you now created three tables in your database with Prisma Migrate 🚀 - - - - - -In this guide, you'll use Prisma's [`db push` command](/orm/prisma-migrate/workflows/prototyping-your-schema) to create the tables in your database. Add the following data model to your Prisma schema in `prisma/schema.prisma`: - -```prisma file=prisma/schema.prisma copy -model Post { - id Int @id @default(autoincrement()) - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - title String @db.VarChar(255) - content String? - published Boolean @default(false) - author User @relation(fields: [authorId], references: [id]) - authorId Int - - @@index(authorId) -} - -model Profile { - id Int @id @default(autoincrement()) - bio String? - user User @relation(fields: [userId], references: [id]) - userId Int @unique - - @@index(userId) -} - -model User { - id Int @id @default(autoincrement()) - email String @unique - name String? - posts Post[] - profile Profile? -} -``` - -You are now ready to push your new schema to your database. Connect to your `main` branch using the instructions in [Connect your database](/getting-started/setup-prisma/start-from-scratch/relational-databases/connect-your-database-typescript-planetscale). - -Now use the `db push` CLI command to push to the `main` branch: - -```terminal -npx prisma db push -``` - -Great, you now created three tables in your database with Prisma's `db push` command 🚀 - - - - - -In this guide, you'll use [Prisma Migrate](/orm/prisma-migrate) to create the tables in your database. Add the following data model to your Prisma schema in `prisma/schema.prisma`: - -```prisma file=prisma/schema.prisma copy -model Post { - id Int @id @default(autoincrement()) - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - title String @db.VarChar(255) - content String? - published Boolean @default(false) - author User @relation(fields: [authorId], references: [id]) - authorId Int -} - -model Profile { - id Int @id @default(autoincrement()) - bio String? - user User @relation(fields: [userId], references: [id]) - userId Int @unique -} - -model User { - id Int @id @default(autoincrement()) - email String @unique - name String? - posts Post[] - profile Profile? -} -``` - -To map your data model to the database schema, you need to use the `prisma migrate` CLI commands: - -```terminal -npx prisma migrate dev --name init -``` - -This command does two things: - -1. It creates a new SQL migration file for this migration -1. It runs the SQL migration file against the database - -> **Note**: `generate` is called under the hood by default, after running `prisma migrate dev`. If the `prisma-client-js` generator is defined in your schema, this will check if `@prisma/client` is installed and install it if it's missing. - -Great, you now created three tables in your database with Prisma Migrate 🚀 - - - - - -, ]}> - - - -```sql -CREATE TABLE "Post" ( - "id" SERIAL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - "title" VARCHAR(255) NOT NULL, - "content" TEXT, - "published" BOOLEAN NOT NULL DEFAULT false, - "authorId" INTEGER NOT NULL, - PRIMARY KEY ("id") -); - -CREATE TABLE "Profile" ( - "id" SERIAL, - "bio" TEXT, - "userId" INTEGER NOT NULL, - PRIMARY KEY ("id") -); - -CREATE TABLE "User" ( - "id" SERIAL, - "email" TEXT NOT NULL, - "name" TEXT, - PRIMARY KEY ("id") -); - -CREATE UNIQUE INDEX "Profile.userId_unique" ON "Profile"("userId"); -CREATE UNIQUE INDEX "User.email_unique" ON "User"("email"); -ALTER TABLE "Post" ADD FOREIGN KEY("authorId")REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; -ALTER TABLE "Profile" ADD FOREIGN KEY("userId")REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; -``` - - - - - -**User** - -| Column name | Type | Primary key | Foreign key | Required | Default | -| :---------- | :-------- | :---------- | :---------- | :------- | :----------------- | -| `id` | `INTEGER` | **✔️** | No | **✔️** | _autoincrementing_ | -| `name` | `TEXT` | No | No | No | - | -| `email` | `TEXT` | No | No | **✔️** | - | - -**Post** - -| Column name | Type | Primary key | Foreign key | Required | Default | -| :---------- | :------------- | :---------- | :---------- | :------- | :----------------- | -| `id` | `INTEGER` | **✔️** | No | **✔️** | _autoincrementing_ | -| `createdAt` | `TIMESTAMP` | No | No | **✔️** | `now()` | -| `updatedAt` | `TIMESTAMP` | No | No | **✔️** | | -| `title` | `VARCHAR(255)` | No | No | **✔️** | - | -| `content` | `TEXT` | No | No | No | - | -| `published` | `BOOLEAN` | No | No | **✔️** | `false` | -| `authorId` | `INTEGER` | No | **✔️** | **✔️** | - | - -**Profile** - -| Column name | Type | Primary key | Foreign key | Required | Default | -| :---------- | :-------- | :---------- | :---------- | :------- | :----------------- | -| `id` | `INTEGER` | **✔️** | No | **✔️** | _autoincrementing_ | -| `bio` | `TEXT` | No | No | No | - | -| `userId` | `INTEGER` | No | **✔️** | **✔️** | - | - - - - - - - - - -, ]}> - - - -```sql -CREATE TABLE "Post" ( - "id" SERIAL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - "title" TEXT NOT NULL, - "content" TEXT, - "published" BOOLEAN NOT NULL DEFAULT false, - "authorId" INTEGER NOT NULL, - PRIMARY KEY ("id") -); - -CREATE TABLE "Profile" ( - "id" SERIAL, - "bio" TEXT, - "userId" INTEGER NOT NULL, - PRIMARY KEY ("id") -); - -CREATE TABLE "User" ( - "id" SERIAL, - "email" TEXT NOT NULL, - "name" TEXT, - PRIMARY KEY ("id") -); - -CREATE UNIQUE INDEX "Profile.userId_unique" ON "Profile"("userId"); -CREATE UNIQUE INDEX "User.email_unique" ON "User"("email"); -ALTER TABLE "Post" ADD FOREIGN KEY("authorId")REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; -ALTER TABLE "Profile" ADD FOREIGN KEY("userId")REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; -``` - - - - - -**User** - -| Column name | Type | Primary key | Foreign key | Required | Default | -| :---------- | :-------- | :---------- | :---------- | :------- | :----------------- | -| `id` | `INTEGER` | **✔️** | No | **✔️** | _autoincrementing_ | -| `name` | `TEXT` | No | No | No | - | -| `email` | `TEXT` | No | No | **✔️** | - | - -**Post** - -| Column name | Type | Primary key | Foreign key | Required | Default | -| :---------- | :------------- | :---------- | :---------- | :------- | :----------------- | -| `id` | `INTEGER` | **✔️** | No | **✔️** | _autoincrementing_ | -| `createdAt` | `TIMESTAMP` | No | No | **✔️** | `now()` | -| `updatedAt` | `TIMESTAMP` | No | No | **✔️** | | -| `title` | `VARCHAR(255)` | No | No | **✔️** | - | -| `content` | `TEXT` | No | No | No | - | -| `published` | `BOOLEAN` | No | No | **✔️** | `false` | -| `authorId` | `INTEGER` | No | **✔️** | **✔️** | - | - -**Profile** - -| Column name | Type | Primary key | Foreign key | Required | Default | -| :---------- | :-------- | :---------- | :---------- | :------- | :----------------- | -| `id` | `INTEGER` | **✔️** | No | **✔️** | _autoincrementing_ | -| `bio` | `TEXT` | No | No | No | - | -| `userId` | `INTEGER` | No | **✔️** | **✔️** | - | - - - - - - - - - -, ]}> - - - -```sql -CREATE TABLE `Post` ( - `id` int NOT NULL AUTO_INCREMENT, - `createdAt` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), - `updatedAt` datetime(3) NOT NULL, - `title` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, - `content` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL, - `published` tinyint(1) NOT NULL DEFAULT '0', - `authorId` int NOT NULL, - PRIMARY KEY (`id`), - KEY `Post_authorId_idx` (`authorId`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; - -CREATE TABLE `Profile` ( - `id` int NOT NULL AUTO_INCREMENT, - `bio` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL, - `userId` int NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `Profile_userId_key` (`userId`), - KEY `Profile_userId_idx` (`userId`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; - -CREATE TABLE `User` ( - `id` int NOT NULL AUTO_INCREMENT, - `email` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL, - `name` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `User_email_key` (`email`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; - -``` - - - - - -**User** - -| Column name | Type | Primary key | Foreign key | Required | Default | -| :---------- | :------------- | :---------- | :---------- | :------- | :----------------- | -| `id` | `int` | **✔️** | No | **✔️** | _autoincrementing_ | -| `name` | `varchar(191)` | No | No | No | - | -| `email` | `varchar(191)` | No | No | **✔️** | - | - -**Post** - -| Column name | Type | Primary key | Foreign key | Required | Default | -| :---------- | :------------- | :---------- | :---------- | :------- | :----------------- | -| `id` | `int` | **✔️** | No | **✔️** | _autoincrementing_ | -| `createdAt` | `datetime(3)` | No | No | **✔️** | `now()` | -| `updatedAt` | `datetime(3)` | No | No | **✔️** | | -| `title` | `varchar(255)` | No | No | **✔️** | - | -| `content` | `varchar(191)` | No | No | No | - | -| `published` | `tinyint(1)` | No | No | **✔️** | `false` | -| `authorId` | `int` | No | No | **✔️** | - | - -**Profile** - -| Column name | Type | Primary key | Foreign key | Required | Default | -| :---------- | :------------- | :---------- | :---------- | :------- | :----------------- | -| `id` | `int` | **✔️** | No | **✔️** | _autoincrementing_ | -| `bio` | `varchar(191)` | No | No | No | - | -| `userId` | `int` | No | No | **✔️** | - | - - - - - - - - - -, ]}> - - - -```sql -BEGIN TRY - -BEGIN TRAN; - --- CreateTable -CREATE TABLE [dbo].[Post] ( - [id] INT NOT NULL IDENTITY(1,1), - [createdAt] DATETIME2 NOT NULL CONSTRAINT [Post_createdAt_df] DEFAULT CURRENT_TIMESTAMP, - [updatedAt] DATETIME2 NOT NULL, - [title] VARCHAR(255) NOT NULL, - [content] NVARCHAR(1000), - [published] BIT NOT NULL CONSTRAINT [Post_published_df] DEFAULT 0, - [authorId] INT NOT NULL, - CONSTRAINT [Post_pkey] PRIMARY KEY ([id]) -); - --- CreateTable -CREATE TABLE [dbo].[Profile] ( - [id] INT NOT NULL IDENTITY(1,1), - [bio] NVARCHAR(1000), - [userId] INT NOT NULL, - CONSTRAINT [Profile_pkey] PRIMARY KEY ([id]), - CONSTRAINT [Profile_userId_key] UNIQUE ([userId]) -); - --- CreateTable -CREATE TABLE [dbo].[User] ( - [id] INT NOT NULL IDENTITY(1,1), - [email] NVARCHAR(1000) NOT NULL, - [name] NVARCHAR(1000), - CONSTRAINT [User_pkey] PRIMARY KEY ([id]), - CONSTRAINT [User_email_key] UNIQUE ([email]) -); - --- AddForeignKey -ALTER TABLE [dbo].[Post] ADD CONSTRAINT [Post_authorId_fkey] FOREIGN KEY ([authorId]) REFERENCES [dbo].[User]([id]) ON DELETE NO ACTION ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE [dbo].[Profile] ADD CONSTRAINT [Profile_userId_fkey] FOREIGN KEY ([userId]) REFERENCES [dbo].[User]([id]) ON DELETE NO ACTION ON UPDATE CASCADE; - -COMMIT TRAN; - -END TRY -BEGIN CATCH - -IF @@TRANCOUNT > 0 -BEGIN - ROLLBACK TRAN; -END; -THROW - -END CATCH -``` - - - - - -**User** - -| Column name | Type | Primary key | Foreign key | Required | Default | -| :---------- | :--------------- | :---------- | :---------- | :------- | :----------------- | -| `id` | `INT` | **✔️** | No | **✔️** | _autoincrementing_ | -| `name` | `NVARCHAR(1000)` | No | No | No | - | -| `email` | `NVARCHAR(1000)` | No | No | **✔️** | - | - -**Post** - -| Column name | Type | Primary key | Foreign key | Required | Default | -| :---------- | :--------------- | :---------- | :---------- | :------- | :----------------- | -| `id` | `INT` | **✔️** | No | **✔️** | _autoincrementing_ | -| `createdAt` | `DATETIME2` | No | No | **✔️** | `now()` | -| `updatedAt` | `DATETIME2` | No | No | **✔️** | | -| `title` | `VARCHAR(255)` | No | No | **✔️** | - | -| `content` | `NVARCHAR(1000)` | No | No | No | - | -| `published` | `BIT` | No | No | **✔️** | `false` | -| `authorId` | `INT` | No | **✔️** | **✔️** | - | - -**Profile** - -| Column name | Type | Primary key | Foreign key | Required | Default | -| :---------- | :--------------- | :---------- | :---------- | :------- | :----------------- | -| `id` | `INT` | **✔️** | No | **✔️** | _autoincrementing_ | -| `bio` | `NVARCHAR(1000)` | No | No | No | - | -| `userId` | `INT` | No | **✔️** | **✔️** | - | - - - - - - - - - -In this guide, you'll use [Prisma Migrate](/orm/prisma-migrate) to create the tables in your database. Add the following data model to your Prisma schema in `prisma/schema.prisma`: - -```prisma file=prisma/schema.prisma copy -model Post { - id BigInt @id @default(sequence()) - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - title String @db.VarChar(255) - content String? - published Boolean @default(false) - author User @relation(fields: [authorId], references: [id]) - authorId BigInt -} - -model Profile { - id BigInt @id @default(sequence()) - bio String? - user User @relation(fields: [userId], references: [id]) - userId BigInt @unique -} - -model User { - id BigInt @id @default(sequence()) - email String @unique - name String? - posts Post[] - profile Profile? -} -``` - -To map your data model to the database schema, you need to use the `prisma migrate` CLI commands: - -```terminal -npx prisma migrate dev --name init -``` - -This command does two things: - -1. It creates a new SQL migration file for this migration -1. It runs the SQL migration file against the database - -> **Note**: `generate` is called under the hood by default, after running `prisma migrate dev`. If the `prisma-client-js` generator is defined in your schema, this will check if `@prisma/client` is installed and install it if it's missing. - -Great, you now created three tables in your database with Prisma Migrate 🚀 - - - - - - - - - Connect your database - - - - Install Prisma Client - - - - - - - - - - - - Connect your database - - - - Install Prisma Client - - - - - - - - - - - - Connect your database - - - - Install Prisma Client - - - - - - - - - - - - Connect your database - - - - Install Prisma Client - - - - - - - - - - - - Connect your database - - - - Install Prisma Client - - - - - - - - - - - - Connect your database - - - - Install Prisma Client - - - - - - - - - - - - Connect your database - - - - Install Prisma Client - - - - - - - - - - - - Connect your database - - - - Install Prisma Client - - - - - - - - - - - - Connect your database - - - - Install Prisma Client - - - - - - - - - - - - Connect your database - - - - Install Prisma Client - - - - - diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/200-install-prisma-client-node-cockroachdb.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/200-install-prisma-client-node-cockroachdb.mdx new file mode 100644 index 0000000000..7329e8ad7d --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/200-install-prisma-client-node-cockroachdb.mdx @@ -0,0 +1,25 @@ +--- +title: 'Install Prisma Client' +metaTitle: 'Install Prisma Client: JavaScript and CockroachDB' +metaDescription: 'Install and generate Prisma Client in your project using JavaScript and CockroachDB' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +sidebar_class_name: hidden-sidebar +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/querying-the-database-node-cockroachdb +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases/install-prisma-client- +--- + +## Install and generate Prisma Client + +To get started with Prisma Client, you need to install the `@prisma/client` package: + +```terminal copy +npm install @prisma/client +``` + +The install command invokes `prisma generate` for you which reads your Prisma schema and generates a version of Prisma Client that is _tailored_ to your models. + +![Install and generate Prisma Client](/img/getting-started/prisma-client-install-and-generate.png) + +Whenever you update your Prisma schema, you will have to update your database schema using either `prisma migrate dev` or `prisma db push`. This will keep your database schema in sync with your Prisma schema. The commands will also regenerate Prisma Client. diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/200-install-prisma-client-node-mysql.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/200-install-prisma-client-node-mysql.mdx new file mode 100644 index 0000000000..e1b6cc3cd6 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/200-install-prisma-client-node-mysql.mdx @@ -0,0 +1,26 @@ +--- +title: 'Install Prisma Client' +metaTitle: 'Install Prisma Client: JavaScript and MySQL' +metaDescription: 'Install and generate Prisma Client in your project using JavaScript and MySQL' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +sidebar_class_name: hidden-sidebar +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/querying-the-database-node-mysql +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases/install-prisma-client- +--- + +## Install and generate Prisma Client + +To get started with Prisma Client, you need to install the `@prisma/client` package: + +```terminal copy +npm install @prisma/client +``` + +The install command invokes `prisma generate` for you which reads your Prisma schema and generates a version of Prisma Client that is _tailored_ to your models. + +![Install and generate Prisma Client](/img/getting-started/prisma-client-install-and-generate.png) + +Whenever you update your Prisma schema, you will have to update your database schema using either `prisma migrate dev` or `prisma db push`. This will keep your database schema in sync with your Prisma schema. The commands will also regenerate Prisma Client. + diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/200-install-prisma-client-node-planetscale.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/200-install-prisma-client-node-planetscale.mdx new file mode 100644 index 0000000000..cb442d8bec --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/200-install-prisma-client-node-planetscale.mdx @@ -0,0 +1,26 @@ +--- +title: 'Install Prisma Client' +metaTitle: 'Install Prisma Client: JavaScript and PlanetScale ' +metaDescription: 'Install and generate Prisma Client in your project using JavaScript and PlanetScale' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +sidebar_class_name: hidden-sidebar +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/querying-the-database-node-planetscale +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases/install-prisma-client- +--- + + +## Install and generate Prisma Client + +To get started with Prisma Client, you need to install the `@prisma/client` package: + +```terminal copy +npm install @prisma/client +``` + +The install command invokes `prisma generate` for you which reads your Prisma schema and generates a version of Prisma Client that is _tailored_ to your models. + +![Install and generate Prisma Client](/img/getting-started/prisma-client-install-and-generate.png) + +Whenever you update your Prisma schema, you will have to update your database schema using either `prisma migrate dev` or `prisma db push`. This will keep your database schema in sync with your Prisma schema. The commands will also regenerate Prisma Client. diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/200-install-prisma-client-node-postgresql.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/200-install-prisma-client-node-postgresql.mdx new file mode 100644 index 0000000000..98c886ab9e --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/200-install-prisma-client-node-postgresql.mdx @@ -0,0 +1,26 @@ +--- +title: 'Install Prisma Client' +metaTitle: 'Install Prisma Client: JavaScript and PostgreSQL' +metaDescription: 'Install and generate Prisma Client in your project using JavaScript and PostgreSQL' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +sidebar_class_name: hidden-sidebar +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/querying-the-database-node-postgresql +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases/install-prisma-client- +--- + + +## Install and generate Prisma Client + +To get started with Prisma Client, you need to install the `@prisma/client` package: + +```terminal copy +npm install @prisma/client +``` + +The install command invokes `prisma generate` for you which reads your Prisma schema and generates a version of Prisma Client that is _tailored_ to your models. + +![Install and generate Prisma Client](/img/getting-started/prisma-client-install-and-generate.png) + +Whenever you update your Prisma schema, you will have to update your database schema using either `prisma migrate dev` or `prisma db push`. This will keep your database schema in sync with your Prisma schema. The commands will also regenerate Prisma Client. diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/200-install-prisma-client-node-sqlserver.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/200-install-prisma-client-node-sqlserver.mdx new file mode 100644 index 0000000000..acbff30a87 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/200-install-prisma-client-node-sqlserver.mdx @@ -0,0 +1,26 @@ +--- +title: 'Install Prisma Client' +metaTitle: 'Install Prisma Client: JavaScript and SQL Server' +metaDescription: 'Install and generate Prisma Client in your project using JavaScript and SQL Server' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +sidebar_class_name: hidden-sidebar +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/querying-the-database-node-sqlserver +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases/install-prisma-client- +--- + + +## Install and generate Prisma Client + +To get started with Prisma Client, you need to install the `@prisma/client` package: + +```terminal copy +npm install @prisma/client +``` + +The install command invokes `prisma generate` for you which reads your Prisma schema and generates a version of Prisma Client that is _tailored_ to your models. + +![Install and generate Prisma Client](/img/getting-started/prisma-client-install-and-generate.png) + +Whenever you update your Prisma schema, you will have to update your database schema using either `prisma migrate dev` or `prisma db push`. This will keep your database schema in sync with your Prisma schema. The commands will also regenerate Prisma Client. diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/200-install-prisma-client-typescript-cockroachdb.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/200-install-prisma-client-typescript-cockroachdb.mdx new file mode 100644 index 0000000000..040ded72fd --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/200-install-prisma-client-typescript-cockroachdb.mdx @@ -0,0 +1,26 @@ +--- +title: 'Install Prisma Client' +metaTitle: 'Install Prisma Client: TypeScript and CockroachDB' +metaDescription: 'Install and generate Prisma Client in your project using TypeScript and CockroachDB' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +sidebar_class_name: hidden-sidebar +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/querying-the-database-typescript-cockroachdb +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases/install-prisma-client- +--- + + +## Install and generate Prisma Client + +To get started with Prisma Client, you need to install the `@prisma/client` package: + +```terminal copy +npm install @prisma/client +``` + +The install command invokes `prisma generate` for you which reads your Prisma schema and generates a version of Prisma Client that is _tailored_ to your models. + +![Install and generate Prisma Client](/img/getting-started/prisma-client-install-and-generate.png) + +Whenever you update your Prisma schema, you will have to update your database schema using either `prisma migrate dev` or `prisma db push`. This will keep your database schema in sync with your Prisma schema. The commands will also regenerate Prisma Client. diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/200-install-prisma-client-typescript-mysql.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/200-install-prisma-client-typescript-mysql.mdx new file mode 100644 index 0000000000..6a3ff59370 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/200-install-prisma-client-typescript-mysql.mdx @@ -0,0 +1,27 @@ +--- +title: 'Install Prisma Client' +metaTitle: 'Install Prisma Client: TypeScript and MySQL' +metaDescription: 'Install and generate Prisma Client in your project using TypeScript and MySQL' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +sidebar_class_name: hidden-sidebar +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/querying-the-database-typescript-mysql +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases/install-prisma-client- +--- + + +## Install and generate Prisma Client + +To get started with Prisma Client, you need to install the `@prisma/client` package: + +```terminal copy +npm install @prisma/client +``` + +The install command invokes `prisma generate` for you which reads your Prisma schema and generates a version of Prisma Client that is _tailored_ to your models. + +![Install and generate Prisma Client](/img/getting-started/prisma-client-install-and-generate.png) + +Whenever you update your Prisma schema, you will have to update your database schema using either `prisma migrate dev` or `prisma db push`. This will keep your database schema in sync with your Prisma schema. The commands will also regenerate Prisma Client. + diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/200-install-prisma-client-typescript-planetscale.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/200-install-prisma-client-typescript-planetscale.mdx new file mode 100644 index 0000000000..893f3b300f --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/200-install-prisma-client-typescript-planetscale.mdx @@ -0,0 +1,26 @@ +--- +title: 'Install Prisma Client' +metaTitle: 'Install Prisma Client: TypeScript and PlanetScale' +metaDescription: 'Install and generate Prisma Client in your project using TypeScript and PlanetScale' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +sidebar_class_name: hidden-sidebar +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/querying-the-database-typescript-planetscale +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases/install-prisma-client- +--- + + +## Install and generate Prisma Client + +To get started with Prisma Client, you need to install the `@prisma/client` package: + +```terminal copy +npm install @prisma/client +``` + +The install command invokes `prisma generate` for you which reads your Prisma schema and generates a version of Prisma Client that is _tailored_ to your models. + +![Install and generate Prisma Client](/img/getting-started/prisma-client-install-and-generate.png) + +Whenever you update your Prisma schema, you will have to update your database schema using either `prisma migrate dev` or `prisma db push`. This will keep your database schema in sync with your Prisma schema. The commands will also regenerate Prisma Client. diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/200-install-prisma-client-typescript-postgresql.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/200-install-prisma-client-typescript-postgresql.mdx new file mode 100644 index 0000000000..3b60ec8ad9 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/200-install-prisma-client-typescript-postgresql.mdx @@ -0,0 +1,25 @@ +--- +title: 'Install Prisma Client' +metaTitle: 'Install Prisma Client: TypeScript and PostgreSQL' +metaDescription: 'Install and generate Prisma Client in your project using TypeScript and PostgreSQL' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/querying-the-database-typescript-postgresql +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases/install-prisma-client- +--- + + +## Install and generate Prisma Client + +To get started with Prisma Client, you need to install the `@prisma/client` package: + +```terminal copy +npm install @prisma/client +``` + +The install command invokes `prisma generate` for you which reads your Prisma schema and generates a version of Prisma Client that is _tailored_ to your models. + +![Install and generate Prisma Client](/img/getting-started/prisma-client-install-and-generate.png) + +Whenever you update your Prisma schema, you will have to update your database schema using either `prisma migrate dev` or `prisma db push`. This will keep your database schema in sync with your Prisma schema. The commands will also regenerate Prisma Client. diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/200-install-prisma-client-typescript-sqlserver.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/200-install-prisma-client-typescript-sqlserver.mdx new file mode 100644 index 0000000000..b02637697a --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/200-install-prisma-client-typescript-sqlserver.mdx @@ -0,0 +1,26 @@ +--- +title: 'Install Prisma Client' +metaTitle: 'Install Prisma Client: TypeScript and SQL Server' +metaDescription: 'Install and generate Prisma Client in your project using TypeScript and SQL Server' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +sidebar_class_name: hidden-sidebar +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/querying-the-database-typescript-sqlserver +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases/install-prisma-client- +--- + + +## Install and generate Prisma Client + +To get started with Prisma Client, you need to install the `@prisma/client` package: + +```terminal copy +npm install @prisma/client +``` + +The install command invokes `prisma generate` for you which reads your Prisma schema and generates a version of Prisma Client that is _tailored_ to your models. + +![Install and generate Prisma Client](/img/getting-started/prisma-client-install-and-generate.png) + +Whenever you update your Prisma schema, you will have to update your database schema using either `prisma migrate dev` or `prisma db push`. This will keep your database schema in sync with your Prisma schema. The commands will also regenerate Prisma Client. diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/200-install-prisma-client.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/200-install-prisma-client.mdx deleted file mode 100644 index ad43659b34..0000000000 --- a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/200-install-prisma-client.mdx +++ /dev/null @@ -1,282 +0,0 @@ ---- -title: 'Install Prisma Client' -metaTitle: 'Install Prisma Client' -metaDescription: 'Install and generate Prisma Client in your project' -langSwitcher: ['typescript', 'node'] -dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] -toc: false ---- - -## Install and generate Prisma Client - -To get started with Prisma Client, you need to install the `@prisma/client` package: - -```terminal copy -npm install @prisma/client -``` - -The install command invokes `prisma generate` for you which reads your Prisma schema and generates a version of Prisma Client that is _tailored_ to your models. - -![Install and generate Prisma Client](../../../images/prisma-client-install-and-generate.png) - -Whenever you update your Prisma schema, you will have to update your database schema using either `prisma migrate dev` or `prisma db push`. This will keep your database schema in sync with your Prisma schema. The commands will also regenerate Prisma Client. - - - - - - - Using Prisma Migrate - - - - Querying the database - - - - - - - - - - - - Using Prisma Migrate - - - - Querying the database - - - - - - - - - - - - Using Prisma Migrate - - - - Querying the database - - - - - - - - - - - - Using Prisma Migrate - - - - Querying the database - - - - - - - - - - - - Using Prisma Migrate - - - - Querying the database - - - - - - - - - - - - Using Prisma Migrate - - - - Querying the database - - - - - - - - - - - - Using Prisma Migrate - - - - Querying the database - - - - - - - - - - - - Creating the database schema - - - - Querying the database - - - - - - - - - - - - Using Prisma Migrate - - - - Querying the database - - - - - - - - - - - - Using Prisma Migrate - - - - Querying the database - - - - - diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/250-querying-the-database-node-cockroachdb.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/250-querying-the-database-node-cockroachdb.mdx new file mode 100644 index 0000000000..f645c30960 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/250-querying-the-database-node-cockroachdb.mdx @@ -0,0 +1,203 @@ +--- +title: 'Querying the database' +metaTitle: 'Querying the database using JavaScript and CockroachDB' +metaDescription: 'Write data to and query the database using JavaScript and CockroachDB' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/querying-the-database-typescript-cockroachdb +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases/querying-the-database- +--- + +## Write your first query with Prisma Client + +Now that you have generated [Prisma Client](/orm/prisma-client), you can start writing queries to read and write data in your database. For the purpose of this guide, you'll use a plain Node.js script to explore some basic features of Prisma Client. + +Create a new file named `index.js` and add the following code to it: + +```js file=index.js copy showLineNumbers +const { PrismaClient } = require('@prisma/client') + +const prisma = new PrismaClient() + +async function main() { + // ... you will write your Prisma Client queries here +} + +main() + .then(async () => { + await prisma.$disconnect() + }) + .catch(async (e) => { + console.error(e) + await prisma.$disconnect() + process.exit(1) + }) +``` + +Here's a quick overview of the different parts of the code snippet: + +1. Import the `PrismaClient` constructor from the `@prisma/client` node module +1. Instantiate `PrismaClient` +1. Define an `async` function named `main` to send queries to the database +1. Call the `main` function +1. Close the database connections when the script terminates + +Inside the `main` function, add the following query to read all `User` records from the database and print the result: + +```js file=index.js highlight=2;delete|3,4;add showLineNumbers +async function main() { + //delete-next-line + // ... you will write your Prisma Client queries here + //add-start + const allUsers = await prisma.user.findMany() + console.log(allUsers) + //add-end +} +``` + +Now run the code with this command: + +```terminal copy +node index.js +``` + +This should print an empty array because there are no `User` records in the database yet: + +```json no-lines +[] +``` + +## Write data into the database + +The `findMany` query you used in the previous section only _reads_ data from the database (although it was still empty). In this section, you'll learn how to write a query to _write_ new records into the `Post` and `User` tables. + +Adjust the `main` function to send a `create` query to the database: + +```js file=index.js highlight=2-21;add copy showLineNumbers +async function main() { + //add-start + await prisma.user.create({ + data: { + name: 'Alice', + email: 'alice@prisma.io', + posts: { + create: { title: 'Hello World' }, + }, + profile: { + create: { bio: 'I like turtles' }, + }, + }, + }) + + const allUsers = await prisma.user.findMany({ + include: { + posts: true, + profile: true, + }, + }) + console.dir(allUsers, { depth: null }) + //add-end +} +``` + +This code creates a new `User` record together with new `Post` and `Profile` records using a [nested write](/orm/prisma-client/queries/relation-queries#nested-writes) query. The `User` record is connected to the two other ones via the `Post.author` ↔ `User.posts` and `Profile.user` ↔ `User.profile` [relation fields](/orm/prisma-schema/data-model/relations#relation-fields) respectively. + +Notice that you're passing the [`include`](/orm/prisma-client/queries/select-fields#include-relations-and-select-relation-fields) option to `findMany` which tells Prisma Client to include the `posts` and `profile` relations on the returned `User` objects. + +Run the code with this command: + +```terminal copy +node index.js +``` + +The output should look similar to this: + +```js no-lines +[ + { + email: 'alice@prisma.io', + id: 1, + name: 'Alice', + posts: [ + { + content: null, + createdAt: 2020-03-21T16:45:01.246Z, + updatedAt: 2020-03-21T16:45:01.246Z, + id: 1, + published: false, + title: 'Hello World', + authorId: 1, + } + ], + profile: { + bio: 'I like turtles', + id: 1, + userId: 1, + } + } +] +``` + +The query added new records to the `User` and the `Post` tables: + +**User** + +| **id** | **email** | **name** | +| :----- | :------------------ | :-------- | +| `1` | `"alice@prisma.io"` | `"Alice"` | + +**Post** + +| **id** | **createdAt** | **updatedAt** | **title** | **content** | **published** | **authorId** | +| :----- | :------------------------- | :------------------------: | :-------------- | :---------- | :------------ | :----------- | +| `1` | `2020-03-21T16:45:01.246Z` | `2020-03-21T16:45:01.246Z` | `"Hello World"` | `null` | `false` | `1` | + +**Profile** + +| **id** | **bio** | **userId** | +| :----- | :----------------- | :--------- | +| `1` | `"I like turtles"` | `1` | + +> **Note**: The numbers in the `authorId` column on `Post` and `userId` column on `Profile` both reference the `id` column of the `User` table, meaning the `id` value `1` column therefore refers to the first (and only) `User` record in the database. + +Before moving on to the next section, you'll "publish" the `Post` record you just created using an `update` query. Adjust the `main` function as follows: + +```js file=index.js copy showLineNumbers +async function main() { + const post = await prisma.post.update({ + where: { id: 1 }, + data: { published: true }, + }) + console.log(post) +} +``` + +Now run the code using the same command as before: + +```terminal copy +node index.js +``` + +You will see the following output: + +```js no-lines +{ + id: 1, + title: 'Hello World', + content: null, + published: true, + authorId: 1 +} +``` + +The `Post` record with an `id` of `1` now got updated in the database: + +**Post** + +| **id** | **title** | **content** | **published** | **authorId** | +| :----- | :-------------- | :---------- | :------------ | :----------- | +| `1` | `"Hello World"` | `null` | `true` | `1` | + +Fantastic, you just wrote new data into your database for the first time using Prisma Client 🚀 diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/250-querying-the-database-node-mysql.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/250-querying-the-database-node-mysql.mdx new file mode 100644 index 0000000000..69d10e004a --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/250-querying-the-database-node-mysql.mdx @@ -0,0 +1,203 @@ +--- +title: 'Querying the database' +metaTitle: 'Querying the database using JavaScript and MySQL' +metaDescription: 'Write data to and query the database using JavaScript and MySQL' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/next-steps +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases/querying-the-database- +--- + +## Write your first query with Prisma Client + +Now that you have generated [Prisma Client](/orm/prisma-client), you can start writing queries to read and write data in your database. For the purpose of this guide, you'll use a plain Node.js script to explore some basic features of Prisma Client. + +Create a new file named `index.js` and add the following code to it: + +```js file=index.js copy showLineNumbers +const { PrismaClient } = require('@prisma/client') + +const prisma = new PrismaClient() + +async function main() { + // ... you will write your Prisma Client queries here +} + +main() + .then(async () => { + await prisma.$disconnect() + }) + .catch(async (e) => { + console.error(e) + await prisma.$disconnect() + process.exit(1) + }) +``` + +Here's a quick overview of the different parts of the code snippet: + +1. Import the `PrismaClient` constructor from the `@prisma/client` node module +1. Instantiate `PrismaClient` +1. Define an `async` function named `main` to send queries to the database +1. Call the `main` function +1. Close the database connections when the script terminates + +Inside the `main` function, add the following query to read all `User` records from the database and print the result: + +```js file=index.js highlight=2;delete|3,4; showLineNumbers +async function main() { + //delete-next-line + // ... you will write your Prisma Client queries here + //add-start + const allUsers = await prisma.user.findMany() + console.log(allUsers) + //add-end +} +``` + +Now run the code with this command: + +```terminal copy +node index.js +``` + +This should print an empty array because there are no `User` records in the database yet: + +```json no-lines +[] +``` + +## Write data into the database + +The `findMany` query you used in the previous section only _reads_ data from the database (although it was still empty). In this section, you'll learn how to write a query to _write_ new records into the `Post` and `User` tables. + +Adjust the `main` function to send a `create` query to the database: + +```js file=index.js highlight=2-21;add copy showLineNumbers +async function main() { + //add-start + await prisma.user.create({ + data: { + name: 'Alice', + email: 'alice@prisma.io', + posts: { + create: { title: 'Hello World' }, + }, + profile: { + create: { bio: 'I like turtles' }, + }, + }, + }) + + const allUsers = await prisma.user.findMany({ + include: { + posts: true, + profile: true, + }, + }) + console.dir(allUsers, { depth: null }) + //add-end +} +``` + +This code creates a new `User` record together with new `Post` and `Profile` records using a [nested write](/orm/prisma-client/queries/relation-queries#nested-writes) query. The `User` record is connected to the two other ones via the `Post.author` ↔ `User.posts` and `Profile.user` ↔ `User.profile` [relation fields](/orm/prisma-schema/data-model/relations#relation-fields) respectively. + +Notice that you're passing the [`include`](/orm/prisma-client/queries/select-fields#include-relations-and-select-relation-fields) option to `findMany` which tells Prisma Client to include the `posts` and `profile` relations on the returned `User` objects. + +Run the code with this command: + +```terminal copy +node index.js +``` + +The output should look similar to this: + +```js no-lines +[ + { + email: 'alice@prisma.io', + id: 1, + name: 'Alice', + posts: [ + { + content: null, + createdAt: 2020-03-21T16:45:01.246Z, + updatedAt: 2020-03-21T16:45:01.246Z, + id: 1, + published: false, + title: 'Hello World', + authorId: 1, + } + ], + profile: { + bio: 'I like turtles', + id: 1, + userId: 1, + } + } +] +``` + +The query added new records to the `User` and the `Post` tables: + +**User** + +| **id** | **email** | **name** | +| :----- | :------------------ | :-------- | +| `1` | `"alice@prisma.io"` | `"Alice"` | + +**Post** + +| **id** | **createdAt** | **updatedAt** | **title** | **content** | **published** | **authorId** | +| :----- | :------------------------- | :------------------------: | :-------------- | :---------- | :------------ | :----------- | +| `1` | `2020-03-21T16:45:01.246Z` | `2020-03-21T16:45:01.246Z` | `"Hello World"` | `null` | `false` | `1` | + +**Profile** + +| **id** | **bio** | **userId** | +| :----- | :----------------- | :--------- | +| `1` | `"I like turtles"` | `1` | + +> **Note**: The numbers in the `authorId` column on `Post` and `userId` column on `Profile` both reference the `id` column of the `User` table, meaning the `id` value `1` column therefore refers to the first (and only) `User` record in the database. + +Before moving on to the next section, you'll "publish" the `Post` record you just created using an `update` query. Adjust the `main` function as follows: + +```js file=index.js copy showLineNumbers +async function main() { + const post = await prisma.post.update({ + where: { id: 1 }, + data: { published: true }, + }) + console.log(post) +} +``` + +Now run the code using the same command as before: + +```terminal copy +node index.js +``` + +You will see the following output: + +```js no-lines +{ + id: 1, + title: 'Hello World', + content: null, + published: true, + authorId: 1 +} +``` + +The `Post` record with an `id` of `1` now got updated in the database: + +**Post** + +| **id** | **title** | **content** | **published** | **authorId** | +| :----- | :-------------- | :---------- | :------------ | :----------- | +| `1` | `"Hello World"` | `null` | `true` | `1` | + +Fantastic, you just wrote new data into your database for the first time using Prisma Client 🚀 diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/250-querying-the-database-node-planetscale.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/250-querying-the-database-node-planetscale.mdx new file mode 100644 index 0000000000..ee11f94416 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/250-querying-the-database-node-planetscale.mdx @@ -0,0 +1,204 @@ +--- +title: 'Querying the database' +metaTitle: 'Querying the database using JavaScript and PlanetScale' +metaDescription: 'Write data to and query the database using JavaScript and PlanetScale' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/next-steps +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases/querying-the-database- +--- + +## Write your first query with Prisma Client + +Now that you have generated [Prisma Client](/orm/prisma-client), you can start writing queries to read and write data in your database. For the purpose of this guide, you'll use a plain Node.js script to explore some basic features of Prisma Client. + +Create a new file named `index.js` and add the following code to it: + +```js file=index.js copy showLineNumbers +const { PrismaClient } = require('@prisma/client') + +const prisma = new PrismaClient() + +async function main() { + // ... you will write your Prisma Client queries here +} + +main() + .then(async () => { + await prisma.$disconnect() + }) + .catch(async (e) => { + console.error(e) + await prisma.$disconnect() + process.exit(1) + }) +``` + +Here's a quick overview of the different parts of the code snippet: + +1. Import the `PrismaClient` constructor from the `@prisma/client` node module +1. Instantiate `PrismaClient` +1. Define an `async` function named `main` to send queries to the database +1. Call the `main` function +1. Close the database connections when the script terminates + +Inside the `main` function, add the following query to read all `User` records from the database and print the result: + +```js file=index.js highlight=2;delete|3,4;add showLineNumbers +async function main() { + //delete-next-line + // ... you will write your Prisma Client queries here + //add-start + const allUsers = await prisma.user.findMany() + console.log(allUsers) + //add-end +} +``` + +Now run the code with this command: + +```terminal copy +node index.js +``` + +This should print an empty array because there are no `User` records in the database yet: + +```json no-lines +[] +``` + +## Write data into the database + +The `findMany` query you used in the previous section only _reads_ data from the database (although it was still empty). In this section, you'll learn how to write a query to _write_ new records into the `Post` and `User` tables. + +Adjust the `main` function to send a `create` query to the database: + +```js file=index.js highlight=2-21;add copy showLineNumbers +async function main() { + //add-start + await prisma.user.create({ + data: { + name: 'Alice', + email: 'alice@prisma.io', + posts: { + create: { title: 'Hello World' }, + }, + profile: { + create: { bio: 'I like turtles' }, + }, + }, + }) + + const allUsers = await prisma.user.findMany({ + include: { + posts: true, + profile: true, + }, + }) + console.dir(allUsers, { depth: null }) + //add-end +} +``` + +This code creates a new `User` record together with new `Post` and `Profile` records using a [nested write](/orm/prisma-client/queries/relation-queries#nested-writes) query. The `User` record is connected to the two other ones via the `Post.author` ↔ `User.posts` and `Profile.user` ↔ `User.profile` [relation fields](/orm/prisma-schema/data-model/relations#relation-fields) respectively. + +Notice that you're passing the [`include`](/orm/prisma-client/queries/select-fields#include-relations-and-select-relation-fields) option to `findMany` which tells Prisma Client to include the `posts` and `profile` relations on the returned `User` objects. + +Run the code with this command: + +```terminal copy +node index.js +``` + +The output should look similar to this: + +```js no-lines +[ + { + email: 'alice@prisma.io', + id: 1, + name: 'Alice', + posts: [ + { + content: null, + createdAt: 2020-03-21T16:45:01.246Z, + updatedAt: 2020-03-21T16:45:01.246Z, + id: 1, + published: false, + title: 'Hello World', + authorId: 1, + } + ], + profile: { + bio: 'I like turtles', + id: 1, + userId: 1, + } + } +] +``` + +The query added new records to the `User` and the `Post` tables: + +**User** + +| **id** | **email** | **name** | +| :----- | :------------------ | :-------- | +| `1` | `"alice@prisma.io"` | `"Alice"` | + +**Post** + +| **id** | **createdAt** | **updatedAt** | **title** | **content** | **published** | **authorId** | +| :----- | :------------------------- | :------------------------: | :-------------- | :---------- | :------------ | :----------- | +| `1` | `2020-03-21T16:45:01.246Z` | `2020-03-21T16:45:01.246Z` | `"Hello World"` | `null` | `false` | `1` | + +**Profile** + +| **id** | **bio** | **userId** | +| :----- | :----------------- | :--------- | +| `1` | `"I like turtles"` | `1` | + +> **Note**: The numbers in the `authorId` column on `Post` and `userId` column on `Profile` both reference the `id` column of the `User` table, meaning the `id` value `1` column therefore refers to the first (and only) `User` record in the database. + +Before moving on to the next section, you'll "publish" the `Post` record you just created using an `update` query. Adjust the `main` function as follows: + + +```js file=index.js copy showLineNumbers +async function main() { + const post = await prisma.post.update({ + where: { id: 1 }, + data: { published: true }, + }) + console.log(post) +} +``` + +Now run the code using the same command as before: + +```terminal copy +node index.js +``` + +You will see the following output: + +```js no-lines +{ + id: 1, + title: 'Hello World', + content: null, + published: true, + authorId: 1 +} +``` + +The `Post` record with an `id` of `1` now got updated in the database: + +**Post** + +| **id** | **title** | **content** | **published** | **authorId** | +| :----- | :-------------- | :---------- | :------------ | :----------- | +| `1` | `"Hello World"` | `null` | `true` | `1` | + +Fantastic, you just wrote new data into your database for the first time using Prisma Client 🚀 diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/250-querying-the-database-node-postgresql.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/250-querying-the-database-node-postgresql.mdx new file mode 100644 index 0000000000..ca3934deac --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/250-querying-the-database-node-postgresql.mdx @@ -0,0 +1,204 @@ +--- +title: 'Querying the database' +metaTitle: 'Querying the database using JavaScript and PostgreSQL' +metaDescription: 'Write data to and query the database using JavaScript and PostgreSQL' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/next-steps +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases/querying-the-database- +--- + +## Write your first query with Prisma Client + +Now that you have generated [Prisma Client](/orm/prisma-client), you can start writing queries to read and write data in your database. For the purpose of this guide, you'll use a plain Node.js script to explore some basic features of Prisma Client. + +Create a new file named `index.js` and add the following code to it: + +```js file=index.js copy showLineNumbers +const { PrismaClient } = require('@prisma/client') + +const prisma = new PrismaClient() + +async function main() { + // ... you will write your Prisma Client queries here +} + +main() + .then(async () => { + await prisma.$disconnect() + }) + .catch(async (e) => { + console.error(e) + await prisma.$disconnect() + process.exit(1) + }) +``` + +Here's a quick overview of the different parts of the code snippet: + +1. Import the `PrismaClient` constructor from the `@prisma/client` node module +1. Instantiate `PrismaClient` +1. Define an `async` function named `main` to send queries to the database +1. Call the `main` function +1. Close the database connections when the script terminates + +Inside the `main` function, add the following query to read all `User` records from the database and print the result: + + +```js file=index.js highlight=2;delete|3,4;add showLineNumbers +async function main() { + //delete-next-line + // ... you will write your Prisma Client queries here + //add-start + const allUsers = await prisma.user.findMany() + console.log(allUsers) + //add-end +} +``` + +Now run the code with this command: + +```terminal copy +node index.js +``` + +This should print an empty array because there are no `User` records in the database yet: + +```json no-lines +[] +``` + +## Write data into the database + +The `findMany` query you used in the previous section only _reads_ data from the database (although it was still empty). In this section, you'll learn how to write a query to _write_ new records into the `Post` and `User` tables. + +Adjust the `main` function to send a `create` query to the database: + +```js file=index.js highlight=2-21;add copy showLineNumbers +async function main() { + //add-start + await prisma.user.create({ + data: { + name: 'Alice', + email: 'alice@prisma.io', + posts: { + create: { title: 'Hello World' }, + }, + profile: { + create: { bio: 'I like turtles' }, + }, + }, + }) + + const allUsers = await prisma.user.findMany({ + include: { + posts: true, + profile: true, + }, + }) + console.dir(allUsers, { depth: null }) + //add-end +} +``` + +This code creates a new `User` record together with new `Post` and `Profile` records using a [nested write](/orm/prisma-client/queries/relation-queries#nested-writes) query. The `User` record is connected to the two other ones via the `Post.author` ↔ `User.posts` and `Profile.user` ↔ `User.profile` [relation fields](/orm/prisma-schema/data-model/relations#relation-fields) respectively. + +Notice that you're passing the [`include`](/orm/prisma-client/queries/select-fields#include-relations-and-select-relation-fields) option to `findMany` which tells Prisma Client to include the `posts` and `profile` relations on the returned `User` objects. + +Run the code with this command: + +```terminal copy +node index.js +``` + +The output should look similar to this: + +```js no-lines +[ + { + email: 'alice@prisma.io', + id: 1, + name: 'Alice', + posts: [ + { + content: null, + createdAt: 2020-03-21T16:45:01.246Z, + updatedAt: 2020-03-21T16:45:01.246Z, + id: 1, + published: false, + title: 'Hello World', + authorId: 1, + } + ], + profile: { + bio: 'I like turtles', + id: 1, + userId: 1, + } + } +] +``` + +The query added new records to the `User` and the `Post` tables: + +**User** + +| **id** | **email** | **name** | +| :----- | :------------------ | :-------- | +| `1` | `"alice@prisma.io"` | `"Alice"` | + +**Post** + +| **id** | **createdAt** | **updatedAt** | **title** | **content** | **published** | **authorId** | +| :----- | :------------------------- | :------------------------: | :-------------- | :---------- | :------------ | :----------- | +| `1` | `2020-03-21T16:45:01.246Z` | `2020-03-21T16:45:01.246Z` | `"Hello World"` | `null` | `false` | `1` | + +**Profile** + +| **id** | **bio** | **userId** | +| :----- | :----------------- | :--------- | +| `1` | `"I like turtles"` | `1` | + +> **Note**: The numbers in the `authorId` column on `Post` and `userId` column on `Profile` both reference the `id` column of the `User` table, meaning the `id` value `1` column therefore refers to the first (and only) `User` record in the database. + +Before moving on to the next section, you'll "publish" the `Post` record you just created using an `update` query. Adjust the `main` function as follows: + +```js file=index.js copy showLineNumbers +async function main() { + const post = await prisma.post.update({ + where: { id: 1 }, + data: { published: true }, + }) + console.log(post) +} +``` + +Now run the code using the same command as before: + +```terminal copy +node index.js +``` + +You will see the following output: + +```js no-lines +{ + id: 1, + title: 'Hello World', + content: null, + published: true, + authorId: 1 +} +``` + +The `Post` record with an `id` of `1` now got updated in the database: + +**Post** + +| **id** | **title** | **content** | **published** | **authorId** | +| :----- | :-------------- | :---------- | :------------ | :----------- | +| `1` | `"Hello World"` | `null` | `true` | `1` | + +Fantastic, you just wrote new data into your database for the first time using Prisma Client 🚀 diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/250-querying-the-database-node-sqlserver.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/250-querying-the-database-node-sqlserver.mdx new file mode 100644 index 0000000000..be6329c186 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/250-querying-the-database-node-sqlserver.mdx @@ -0,0 +1,203 @@ +--- +title: 'Querying the database' +metaTitle: 'Querying the database using JavaScript and SQL Server' +metaDescription: 'Write data to and query the database using JavaScript and SQL Server' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/next-steps +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases/querying-the-database- +--- + +## Write your first query with Prisma Client + +Now that you have generated [Prisma Client](/orm/prisma-client), you can start writing queries to read and write data in your database. For the purpose of this guide, you'll use a plain Node.js script to explore some basic features of Prisma Client. + +Create a new file named `index.js` and add the following code to it: + +```js file=index.js copy showLineNumbers +const { PrismaClient } = require('@prisma/client') + +const prisma = new PrismaClient() + +async function main() { + // ... you will write your Prisma Client queries here +} + +main() + .then(async () => { + await prisma.$disconnect() + }) + .catch(async (e) => { + console.error(e) + await prisma.$disconnect() + process.exit(1) + }) +``` + +Here's a quick overview of the different parts of the code snippet: + +1. Import the `PrismaClient` constructor from the `@prisma/client` node module +1. Instantiate `PrismaClient` +1. Define an `async` function named `main` to send queries to the database +1. Call the `main` function +1. Close the database connections when the script terminates + +Inside the `main` function, add the following query to read all `User` records from the database and print the result: + +```js file=index.js highlight=2;delete|3,4;add showLineNumbers +async function main() { + //delete-next-line + // ... you will write your Prisma Client queries here + //add-start + const allUsers = await prisma.user.findMany() + console.log(allUsers) + //add-end +} +``` + +Now run the code with this command: + +```terminal copy +node index.js +``` + +This should print an empty array because there are no `User` records in the database yet: + +```json no-lines +[] +``` + +## Write data into the database + +The `findMany` query you used in the previous section only _reads_ data from the database (although it was still empty). In this section, you'll learn how to write a query to _write_ new records into the `Post` and `User` tables. + +Adjust the `main` function to send a `create` query to the database: + +```js file=index.js highlight=2-21;add copy showLineNumbers +async function main() { + //add-start + await prisma.user.create({ + data: { + name: 'Alice', + email: 'alice@prisma.io', + posts: { + create: { title: 'Hello World' }, + }, + profile: { + create: { bio: 'I like turtles' }, + }, + }, + }) + + const allUsers = await prisma.user.findMany({ + include: { + posts: true, + profile: true, + }, + }) + console.dir(allUsers, { depth: null }) + //add-end +} +``` + +This code creates a new `User` record together with new `Post` and `Profile` records using a [nested write](/orm/prisma-client/queries/relation-queries#nested-writes) query. The `User` record is connected to the two other ones via the `Post.author` ↔ `User.posts` and `Profile.user` ↔ `User.profile` [relation fields](/orm/prisma-schema/data-model/relations#relation-fields) respectively. + +Notice that you're passing the [`include`](/orm/prisma-client/queries/select-fields#include-relations-and-select-relation-fields) option to `findMany` which tells Prisma Client to include the `posts` and `profile` relations on the returned `User` objects. + +Run the code with this command: + +```terminal copy +node index.js +``` + +The output should look similar to this: + +```js no-lines +[ + { + email: 'alice@prisma.io', + id: 1, + name: 'Alice', + posts: [ + { + content: null, + createdAt: 2020-03-21T16:45:01.246Z, + updatedAt: 2020-03-21T16:45:01.246Z, + id: 1, + published: false, + title: 'Hello World', + authorId: 1, + } + ], + profile: { + bio: 'I like turtles', + id: 1, + userId: 1, + } + } +] +``` + +The query added new records to the `User` and the `Post` tables: + +**User** + +| **id** | **email** | **name** | +| :----- | :------------------ | :-------- | +| `1` | `"alice@prisma.io"` | `"Alice"` | + +**Post** + +| **id** | **createdAt** | **updatedAt** | **title** | **content** | **published** | **authorId** | +| :----- | :------------------------- | :------------------------: | :-------------- | :---------- | :------------ | :----------- | +| `1` | `2020-03-21T16:45:01.246Z` | `2020-03-21T16:45:01.246Z` | `"Hello World"` | `null` | `false` | `1` | + +**Profile** + +| **id** | **bio** | **userId** | +| :----- | :----------------- | :--------- | +| `1` | `"I like turtles"` | `1` | + +> **Note**: The numbers in the `authorId` column on `Post` and `userId` column on `Profile` both reference the `id` column of the `User` table, meaning the `id` value `1` column therefore refers to the first (and only) `User` record in the database. + +Before moving on to the next section, you'll "publish" the `Post` record you just created using an `update` query. Adjust the `main` function as follows: + +```js file=index.js copy showLineNumbers +async function main() { + const post = await prisma.post.update({ + where: { id: 1 }, + data: { published: true }, + }) + console.log(post) +} +``` + +Now run the code using the same command as before: + +```terminal copy +node index.js +``` + +You will see the following output: + +```js no-lines +{ + id: 1, + title: 'Hello World', + content: null, + published: true, + authorId: 1 +} +``` + +The `Post` record with an `id` of `1` now got updated in the database: + +**Post** + +| **id** | **title** | **content** | **published** | **authorId** | +| :----- | :-------------- | :---------- | :------------ | :----------- | +| `1` | `"Hello World"` | `null` | `true` | `1` | + +Fantastic, you just wrote new data into your database for the first time using Prisma Client 🚀 diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/250-querying-the-database-typescript-cockroachdb.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/250-querying-the-database-typescript-cockroachdb.mdx new file mode 100644 index 0000000000..ffec1fdf4c --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/250-querying-the-database-typescript-cockroachdb.mdx @@ -0,0 +1,218 @@ +--- +title: 'Querying the database' +metaTitle: 'Querying the database using TypeScript and CockroachDB' +metaDescription: 'Write data to and query the database using TypeScript and CockroachDB' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/next-steps +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases/querying-the-database- +--- + +## Write your first query with Prisma Client + +Now that you have generated [Prisma Client](/orm/prisma-client), you can start writing queries to read and write data in your database. For the purpose of this guide, you'll use a plain Node.js script to explore some basic features of Prisma Client. + +Create a new file named `index.ts` and add the following code to it: + +```js file=index.ts copy showLineNumbers +import { PrismaClient } from '@prisma/client' + +const prisma = new PrismaClient() + +async function main() { + // ... you will write your Prisma Client queries here +} + +main() + .then(async () => { + await prisma.$disconnect() + }) + .catch(async (e) => { + console.error(e) + await prisma.$disconnect() + process.exit(1) + }) +``` + +Here's a quick overview of the different parts of the code snippet: + +1. Import the `PrismaClient` constructor from the `@prisma/client` node module +1. Instantiate `PrismaClient` +1. Define an `async` function named `main` to send queries to the database +1. Call the `main` function +1. Close the database connections when the script terminates + +Inside the `main` function, add the following query to read all `User` records from the database and print the result: + +```ts file=index.ts highlight=3,4;add showLineNumbers +async function main() { + // ... you will write your Prisma Client queries here + //add-start + const allUsers = await prisma.user.findMany() + console.log(allUsers) + //add-end +} +``` + +Now run the code with this command: + +```terminal copy +npx ts-node index.ts +``` + +This should print an empty array because there are no `User` records in the database yet: + +```json no-lines +[] +``` + +## Write data into the database + +The `findMany` query you used in the previous section only _reads_ data from the database (although it was still empty). In this section, you'll learn how to write a query to _write_ new records into the `Post` and `User` tables. + +Adjust the `main` function to send a `create` query to the database: + +```ts file=index.ts highlight=2-21;add copy showLineNumbers +async function main() { + //add-start + await prisma.user.create({ + data: { + name: 'Alice', + email: 'alice@prisma.io', + posts: { + create: { title: 'Hello World' }, + }, + profile: { + create: { bio: 'I like turtles' }, + }, + }, + }) + + const allUsers = await prisma.user.findMany({ + include: { + posts: true, + profile: true, + }, + }) + console.dir(allUsers, { depth: null }) + //add-end +} +``` + +This code creates a new `User` record together with new `Post` and `Profile` records using a [nested write](/orm/prisma-client/queries/relation-queries#nested-writes) query. The `User` record is connected to the two other ones via the `Post.author` ↔ `User.posts` and `Profile.user` ↔ `User.profile` [relation fields](/orm/prisma-schema/data-model/relations#relation-fields) respectively. + +Notice that you're passing the [`include`](/orm/prisma-client/queries/select-fields#include-relations-and-select-relation-fields) option to `findMany` which tells Prisma Client to include the `posts` and `profile` relations on the returned `User` objects. + +Run the code with this command: + +```terminal copy +npx ts-node index.ts +``` + +The output should look similar to this: + +```js no-lines +[ + { + email: 'alice@prisma.io', + id: 1, + name: 'Alice', + posts: [ + { + content: null, + createdAt: 2020-03-21T16:45:01.246Z, + updatedAt: 2020-03-21T16:45:01.246Z, + id: 1, + published: false, + title: 'Hello World', + authorId: 1, + } + ], + profile: { + bio: 'I like turtles', + id: 1, + userId: 1, + } + } +] +``` + +Also note that `allUsers` is _statically typed_ thanks to [Prisma Client's generated types](/orm/prisma-client/type-safety/operating-against-partial-structures-of-model-types). You can observe the type by hovering over the `allUsers` variable in your editor. It should be typed as follows: + +```ts no-lines +const allUsers: (User & { + posts: Post[] +})[] + +export type Post = { + id: number + title: string + content: string | null + published: boolean + authorId: number | null +} +``` + +The query added new records to the `User` and the `Post` tables: + +**User** + +| **id** | **email** | **name** | +| :----- | :------------------ | :-------- | +| `1` | `"alice@prisma.io"` | `"Alice"` | + +**Post** + +| **id** | **createdAt** | **updatedAt** | **title** | **content** | **published** | **authorId** | +| :----- | :------------------------- | :------------------------: | :-------------- | :---------- | :------------ | :----------- | +| `1` | `2020-03-21T16:45:01.246Z` | `2020-03-21T16:45:01.246Z` | `"Hello World"` | `null` | `false` | `1` | + +**Profile** + +| **id** | **bio** | **userId** | +| :----- | :----------------- | :--------- | +| `1` | `"I like turtles"` | `1` | + +> **Note**: The numbers in the `authorId` column on `Post` and `userId` column on `Profile` both reference the `id` column of the `User` table, meaning the `id` value `1` column therefore refers to the first (and only) `User` record in the database. + +Before moving on to the next section, you'll "publish" the `Post` record you just created using an `update` query. Adjust the `main` function as follows: + +```ts file=index.ts copy showLineNumbers +async function main() { + const post = await prisma.post.update({ + where: { id: 1 }, + data: { published: true }, + }) + console.log(post) +} +``` + +Now run the code using the same command as before: + +```terminal copy +npx ts-node index.ts +``` + +You will see the following output: + +```js no-lines +{ + id: 1, + title: 'Hello World', + content: null, + published: true, + authorId: 1 +} +``` + +The `Post` record with an `id` of `1` now got updated in the database: + +**Post** + +| **id** | **title** | **content** | **published** | **authorId** | +| :----- | :-------------- | :---------- | :------------ | :----------- | +| `1` | `"Hello World"` | `null` | `true` | `1` | + +Fantastic, you just wrote new data into your database for the first time using Prisma Client 🚀 diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/250-querying-the-database-typescript-mysql.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/250-querying-the-database-typescript-mysql.mdx new file mode 100644 index 0000000000..0862b630d1 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/250-querying-the-database-typescript-mysql.mdx @@ -0,0 +1,218 @@ +--- +title: 'Querying the database' +metaTitle: 'Querying the database using TypeScript and MySQL' +metaDescription: 'Write data to and query the database using TypeScript and MySQL' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/next-steps +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases/querying-the-database- +--- + +## Write your first query with Prisma Client + +Now that you have generated [Prisma Client](/orm/prisma-client), you can start writing queries to read and write data in your database. For the purpose of this guide, you'll use a plain Node.js script to explore some basic features of Prisma Client. + +Create a new file named `index.ts` and add the following code to it: + +```js file=index.ts copy showLineNumbers +import { PrismaClient } from '@prisma/client' + +const prisma = new PrismaClient() + +async function main() { + // ... you will write your Prisma Client queries here +} + +main() + .then(async () => { + await prisma.$disconnect() + }) + .catch(async (e) => { + console.error(e) + await prisma.$disconnect() + process.exit(1) + }) +``` + +Here's a quick overview of the different parts of the code snippet: + +1. Import the `PrismaClient` constructor from the `@prisma/client` node module +1. Instantiate `PrismaClient` +1. Define an `async` function named `main` to send queries to the database +1. Call the `main` function +1. Close the database connections when the script terminates + +Inside the `main` function, add the following query to read all `User` records from the database and print the result: + +```ts file=index.ts highlight=3,4;add showLineNumbers +async function main() { + // ... you will write your Prisma Client queries here + //add-start + const allUsers = await prisma.user.findMany() + console.log(allUsers) + //add-end +} +``` + +Now run the code with this command: + +```terminal copy +npx ts-node index.ts +``` + +This should print an empty array because there are no `User` records in the database yet: + +```json no-lines +[] +``` + +## Write data into the database + +The `findMany` query you used in the previous section only _reads_ data from the database (although it was still empty). In this section, you'll learn how to write a query to _write_ new records into the `Post` and `User` tables. + +Adjust the `main` function to send a `create` query to the database: + +```ts file=index.ts highlight=2-21;add copy showLineNumbers +async function main() { + //add-start + await prisma.user.create({ + data: { + name: 'Alice', + email: 'alice@prisma.io', + posts: { + create: { title: 'Hello World' }, + }, + profile: { + create: { bio: 'I like turtles' }, + }, + }, + }) + + const allUsers = await prisma.user.findMany({ + include: { + posts: true, + profile: true, + }, + }) + console.dir(allUsers, { depth: null }) + //add-end +} +``` + +This code creates a new `User` record together with new `Post` and `Profile` records using a [nested write](/orm/prisma-client/queries/relation-queries#nested-writes) query. The `User` record is connected to the two other ones via the `Post.author` ↔ `User.posts` and `Profile.user` ↔ `User.profile` [relation fields](/orm/prisma-schema/data-model/relations#relation-fields) respectively. + +Notice that you're passing the [`include`](/orm/prisma-client/queries/select-fields#include-relations-and-select-relation-fields) option to `findMany` which tells Prisma Client to include the `posts` and `profile` relations on the returned `User` objects. + +Run the code with this command: + +```terminal copy +npx ts-node index.ts +``` + +The output should look similar to this: + +```js no-lines +[ + { + email: 'alice@prisma.io', + id: 1, + name: 'Alice', + posts: [ + { + content: null, + createdAt: 2020-03-21T16:45:01.246Z, + updatedAt: 2020-03-21T16:45:01.246Z, + id: 1, + published: false, + title: 'Hello World', + authorId: 1, + } + ], + profile: { + bio: 'I like turtles', + id: 1, + userId: 1, + } + } +] +``` + +Also note that `allUsers` is _statically typed_ thanks to [Prisma Client's generated types](/orm/prisma-client/type-safety/operating-against-partial-structures-of-model-types). You can observe the type by hovering over the `allUsers` variable in your editor. It should be typed as follows: + +```ts no-lines +const allUsers: (User & { + posts: Post[] +})[] + +export type Post = { + id: number + title: string + content: string | null + published: boolean + authorId: number | null +} +``` + +The query added new records to the `User` and the `Post` tables: + +**User** + +| **id** | **email** | **name** | +| :----- | :------------------ | :-------- | +| `1` | `"alice@prisma.io"` | `"Alice"` | + +**Post** + +| **id** | **createdAt** | **updatedAt** | **title** | **content** | **published** | **authorId** | +| :----- | :------------------------- | :------------------------: | :-------------- | :---------- | :------------ | :----------- | +| `1` | `2020-03-21T16:45:01.246Z` | `2020-03-21T16:45:01.246Z` | `"Hello World"` | `null` | `false` | `1` | + +**Profile** + +| **id** | **bio** | **userId** | +| :----- | :----------------- | :--------- | +| `1` | `"I like turtles"` | `1` | + +> **Note**: The numbers in the `authorId` column on `Post` and `userId` column on `Profile` both reference the `id` column of the `User` table, meaning the `id` value `1` column therefore refers to the first (and only) `User` record in the database. + +Before moving on to the next section, you'll "publish" the `Post` record you just created using an `update` query. Adjust the `main` function as follows: + +```ts file=index.ts copy showLineNumbers +async function main() { + const post = await prisma.post.update({ + where: { id: 1 }, + data: { published: true }, + }) + console.log(post) +} +``` + +Now run the code using the same command as before: + +```terminal copy +npx ts-node index.ts +``` + +You will see the following output: + +```js no-lines +{ + id: 1, + title: 'Hello World', + content: null, + published: true, + authorId: 1 +} +``` + +The `Post` record with an `id` of `1` now got updated in the database: + +**Post** + +| **id** | **title** | **content** | **published** | **authorId** | +| :----- | :-------------- | :---------- | :------------ | :----------- | +| `1` | `"Hello World"` | `null` | `true` | `1` | + +Fantastic, you just wrote new data into your database for the first time using Prisma Client 🚀 diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/250-querying-the-database-typescript-planetscale.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/250-querying-the-database-typescript-planetscale.mdx new file mode 100644 index 0000000000..b40ffa325e --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/250-querying-the-database-typescript-planetscale.mdx @@ -0,0 +1,219 @@ +--- +title: 'Querying the database' +metaTitle: 'Querying the database using TypeScript and PlanetScale' +metaDescription: 'Write data to and query the database using TypeScript and PlanetScale' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/next-steps +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases/querying-the-database- +--- + +## Write your first query with Prisma Client + +Now that you have generated [Prisma Client](/orm/prisma-client), you can start writing queries to read and write data in your database. For the purpose of this guide, you'll use a plain Node.js script to explore some basic features of Prisma Client. + +Create a new file named `index.ts` and add the following code to it: + +```js file=index.ts copy showLineNumbers +import { PrismaClient } from '@prisma/client' + +const prisma = new PrismaClient() + +async function main() { + // ... you will write your Prisma Client queries here +} + +main() + .then(async () => { + await prisma.$disconnect() + }) + .catch(async (e) => { + console.error(e) + await prisma.$disconnect() + process.exit(1) + }) +``` + +Here's a quick overview of the different parts of the code snippet: + +1. Import the `PrismaClient` constructor from the `@prisma/client` node module +1. Instantiate `PrismaClient` +1. Define an `async` function named `main` to send queries to the database +1. Call the `main` function +1. Close the database connections when the script terminates + +Inside the `main` function, add the following query to read all `User` records from the database and print the result: + +```ts file=index.ts highlight=3,4;add showLineNumbers +async function main() { + // ... you will write your Prisma Client queries here + //add-start + const allUsers = await prisma.user.findMany() + console.log(allUsers) + //add-end +} +``` + +Now run the code with this command: + +```terminal copy +npx ts-node index.ts +``` + +This should print an empty array because there are no `User` records in the database yet: + +```json no-lines +[] +``` + +## Write data into the database + +The `findMany` query you used in the previous section only _reads_ data from the database (although it was still empty). In this section, you'll learn how to write a query to _write_ new records into the `Post` and `User` tables. + +Adjust the `main` function to send a `create` query to the database: + +```ts file=index.ts highlight=2-21;add copy showLineNumbers +async function main() { + //add-start + await prisma.user.create({ + data: { + name: 'Alice', + email: 'alice@prisma.io', + posts: { + create: { title: 'Hello World' }, + }, + profile: { + create: { bio: 'I like turtles' }, + }, + }, + }) + + const allUsers = await prisma.user.findMany({ + include: { + posts: true, + profile: true, + }, + }) + console.dir(allUsers, { depth: null }) + //add-end +} +``` + +This code creates a new `User` record together with new `Post` and `Profile` records using a [nested write](/orm/prisma-client/queries/relation-queries#nested-writes) query. The `User` record is connected to the two other ones via the `Post.author` ↔ `User.posts` and `Profile.user` ↔ `User.profile` [relation fields](/orm/prisma-schema/data-model/relations#relation-fields) respectively. + +Notice that you're passing the [`include`](/orm/prisma-client/queries/select-fields#include-relations-and-select-relation-fields) option to `findMany` which tells Prisma Client to include the `posts` and `profile` relations on the returned `User` objects. + +Run the code with this command: + +```terminal copy +npx ts-node index.ts +``` + +The output should look similar to this: + +```js no-lines +[ + { + email: 'alice@prisma.io', + id: 1, + name: 'Alice', + posts: [ + { + content: null, + createdAt: 2020-03-21T16:45:01.246Z, + updatedAt: 2020-03-21T16:45:01.246Z, + id: 1, + published: false, + title: 'Hello World', + authorId: 1, + } + ], + profile: { + bio: 'I like turtles', + id: 1, + userId: 1, + } + } +] +``` + +Also note that `allUsers` is _statically typed_ thanks to [Prisma Client's generated types](/orm/prisma-client/type-safety/operating-against-partial-structures-of-model-types). You can observe the type by hovering over the `allUsers` variable in your editor. It should be typed as follows: + +```ts no-lines +const allUsers: (User & { + posts: Post[] +})[] + +export type Post = { + id: number + title: string + content: string | null + published: boolean + authorId: number | null +} +``` + +The query added new records to the `User` and the `Post` tables: + +**User** + +| **id** | **email** | **name** | +| :----- | :------------------ | :-------- | +| `1` | `"alice@prisma.io"` | `"Alice"` | + +**Post** + +| **id** | **createdAt** | **updatedAt** | **title** | **content** | **published** | **authorId** | +| :----- | :------------------------- | :------------------------: | :-------------- | :---------- | :------------ | :----------- | +| `1` | `2020-03-21T16:45:01.246Z` | `2020-03-21T16:45:01.246Z` | `"Hello World"` | `null` | `false` | `1` | + +**Profile** + +| **id** | **bio** | **userId** | +| :----- | :----------------- | :--------- | +| `1` | `"I like turtles"` | `1` | + +> **Note**: The numbers in the `authorId` column on `Post` and `userId` column on `Profile` both reference the `id` column of the `User` table, meaning the `id` value `1` column therefore refers to the first (and only) `User` record in the database. + +Before moving on to the next section, you'll "publish" the `Post` record you just created using an `update` query. Adjust the `main` function as follows: + +```ts file=index.ts copy showLineNumbers +async function main() { + const post = await prisma.post.update({ + where: { id: 1 }, + data: { published: true }, + }) + console.log(post) +} +``` + +Now run the code using the same command as before: + +```terminal copy +npx ts-node index.ts +``` + +You will see the following output: + +```js no-lines +{ + id: 1, + title: 'Hello World', + content: null, + published: true, + authorId: 1 +} +``` + +The `Post` record with an `id` of `1` now got updated in the database: + +**Post** + +| **id** | **title** | **content** | **published** | **authorId** | +| :----- | :-------------- | :---------- | :------------ | :----------- | +| `1` | `"Hello World"` | `null` | `true` | `1` | + +Fantastic, you just wrote new data into your database for the first time using Prisma Client 🚀 + diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/250-querying-the-database-typescript-postgresql.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/250-querying-the-database-typescript-postgresql.mdx new file mode 100644 index 0000000000..e009aa1566 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/250-querying-the-database-typescript-postgresql.mdx @@ -0,0 +1,217 @@ +--- +title: 'Querying the database' +metaTitle: 'Querying the database using TypeScript and PostgreSQL' +metaDescription: 'Write data to and query the database using TypeScript and PostgreSQL' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/next-steps +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases/querying-the-database- +--- + +## Write your first query with Prisma Client + +Now that you have generated [Prisma Client](/orm/prisma-client), you can start writing queries to read and write data in your database. For the purpose of this guide, you'll use a plain Node.js script to explore some basic features of Prisma Client. + +Create a new file named `index.ts` and add the following code to it: + +```js file=index.ts copy showLineNumbers +import { PrismaClient } from '@prisma/client' + +const prisma = new PrismaClient() + +async function main() { + // ... you will write your Prisma Client queries here +} + +main() + .then(async () => { + await prisma.$disconnect() + }) + .catch(async (e) => { + console.error(e) + await prisma.$disconnect() + process.exit(1) + }) +``` + +Here's a quick overview of the different parts of the code snippet: + +1. Import the `PrismaClient` constructor from the `@prisma/client` node module +1. Instantiate `PrismaClient` +1. Define an `async` function named `main` to send queries to the database +1. Call the `main` function +1. Close the database connections when the script terminates + +Inside the `main` function, add the following query to read all `User` records from the database and print the result: + +```ts file=index.ts highlight=3,4;add showLineNumbers +async function main() { + // ... you will write your Prisma Client queries here + //add-start + const allUsers = await prisma.user.findMany() + console.log(allUsers) + //add-end +} +``` + +Now run the code with this command: + +```terminal copy +npx ts-node index.ts +``` + +This should print an empty array because there are no `User` records in the database yet: + +```json no-lines +[] +``` + +## Write data into the database + +The `findMany` query you used in the previous section only _reads_ data from the database (although it was still empty). In this section, you'll learn how to write a query to _write_ new records into the `Post` and `User` tables. + +Adjust the `main` function to send a `create` query to the database: + +```ts file=index.ts highlight=2-21;add copy showLineNumbers +async function main() { + //add-start + await prisma.user.create({ + data: { + name: 'Alice', + email: 'alice@prisma.io', + posts: { + create: { title: 'Hello World' }, + }, + profile: { + create: { bio: 'I like turtles' }, + }, + }, + }) + + const allUsers = await prisma.user.findMany({ + include: { + posts: true, + profile: true, + }, + }) + console.dir(allUsers, { depth: null }) + //add-end +} +``` + +This code creates a new `User` record together with new `Post` and `Profile` records using a [nested write](/orm/prisma-client/queries/relation-queries#nested-writes) query. The `User` record is connected to the two other ones via the `Post.author` ↔ `User.posts` and `Profile.user` ↔ `User.profile` [relation fields](/orm/prisma-schema/data-model/relations#relation-fields) respectively. + +Notice that you're passing the [`include`](/orm/prisma-client/queries/select-fields#include-relations-and-select-relation-fields) option to `findMany` which tells Prisma Client to include the `posts` and `profile` relations on the returned `User` objects. + +Run the code with this command: + +```terminal copy +npx ts-node index.ts +``` + +The output should look similar to this: + +```js no-lines +[ + { + email: 'alice@prisma.io', + id: 1, + name: 'Alice', + posts: [ + { + content: null, + createdAt: 2020-03-21T16:45:01.246Z, + updatedAt: 2020-03-21T16:45:01.246Z, + id: 1, + published: false, + title: 'Hello World', + authorId: 1, + } + ], + profile: { + bio: 'I like turtles', + id: 1, + userId: 1, + } + } +] +``` + +Also note that `allUsers` is _statically typed_ thanks to [Prisma Client's generated types](/orm/prisma-client/type-safety/operating-against-partial-structures-of-model-types). You can observe the type by hovering over the `allUsers` variable in your editor. It should be typed as follows: + +```ts no-lines +const allUsers: (User & { + posts: Post[] +})[] + +export type Post = { + id: number + title: string + content: string | null + published: boolean + authorId: number | null +} +``` + +The query added new records to the `User` and the `Post` tables: + +**User** + +| **id** | **email** | **name** | +| :----- | :------------------ | :-------- | +| `1` | `"alice@prisma.io"` | `"Alice"` | + +**Post** + +| **id** | **createdAt** | **updatedAt** | **title** | **content** | **published** | **authorId** | +| :----- | :------------------------- | :------------------------: | :-------------- | :---------- | :------------ | :----------- | +| `1` | `2020-03-21T16:45:01.246Z` | `2020-03-21T16:45:01.246Z` | `"Hello World"` | `null` | `false` | `1` | + +**Profile** + +| **id** | **bio** | **userId** | +| :----- | :----------------- | :--------- | +| `1` | `"I like turtles"` | `1` | + +> **Note**: The numbers in the `authorId` column on `Post` and `userId` column on `Profile` both reference the `id` column of the `User` table, meaning the `id` value `1` column therefore refers to the first (and only) `User` record in the database. + +Before moving on to the next section, you'll "publish" the `Post` record you just created using an `update` query. Adjust the `main` function as follows: + +```ts file=index.ts copy showLineNumbers +async function main() { + const post = await prisma.post.update({ + where: { id: 1 }, + data: { published: true }, + }) + console.log(post) +} +``` + +Now run the code using the same command as before: + +```terminal copy +npx ts-node index.ts +``` + +You will see the following output: + +```js no-lines +{ + id: 1, + title: 'Hello World', + content: null, + published: true, + authorId: 1 +} +``` + +The `Post` record with an `id` of `1` now got updated in the database: + +**Post** + +| **id** | **title** | **content** | **published** | **authorId** | +| :----- | :-------------- | :---------- | :------------ | :----------- | +| `1` | `"Hello World"` | `null` | `true` | `1` | + +Fantastic, you just wrote new data into your database for the first time using Prisma Client 🚀 diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/250-querying-the-database-typescript-sqlserver.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/250-querying-the-database-typescript-sqlserver.mdx new file mode 100644 index 0000000000..75e91c31d9 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/250-querying-the-database-typescript-sqlserver.mdx @@ -0,0 +1,220 @@ +--- +title: 'Querying the database' +metaTitle: 'Querying the database using TypeScript and SQL Server' +metaDescription: 'Write data to and query the database using TypeScript and SQL Server' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/next-steps +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases/querying-the-database- +--- + +## Write your first query with Prisma Client + +Now that you have generated [Prisma Client](/orm/prisma-client), you can start writing queries to read and write data in your database. For the purpose of this guide, you'll use a plain Node.js script to explore some basic features of Prisma Client. + +Create a new file named `index.ts` and add the following code to it: + +```js file=index.ts copy showLineNumbers +import { PrismaClient } from '@prisma/client' + +const prisma = new PrismaClient() + +async function main() { + // ... you will write your Prisma Client queries here +} + +main() + .then(async () => { + await prisma.$disconnect() + }) + .catch(async (e) => { + console.error(e) + await prisma.$disconnect() + process.exit(1) + }) +``` + +Here's a quick overview of the different parts of the code snippet: + +1. Import the `PrismaClient` constructor from the `@prisma/client` node module +1. Instantiate `PrismaClient` +1. Define an `async` function named `main` to send queries to the database +1. Call the `main` function +1. Close the database connections when the script terminates + +Inside the `main` function, add the following query to read all `User` records from the database and print the result: + +```ts file=index.ts highlight=3,4;add showLineNumbers +async function main() { + // ... you will write your Prisma Client queries here + //add-start + const allUsers = await prisma.user.findMany() + console.log(allUsers) + //add-end +} +``` + +Now run the code with this command: + +```terminal copy +npx ts-node index.ts +``` + +This should print an empty array because there are no `User` records in the database yet: + +```json no-lines +[] +``` + +## Write data into the database + +The `findMany` query you used in the previous section only _reads_ data from the database (although it was still empty). In this section, you'll learn how to write a query to _write_ new records into the `Post` and `User` tables. + +Adjust the `main` function to send a `create` query to the database: + +```ts file=index.ts highlight=2-21;add copy showLineNumbers +async function main() { + //add-start + await prisma.user.create({ + data: { + name: 'Alice', + email: 'alice@prisma.io', + posts: { + create: { title: 'Hello World' }, + }, + profile: { + create: { bio: 'I like turtles' }, + }, + }, + }) + + const allUsers = await prisma.user.findMany({ + include: { + posts: true, + profile: true, + }, + }) + console.dir(allUsers, { depth: null }) + //add-end +} +``` + +This code creates a new `User` record together with new `Post` and `Profile` records using a [nested write](/orm/prisma-client/queries/relation-queries#nested-writes) query. The `User` record is connected to the two other ones via the `Post.author` ↔ `User.posts` and `Profile.user` ↔ `User.profile` [relation fields](/orm/prisma-schema/data-model/relations#relation-fields) respectively. + +Notice that you're passing the [`include`](/orm/prisma-client/queries/select-fields#include-relations-and-select-relation-fields) option to `findMany` which tells Prisma Client to include the `posts` and `profile` relations on the returned `User` objects. + +Run the code with this command: + +```terminal copy +npx ts-node index.ts +``` + +The output should look similar to this: + +```js no-lines +[ + { + email: 'alice@prisma.io', + id: 1, + name: 'Alice', + posts: [ + { + content: null, + createdAt: 2020-03-21T16:45:01.246Z, + updatedAt: 2020-03-21T16:45:01.246Z, + id: 1, + published: false, + title: 'Hello World', + authorId: 1, + } + ], + profile: { + bio: 'I like turtles', + id: 1, + userId: 1, + } + } +] +``` + +Also note that `allUsers` is _statically typed_ thanks to [Prisma Client's generated types](/orm/prisma-client/type-safety/operating-against-partial-structures-of-model-types). You can observe the type by hovering over the `allUsers` variable in your editor. It should be typed as follows: + +```ts no-lines +const allUsers: (User & { + posts: Post[] +})[] + +export type Post = { + id: number + title: string + content: string | null + published: boolean + authorId: number | null +} +``` + +The query added new records to the `User` and the `Post` tables: + +**User** + +| **id** | **email** | **name** | +| :----- | :------------------ | :-------- | +| `1` | `"alice@prisma.io"` | `"Alice"` | + +**Post** + +| **id** | **createdAt** | **updatedAt** | **title** | **content** | **published** | **authorId** | +| :----- | :------------------------- | :------------------------: | :-------------- | :---------- | :------------ | :----------- | +| `1` | `2020-03-21T16:45:01.246Z` | `2020-03-21T16:45:01.246Z` | `"Hello World"` | `null` | `false` | `1` | + +**Profile** + +| **id** | **bio** | **userId** | +| :----- | :----------------- | :--------- | +| `1` | `"I like turtles"` | `1` | + +> **Note**: The numbers in the `authorId` column on `Post` and `userId` column on `Profile` both reference the `id` column of the `User` table, meaning the `id` value `1` column therefore refers to the first (and only) `User` record in the database. + +Before moving on to the next section, you'll "publish" the `Post` record you just created using an `update` query. Adjust the `main` function as follows: + +```ts file=index.ts copy showLineNumbers +async function main() { + const post = await prisma.post.update({ + where: { id: 1 }, + data: { published: true }, + }) + console.log(post) +} +``` + +Now run the code using the same command as before: + +```terminal copy +npx ts-node index.ts +``` + +You will see the following output: + +```js no-lines +{ + id: 1, + title: 'Hello World', + content: null, + published: true, + authorId: 1 +} +``` + +The `Post` record with an `id` of `1` now got updated in the database: + +**Post** + +| **id** | **title** | **content** | **published** | **authorId** | +| :----- | :-------------- | :---------- | :------------ | :----------- | +| `1` | `"Hello World"` | `null` | `true` | `1` | + +Fantastic, you just wrote new data into your database for the first time using Prisma Client 🚀 + + diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/250-querying-the-database.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/250-querying-the-database.mdx deleted file mode 100644 index 5b85245b3e..0000000000 --- a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/250-querying-the-database.mdx +++ /dev/null @@ -1,605 +0,0 @@ ---- -title: 'Querying the database' -metaTitle: 'Querying the database' -metaDescription: 'Write data to and query the database' -langSwitcher: ['typescript', 'node'] -dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] -toc: false ---- - -## Write your first query with Prisma Client - -Now that you have generated [Prisma Client](/orm/prisma-client), you can start writing queries to read and write data in your database. For the purpose of this guide, you'll use a plain Node.js script to explore some basic features of Prisma Client. - - - -Create a new file named `index.ts` and add the following code to it: - -```js file=index.ts copy -import { PrismaClient } from '@prisma/client' - -const prisma = new PrismaClient() - -async function main() { - // ... you will write your Prisma Client queries here -} - -main() - .then(async () => { - await prisma.$disconnect() - }) - .catch(async (e) => { - console.error(e) - await prisma.$disconnect() - process.exit(1) - }) -``` - - - - - -Create a new file named `index.js` and add the following code to it: - -```js file=index.js copy -const { PrismaClient } = require('@prisma/client') - -const prisma = new PrismaClient() - -async function main() { - // ... you will write your Prisma Client queries here -} - -main() - .then(async () => { - await prisma.$disconnect() - }) - .catch(async (e) => { - console.error(e) - await prisma.$disconnect() - process.exit(1) - }) -``` - - - -Here's a quick overview of the different parts of the code snippet: - -1. Import the `PrismaClient` constructor from the `@prisma/client` node module -1. Instantiate `PrismaClient` -1. Define an `async` function named `main` to send queries to the database -1. Call the `main` function -1. Close the database connections when the script terminates - -Inside the `main` function, add the following query to read all `User` records from the database and print the result: - - - -```ts file=index.ts highlight=3,4;add -async function main() { - // ... you will write your Prisma Client queries here - const allUsers = await prisma.user.findMany() - console.log(allUsers) -} -``` - - - - - -```js file=index.js highlight=2;delete|3,4;add -async function main() { - // ... you will write your Prisma Client queries here - const allUsers = await prisma.user.findMany() - console.log(allUsers) -} -``` - - - -Now run the code with this command: - - - -```terminal copy -npx ts-node index.ts -``` - - - - - -```terminal copy -node index.js -``` - - - -This should print an empty array because there are no `User` records in the database yet: - -```json no-lines -[] -``` - -## Write data into the database - -The `findMany` query you used in the previous section only _reads_ data from the database (although it was still empty). In this section, you'll learn how to write a query to _write_ new records into the `Post` and `User` tables. - -Adjust the `main` function to send a `create` query to the database: - - - -```ts file=index.ts highlight=2-21;add copy -async function main() { - await prisma.user.create({ - data: { - name: 'Alice', - email: 'alice@prisma.io', - posts: { - create: { title: 'Hello World' }, - }, - profile: { - create: { bio: 'I like turtles' }, - }, - }, - }) - - const allUsers = await prisma.user.findMany({ - include: { - posts: true, - profile: true, - }, - }) - console.dir(allUsers, { depth: null }) -} -``` - - - - - -```js file=index.js highlight=2-21;add copy -async function main() { - await prisma.user.create({ - data: { - name: 'Alice', - email: 'alice@prisma.io', - posts: { - create: { title: 'Hello World' }, - }, - profile: { - create: { bio: 'I like turtles' }, - }, - }, - }) - - const allUsers = await prisma.user.findMany({ - include: { - posts: true, - profile: true, - }, - }) - console.dir(allUsers, { depth: null }) -} -``` - - - -This code creates a new `User` record together with new `Post` and `Profile` records using a [nested write](/orm/prisma-client/queries/relation-queries#nested-writes) query. The `User` record is connected to the two other ones via the `Post.author` ↔ `User.posts` and `Profile.user` ↔ `User.profile` [relation fields](/orm/prisma-schema/data-model/relations#relation-fields) respectively. - -Notice that you're passing the [`include`](/orm/prisma-client/queries/select-fields#include-relations-and-select-relation-fields) option to `findMany` which tells Prisma Client to include the `posts` and `profile` relations on the returned `User` objects. - -Run the code with this command: - - - -```terminal copy -npx ts-node index.ts -``` - - - - - -```terminal copy -node index.js -``` - - - -The output should look similar to this: - -```js no-lines -[ - { - email: 'alice@prisma.io', - id: 1, - name: 'Alice', - posts: [ - { - content: null, - createdAt: 2020-03-21T16:45:01.246Z, - updatedAt: 2020-03-21T16:45:01.246Z, - id: 1, - published: false, - title: 'Hello World', - authorId: 1, - } - ], - profile: { - bio: 'I like turtles', - id: 1, - userId: 1, - } - } -] -``` - - - -Also note that `allUsers` is _statically typed_ thanks to [Prisma Client's generated types](/orm/prisma-client/type-safety/operating-against-partial-structures-of-model-types). You can observe the type by hovering over the `allUsers` variable in your editor. It should be typed as follows: - -```ts no-lines -const allUsers: (User & { - posts: Post[] -})[] - -export type Post = { - id: number - title: string - content: string | null - published: boolean - authorId: number | null -} -``` - - - -The query added new records to the `User` and the `Post` tables: - -**User** - -| **id** | **email** | **name** | -| :----- | :------------------ | :-------- | -| `1` | `"alice@prisma.io"` | `"Alice"` | - -**Post** - -| **id** | **createdAt** | **updatedAt** | **title** | **content** | **published** | **authorId** | -| :----- | :------------------------- | :------------------------: | :-------------- | :---------- | :------------ | :----------- | -| `1` | `2020-03-21T16:45:01.246Z` | `2020-03-21T16:45:01.246Z` | `"Hello World"` | `null` | `false` | `1` | - -**Profile** - -| **id** | **bio** | **userId** | -| :----- | :----------------- | :--------- | -| `1` | `"I like turtles"` | `1` | - -> **Note**: The numbers in the `authorId` column on `Post` and `userId` column on `Profile` both reference the `id` column of the `User` table, meaning the `id` value `1` column therefore refers to the first (and only) `User` record in the database. - -Before moving on to the next section, you'll "publish" the `Post` record you just created using an `update` query. Adjust the `main` function as follows: - - - -```ts file=index.ts copy -async function main() { - const post = await prisma.post.update({ - where: { id: 1 }, - data: { published: true }, - }) - console.log(post) -} -``` - - - - - -```js file=index.js copy -async function main() { - const post = await prisma.post.update({ - where: { id: 1 }, - data: { published: true }, - }) - console.log(post) -} -``` - - - - - -Now run the code using the same command as before: - -```terminal copy -npx ts-node index.ts -``` - - - - - -Now run the code using the same command as before: - -```terminal copy -node index.js -``` - - - -You will see the following output: - -```js no-lines -{ - id: 1, - title: 'Hello World', - content: null, - published: true, - authorId: 1 -} -``` - -The `Post` record with an `id` of `1` now got updated in the database: - -**Post** - -| **id** | **title** | **content** | **published** | **authorId** | -| :----- | :-------------- | :---------- | :------------ | :----------- | -| `1` | `"Hello World"` | `null` | `true` | `1` | - -Fantastic, you just wrote new data into your database for the first time using Prisma Client 🚀 - - - - - - - Install Prisma Client - - - - Next Steps - - - - - - - - - - - - Install Prisma Client - - - - Next Steps - - - - - - - - - - - - Install Prisma Client - - - - Next Steps - - - - - - - - - - - - Install Prisma Client - - - - Next Steps - - - - - - - - - - - - Install Prisma Client - - - - Next Steps - - - - - - - - - - - - Install Prisma Client - - - - Next Steps - - - - - - - - - - - - Install Prisma Client - - - - Next Steps - - - - - - - - - - - - Install Prisma Client - - - - Next Steps - - - - - - - - - - - - Install Prisma Client - - - - Next Steps - - - - - - - - - - - - Install Prisma Client - - - - Next Steps - - - - - diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/300-next-steps.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/300-next-steps.mdx index 41d3ef2c46..2973123b5d 100644 --- a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/300-next-steps.mdx +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/300-next-steps.mdx @@ -1,27 +1,24 @@ --- title: 'Next steps' -metaTitle: 'Next steps' -metaDescription: 'Next steps to take now that you have successfully added Prisma to your project' -langSwitcher: ['typescript', 'node'] -dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] -toc: false +metaTitle: 'Next steps after setting up Prisma ORM with your relational database' +metaDescription: 'Next steps to take now that you have successfully added Prisma ORM to your new TypeScript or JavaScript project' +hide_table_of_contents: true --- - -## Next steps - + This section lists a number of potential next steps you can now take from here. Feel free to explore these or read the [Introduction](/orm/overview/introduction/what-is-prisma) page to get a high-level overview of Prisma ORM. ### Continue exploring the Prisma Client API You can send a variety of queries with the Prisma Client API. Check out the [API reference](/orm/prisma-client) and use your existing database setup from this guide to try them out. - +:::tip You can use your editor's auto-completion feature to learn about the different API calls and the arguments it takes. Auto-completion is commonly invoked by hitting CTRL+SPACE on your keyboard. - +::: -
Expand for more Prisma Client API examples +
+Expand for more Prisma Client API examples Here are a few suggestions for a number of more queries you can send with Prisma Client: @@ -77,9 +74,9 @@ Prisma Studio is a visual editor for the data in your database. Run `npx prisma The [`prisma-examples`](https://github.com/prisma/prisma-examples/) repository contains a number of ready-to-run examples: -, ]}> + - + | Demo | Stack | Description | | :------------------------------------------------------------------------------------------------------------------ | :----------- | --------------------------------------------------------------------------------------------------- | @@ -89,9 +86,9 @@ The [`prisma-examples`](https://github.com/prisma/prisma-examples/) repository c | [`rest-express`](https://github.com/prisma/prisma-examples/tree/latest/typescript/rest-express) | Backend only | Simple REST API with Express.JS | | [`grpc`](https://github.com/prisma/prisma-examples/tree/latest/typescript/grpc) | Backend only | Simple gRPC API | - + - + | Demo | Stack | Description | | :---------------------------------------------------------------------------------------------------------------- | :----------- | :-------------------------------------------------------------------------------------------------- | @@ -100,6 +97,6 @@ The [`prisma-examples`](https://github.com/prisma/prisma-examples/) repository c | [`rest-express`](https://github.com/prisma/prisma-examples/tree/latest/javascript/rest-express) | Backend only | Simple REST API with Express.JS | | [`grpc`](https://github.com/prisma/prisma-examples/tree/latest/javascript/grpc) | Backend only | Simple gRPC API | - + diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/index.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/index.mdx deleted file mode 100644 index b6761c67f5..0000000000 --- a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases/index.mdx +++ /dev/null @@ -1,300 +0,0 @@ ---- -title: 'Relational databases' -metaTitle: 'Start from scratch with relational databases (15 min)' -metaDescription: 'Learn how to create a new Node.js or TypeScript project from scratch by connecting Prisma to your relational database and generating a Prisma Client for database access.' -duration: '15 min' -toc: false -langSwitcher: ['typescript', 'node'] -dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] ---- - - - -Learn how to create a new Node.js or TypeScript project from scratch by connecting Prisma ORM to your database and generating a Prisma Client for database access. The following tutorial introduces you to the [Prisma CLI](/orm/tools/prisma-cli), [Prisma Client](/orm/prisma-client), and [Prisma Migrate](/orm/prisma-migrate). - - - -## Prerequisites - -In order to successfully complete this guide, you need: - - - -- [Node.js](https://nodejs.org/en/) installed on your machine -- a [PostgreSQL](https://www.postgresql.org/) database server running - - - - - -- [Node.js](https://nodejs.org/en/) installed on your machine -- a [CockroachDB](https://www.cockroachlabs.com/) database server running - - - - - -- [Node.js](https://nodejs.org/en/) installed on your machine -- a [MySQL](https://www.mysql.com/) database server running - - - - - -- [Node.js](https://nodejs.org/en/) installed on your machine -- a [PlanetScale](https://www.planetscale.com/) database server running - - - -This tutorial will also assume that you can push to the `main` branch of your database. Do not do this if your `main` branch has been promoted to production. - - - - - - - -- [Node.js](https://nodejs.org/en/) installed on your machine -- A [Microsoft SQL Server](https://docs.microsoft.com/en-us/sql/?view=sql-server-ver15) database - - [Microsoft SQL Server on Linux for Docker](/orm/overview/databases/sql-server/sql-server-docker) - - [Microsoft SQL Server on Windows (local)](/orm/overview/databases/sql-server/sql-server-local) - - - -> See [System requirements](/orm/reference/system-requirements) for exact version requirements. - -Make sure you have your database [connection URL](/orm/reference/connection-urls) at hand. If you don't have a database server running and just want to explore Prisma ORM, check out the [Quickstart](/getting-started/quickstart). - -## Create project setup - -As a first step, create a project directory and navigate into it: - -```terminal copy -mkdir hello-prisma -cd hello-prisma -``` - - - -Next, initialize a TypeScript project and add the Prisma CLI as a development dependency to it: - -```terminal copy -npm init -y -npm install prisma typescript ts-node @types/node --save-dev -``` - -This creates a `package.json` with an initial setup for your TypeScript app. - -Next, initialize TypeScript: - -```terminal copy -npx tsc --init -``` - - - - - -Next, initialize a Node.js project and add the Prisma CLI as a development dependency to it: - -```terminal copy -npm init -y -npm install prisma --save-dev -``` - -This creates a `package.json` with an initial setup for a Node.js app. - - - - - -See [installation instructions](/orm/tools/prisma-cli#installation) to learn how to install Prisma using a different package manager. - - - -You can now invoke the Prisma CLI by prefixing it with `npx`: - -```terminal -npx prisma -``` - -Next, set up your Prisma ORM project by creating your [Prisma schema](/orm/prisma-schema) file with the following command: - -```terminal copy -npx prisma init -``` - -This command does two things: - -- creates a new directory called `prisma` that contains a file called `schema.prisma`, which contains the Prisma schema with your database connection variable and schema models -- creates the [`.env` file](/orm/more/development-environment/environment-variables/env-files) in the root directory of the project, which is used for defining environment variables (such as your database connection) - - - - - - - Connect your database - - - - - - - - - - - - Connect your database - - - - - - - - - - - - Connect your database - - - - - - - - - - - - Connect your database - - - - - - - - - - - - Connect your database - - - - - - - - - - - - Connect your database - - - - - - - - - - - - Connect your database - - - - - - - - - - - - Connect your database - - - - - - - - - - - - Connect your database - - - - - - - - - - - - Connect your database - - - - - diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb-node-mongodb.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb-node-mongodb.mdx new file mode 100644 index 0000000000..71694ed74f --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb-node-mongodb.mdx @@ -0,0 +1,70 @@ +--- +title: 'MongoDB' +metaTitle: 'Start from scratch with Prisma ORM using MongoDB and JavaScript (15 min)' +metaDescription: 'Learn how to create a new Node.js project from scratch by connecting Prisma ORM to your MongoDB database and generating a Prisma Client for database access.' +hide_table_of_contents: true +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['mongodb'] +sidebar_custom_props: { badge: '15 min' } +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/start-from-scratch/mongodb/connect-your-database-node-mongodb +slugSwitch: /getting-started/setup-prisma/start-from-scratch/mongodb- +--- + + + +Learn how to create a new Node.js or TypeScript project from scratch by connecting Prisma ORM to your MongoDB database and generating a Prisma Client for database access. The following tutorial introduces you to the [Prisma CLI](/orm/tools/prisma-cli) and [Prisma Client](/orm/prisma-client). + + + +## Prerequisites + +In order to successfully complete this guide, you need: + +- [Node.js](https://nodejs.org/en/) installed on your machine +- Access to a MongoDB 4.2+ server with a replica set deployment. We recommend using [MongoDB Atlas](https://www.mongodb.com/cloud/atlas). + + + + The MongoDB database connector uses transactions to support nested writes. Transactions **require** a [replica set](https://docs.mongodb.com/manual/tutorial/deploy-replica-set/) deployment. The easiest way to deploy a replica set is with [Atlas](https://docs.atlas.mongodb.com/getting-started/). It's free to get started. + + + +Make sure you have your database [connection URL](/orm/reference/connection-urls) at hand. If you don't have a database server running and just want to explore Prisma ORM, check out the [Quickstart](/getting-started/quickstart). + +> See [System requirements](/orm/reference/system-requirements) for exact version requirements. + +## Create project setup + +As a first step, create a project directory and navigate into it: + +```terminal copy +mkdir hello-prisma +cd hello-prisma +``` + +Next, initialize a Node.js project and add the Prisma CLI as a development dependency to it: + +```terminal copy +npm init -y +npm install prisma --save-dev +``` + +This creates a `package.json` with an initial setup for a Node.js app. + +You can now invoke the Prisma CLI by prefixing it with `npx`: + +```terminal +npx prisma +``` + +Next, set up your Prisma ORM project by creating your [Prisma schema](/orm/prisma-schema) file with the following command: + +```terminal copy +npx prisma init +``` + +This command does two things: + +- creates a new directory called `prisma` that contains a file called `schema.prisma`, which contains the Prisma schema with your database connection variable and schema models +- creates the [`.env` file](/orm/more/development-environment/environment-variables/env-files) in the root directory of the project, which is used for defining environment variables (such as your database connection) diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb/index.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb-typescript-mongodb.mdx similarity index 68% rename from content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb/index.mdx rename to content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb-typescript-mongodb.mdx index bf36122cbe..e7bf93815c 100644 --- a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb/index.mdx +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb-typescript-mongodb.mdx @@ -1,11 +1,13 @@ --- title: 'MongoDB' -metaTitle: 'Start from scratch with MongoDB (15 min)' -metaDescription: 'Learn how to create a new Node.js or TypeScript project from scratch by connecting Prisma to your MongoDB database and generating a Prisma Client for database access.' -duration: '15 min' -toc: false +metaTitle: 'Start from scratch with Prisma ORM using MongoDB and TypeScript (15 min)' +metaDescription: 'Learn how to create a new TypeScript project from scratch by connecting Prisma ORM to your MongoDB database and generating a Prisma Client for database access.' +hide_table_of_contents: true langSwitcher: ['typescript', 'node'] dbSwitcher: ['mongodb'] +sidebar_custom_props: { badge: '15 min' } +pagination_next: getting-started/setup-prisma/start-from-scratch/mongodb/connect-your-database-typescript-mongodb +slugSwitch: /getting-started/setup-prisma/start-from-scratch/mongodb- --- @@ -40,8 +42,6 @@ mkdir hello-prisma cd hello-prisma ``` - - Next, initialize a TypeScript project and add the Prisma CLI as a development dependency to it: ```terminal copy @@ -57,21 +57,6 @@ Next, initialize TypeScript: npx tsc --init ``` - - - - -Next, initialize a Node.js project and add the Prisma CLI as a development dependency to it: - -```terminal copy -npm init -y -npm install prisma --save-dev -``` - -This creates a `package.json` with an initial setup for a Node.js app. - - - You can now invoke the Prisma CLI by prefixing it with `npx`: ```terminal @@ -88,37 +73,3 @@ This command does two things: - creates a new directory called `prisma` that contains a file called `schema.prisma`, which contains the Prisma schema with your database connection variable and schema models - creates the [`.env` file](/orm/more/development-environment/environment-variables/env-files) in the root directory of the project, which is used for defining environment variables (such as your database connection) - - - - - - - Connect your database - - - - - - - - - - - - Connect your database - - - - - diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb/100-connect-your-database.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb/100-connect-your-database-node-mongodb.mdx similarity index 59% rename from content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb/100-connect-your-database.mdx rename to content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb/100-connect-your-database-node-mongodb.mdx index 9edea9c598..41bb5291fd 100644 --- a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb/100-connect-your-database.mdx +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb/100-connect-your-database-node-mongodb.mdx @@ -1,17 +1,19 @@ --- title: 'Connect your database (MongoDB)' -metaTitle: 'Connect your database' -metaDescription: 'Connect your database to your project' +metaTitle: 'Connect your database using JavaScript and MongoDB' +metaDescription: 'Connect your database to your project using JavaScript and MongoDB' langSwitcher: ['typescript', 'node'] +sidebar_class_name: hidden-sidebar dbSwitcher: ['mongodb'] +hide_table_of_contents: true toc: false +pagination_next: getting-started/setup-prisma/start-from-scratch/mongodb/creating-the-prisma-schema-node-mongodb +slugSwitch: /getting-started/setup-prisma/start-from-scratch/mongodb/connect-your-database- --- -## Connect your database - To connect your database, you need to set the `url` field of the `datasource` block in your Prisma schema to your database [connection URL](/orm/reference/connection-urls): -```prisma file=prisma/schema.prisma +```prisma file=prisma/schema.prisma showLineNumbers datasource db { provider = "mongodb" url = env("DATABASE_URL") @@ -20,7 +22,7 @@ datasource db { In this case, the `url` is [set via an environment variable](/orm/more/development-environment/environment-variables) which is defined in `.env` (the example uses a [MongoDB Atlas](https://www.mongodb.com/cloud/atlas) URL): -```bash file=.env +```bash file=.env showLineNumbers DATABASE_URL="mongodb+srv://test:test@cluster0.ns1yp.mongodb.net/myFirstDatabase" ``` @@ -39,55 +41,3 @@ Here's a short explanation of each component: - `HOST`: The host where a [`mongod`](https://docs.mongodb.com/manual/reference/program/mongod/#mongodb-binary-bin.mongod) (or [`mongos`](https://docs.mongodb.com/manual/reference/program/mongos/#mongodb-binary-bin.mongos)) instance is running - `PORT`: The port where your database server is running (typically `27017` for MongoDB) - `DATABASE`: The name of the database - - - - - - - Installation - - - - Creating the Prisma schema - - - - - - - - - - - - Installation - - - - Creating the Prisma schema - - - - - diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb/100-connect-your-database-typescript-mongodb.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb/100-connect-your-database-typescript-mongodb.mdx new file mode 100644 index 0000000000..9e18212dd8 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb/100-connect-your-database-typescript-mongodb.mdx @@ -0,0 +1,41 @@ +--- +title: 'Connect your database (MongoDB)' +metaTitle: 'Connect your database using TypeScript and MongoDB' +metaDescription: 'Connect your database to your project using TypeScript and MongoDB' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['mongodb'] +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/start-from-scratch/mongodb/creating-the-prisma-schema-typescript-mongodb +slugSwitch: /getting-started/setup-prisma/start-from-scratch/mongodb/connect-your-database- +--- + +To connect your database, you need to set the `url` field of the `datasource` block in your Prisma schema to your database [connection URL](/orm/reference/connection-urls): + +```prisma file=prisma/schema.prisma showLineNumbers +datasource db { + provider = "mongodb" + url = env("DATABASE_URL") +} +``` + +In this case, the `url` is [set via an environment variable](/orm/more/development-environment/environment-variables) which is defined in `.env` (the example uses a [MongoDB Atlas](https://www.mongodb.com/cloud/atlas) URL): + +```bash file=.env showLineNumbers +DATABASE_URL="mongodb+srv://test:test@cluster0.ns1yp.mongodb.net/myFirstDatabase" +``` + +You now need to adjust the connection URL to point to your own database. + +The [format of the connection URL](/orm/reference/connection-urls) for your database depends on the database you use. For MongoDB, it looks as follows (the parts spelled all-uppercased are _placeholders_ for your specific connection details): + +```no-lines +mongodb://USERNAME:PASSWORD@HOST:PORT/DATABASE +``` + +Here's a short explanation of each component: + +- `USERNAME`: The name of your database user +- `PASSWORD`: The password for your database user +- `HOST`: The host where a [`mongod`](https://docs.mongodb.com/manual/reference/program/mongod/#mongodb-binary-bin.mongod) (or [`mongos`](https://docs.mongodb.com/manual/reference/program/mongos/#mongodb-binary-bin.mongos)) instance is running +- `PORT`: The port where your database server is running (typically `27017` for MongoDB) +- `DATABASE`: The name of the database diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb/125-creating-the-prisma-schema.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb/125-creating-the-prisma-schema-node-mongodb.mdx similarity index 59% rename from content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb/125-creating-the-prisma-schema.mdx rename to content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb/125-creating-the-prisma-schema-node-mongodb.mdx index ece8f719b7..e6dd2ce48e 100644 --- a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb/125-creating-the-prisma-schema.mdx +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb/125-creating-the-prisma-schema-node-mongodb.mdx @@ -1,17 +1,21 @@ --- title: 'Creating the Prisma schema' -metaTitle: 'Creating the Prisma schema' -metaDescription: 'Update the Prisma schema for MongoDB' +metaTitle: 'Creating the Prisma schema using JavaScript and MongoDB' +metaDescription: 'Update the Prisma schema for MongoDB with JavaScript' langSwitcher: ['typescript', 'node'] dbSwitcher: ['mongodb'] -toc: false +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/start-from-scratch/mongodb/install-prisma-client-node-mongodb +slugSwitch: /getting-started/setup-prisma/start-from-scratch/mongodb/creating-the-prisma-schema- --- + ## Update the Prisma schema Open the `prisma/schema.prisma` file and replace the default contents with the following: -```prisma file=prisma/schema.prisma +```prisma file=prisma/schema.prisma showLineNumbers datasource db { provider = "mongodb" url = env("DATABASE_URL") @@ -60,55 +64,3 @@ There are also a number of subtle differences in how the schema is setup when co For example, the underlying `ID` field name is always `_id` and must be mapped with `@map("_id")`. For more information check out the [MongoDB schema reference](/orm/reference/prisma-schema-reference#mongodb-2). - - - - - - - Connect your database - - - - Install Prisma Client - - - - - - - - - - - - Connect your database - - - - Install Prisma Client - - - - - diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb/125-creating-the-prisma-schema-typescript-mongodb.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb/125-creating-the-prisma-schema-typescript-mongodb.mdx new file mode 100644 index 0000000000..c94a8d0ce1 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb/125-creating-the-prisma-schema-typescript-mongodb.mdx @@ -0,0 +1,65 @@ +--- +title: 'Creating the Prisma schema' +metaTitle: 'Creating the Prisma schema using TypeScript and MongoDB' +metaDescription: 'Update the Prisma schema for MongoDB with TypeScript' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['mongodb'] +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/start-from-scratch/mongodb/install-prisma-client-typescript-mongodb +slugSwitch: /getting-started/setup-prisma/start-from-scratch/mongodb/creating-the-prisma-schema- +--- + +## Update the Prisma schema + +Open the `prisma/schema.prisma` file and replace the default contents with the following: + +```prisma file=prisma/schema.prisma showLineNumbers +datasource db { + provider = "mongodb" + url = env("DATABASE_URL") +} + +generator client { + provider = "prisma-client-js" +} + +model Post { + id String @id @default(auto()) @map("_id") @db.ObjectId + slug String @unique + title String + body String + author User @relation(fields: [authorId], references: [id]) + authorId String @db.ObjectId + comments Comment[] +} + +model User { + id String @id @default(auto()) @map("_id") @db.ObjectId + email String @unique + name String? + address Address? + posts Post[] +} + +model Comment { + id String @id @default(auto()) @map("_id") @db.ObjectId + comment String + post Post @relation(fields: [postId], references: [id]) + postId String @db.ObjectId +} + +// Address is an embedded document +type Address { + street String + city String + state String + zip String +} +``` + +There are also a number of subtle differences in how the schema is setup when compared to relational databases like PostgreSQL. + +For example, the underlying `ID` field name is always `_id` and must be mapped with `@map("_id")`. + +For more information check out the [MongoDB schema reference](/orm/reference/prisma-schema-reference#mongodb-2). + diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb/200-install-prisma-client-node-mongodb.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb/200-install-prisma-client-node-mongodb.mdx new file mode 100644 index 0000000000..2ce3219ec9 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb/200-install-prisma-client-node-mongodb.mdx @@ -0,0 +1,25 @@ +--- +title: 'Install Prisma Client' +metaTitle: 'Install Prisma Client: JavaScript and MongoDB' +metaDescription: 'Install and generate Prisma Client in your project using JavaScript and MongoDB' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['mongodb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/start-from-scratch/mongodb/querying-the-database-node-mongodb +slugSwitch: /getting-started/setup-prisma/start-from-scratch/mongodb/install-prisma-client- +--- + +## Install and generate Prisma Client + +To get started with Prisma Client, you need to install the `@prisma/client` package: + +```terminal copy +npm install @prisma/client +``` + +The install command invokes `prisma generate` for you which reads your Prisma schema and generates a version of Prisma Client that is _tailored_ to your models. + +![Install and generate Prisma Client](/img/getting-started/prisma-client-install-and-generate.png) + +Whenever you update your Prisma schema, you will need to run the `prisma db push` command to create new indexes and regenerate Prisma Client. diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb/200-install-prisma-client-typescript-mongodb.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb/200-install-prisma-client-typescript-mongodb.mdx new file mode 100644 index 0000000000..51c398bb28 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb/200-install-prisma-client-typescript-mongodb.mdx @@ -0,0 +1,24 @@ +--- +title: 'Install Prisma Client' +metaTitle: 'Install Prisma Client: TypeScript and MongoDB' +metaDescription: 'Install and generate Prisma Client in your project using TypeScript and MongoDB' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['mongodb'] +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/start-from-scratch/mongodb/querying-the-database-typescript-mongodb +slugSwitch: /getting-started/setup-prisma/start-from-scratch/mongodb/install-prisma-client- +--- + +## Install and generate Prisma Client + +To get started with Prisma Client, you need to install the `@prisma/client` package: + +```terminal copy +npm install @prisma/client +``` + +The install command invokes `prisma generate` for you which reads your Prisma schema and generates a version of Prisma Client that is _tailored_ to your models. + +![Install and generate Prisma Client](/img/getting-started/prisma-client-install-and-generate.png) + +Whenever you update your Prisma schema, you will need to run the `prisma db push` command to create new indexes and regenerate Prisma Client. diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb/200-install-prisma-client.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb/200-install-prisma-client.mdx deleted file mode 100644 index e8e1ef9bf6..0000000000 --- a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb/200-install-prisma-client.mdx +++ /dev/null @@ -1,74 +0,0 @@ ---- -title: 'Install Prisma Client' -metaTitle: 'Install Prisma Client' -metaDescription: 'Install and generate Prisma Client in your project' -langSwitcher: ['typescript', 'node'] -dbSwitcher: ['mongodb'] -toc: false ---- - -## Install and generate Prisma Client - -To get started with Prisma Client, you need to install the `@prisma/client` package: - -```terminal copy -npm install @prisma/client -``` - -The install command invokes `prisma generate` for you which reads your Prisma schema and generates a version of Prisma Client that is _tailored_ to your models. - -![Install and generate Prisma Client](./../../../images/prisma-client-install-and-generate.png) - -Whenever you update your Prisma schema, you will need to run the `prisma db push` command to create new indexes and regenerate Prisma Client. - - - - - - - Creating the Prisma schema - - - - Querying the database - - - - - - - - - - - - Creating the Prisma schema - - - - Querying the database - - - - - diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb/250-querying-the-database-node-mongodb.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb/250-querying-the-database-node-mongodb.mdx new file mode 100644 index 0000000000..203c96c2a7 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb/250-querying-the-database-node-mongodb.mdx @@ -0,0 +1,215 @@ +--- +title: 'Querying the database' +metaTitle: 'Querying the database with JavaScript and MongoDB' +metaDescription: 'Write data to and query the database using JavaScript and MongoDB' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['mongodb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/start-from-scratch/mongodb/next-steps +slugSwitch: /getting-started/setup-prisma/start-from-scratch/mongodb/querying-the-database- +--- + +## Write your first query with Prisma Client + +Now that you have generated Prisma Client, you can start writing queries to read and write data in your database. For the purpose of this guide, you'll use a plain Node.js script to explore some basic features of Prisma Client. + +Create a new file named `index.js` and add the following code to it: + +```js file=index.js copy showLineNumbers +const { PrismaClient } = require('@prisma/client') + +const prisma = new PrismaClient() + +async function main() { + // ... you will write your Prisma Client queries here +} + +main() + .then(async () => { + await prisma.$disconnect() + }) + .catch(async (e) => { + console.error(e) + await prisma.$disconnect() + process.exit(1) + }) +``` + +Here's a quick overview of the different parts of the code snippet: + +1. Import the `PrismaClient` constructor from the `@prisma/client` node module +1. Instantiate `PrismaClient` +1. Define an `async` function named `main` to send queries to the database +1. Connect to the database +1. Call the `main` function +1. Close the database connections when the script terminates + +Inside the `main` function, add the following query to read all `User` records from the database and print the result: + +```js file=index.js +async function main() { + //delete-next-line +- // ... you will write your Prisma Client queries here +//add-start ++ const allUsers = await prisma.user.findMany() ++ console.log(allUsers) +//add-end +} +``` + +Now run the code with this command: + +```terminal copy +node index.js +``` + +This should print an empty array because there are no `User` records in the database yet: + +```json no-lines +[] +``` + +## Write data into the database + +The `findMany` query you used in the previous section only _reads_ data from the database (although it was still empty). In this section, you'll learn how to write a query to _write_ new records into the `Post`, `User` and `Comment` tables. + +Adjust the `main` function to send a `create` query to the database: + +```js file=index.js highlight=2-21;add copy showLineNumbers +async function main() { + //add-start + await prisma.user.create({ + data: { + name: 'Rich', + email: 'hello@prisma.com', + posts: { + create: { + title: 'My first post', + body: 'Lots of really interesting stuff', + slug: 'my-first-post', + }, + }, + }, + }) + + const allUsers = await prisma.user.findMany({ + include: { + posts: true, + }, + }) + console.dir(allUsers, { depth: null }) + //add-end +} +``` + +This code creates a new `User` record together with a new `Post` using a [nested write](/orm/prisma-client/queries/relation-queries#nested-writes) query. The `User` record is connected to the other one via the `Post.author` ↔ `User.posts` [relation fields](/orm/prisma-schema/data-model/relations#relation-fields) respectively. + +Notice that you're passing the [`include`](/orm/prisma-client/queries/select-fields#include-relations-and-select-relation-fields) option to `findMany` which tells Prisma Client to include the `posts` relations on the returned `User` objects. + +Run the code with this command: + +```terminal copy +node index.js +``` + +The output should look similar to this: + +```json no-lines +[ + { + id: '60cc9b0e001e3bfd00a6eddf', + email: 'hello@prisma.com', + name: 'Rich', + address: null, + posts: [ + { + id: '60cc9bad005059d6007f45dd', + slug: 'my-first-post', + title: 'My first post', + body: 'Lots of really interesting stuff', + userId: '60cc9b0e001e3bfd00a6eddf', + }, + ], + }, +] +``` + +The query added new records to the `User` and the `Post` tables: + +**User** + +| **id** | **email** | **name** | +| :------------------------- | :------------------- | :------- | +| `60cc9b0e001e3bfd00a6eddf` | `"hello@prisma.com"` | `"Rich"` | + +**Post** + +| **id** | **createdAt** | **title** | **content** | **published** | **authorId** | +| :------------------------- | :------------------------- | :---------------- | :--------------------------------- | :------------ | :------------------------- | +| `60cc9bad005059d6007f45dd` | `2020-03-21T16:45:01.246Z` | `"My first post"` | `Lots of really interesting stuff` | `false` | `60cc9b0e001e3bfd00a6eddf` | + +> **Note**: The unique IDs in the `authorId` column on `Post` reference the `id` column of the `User` table, meaning the `id` value `60cc9b0e001e3bfd00a6eddf` column therefore refers to the first (and only) `User` record in the database. + +Before moving on to the next section, you'll add a couple of comments to the `Post` record you just created using an `update` query. Adjust the `main` function as follows: + +```js file=index.js copy showLineNumbers +async function main() { + await prisma.post.update({ + where: { + slug: 'my-first-post', + }, + data: { + comments: { + createMany: { + data: [ + { comment: 'Great post!' }, + { comment: "Can't wait to read more!" }, + ], + }, + }, + }, + }) + const posts = await prisma.post.findMany({ + include: { + comments: true, + }, + }) + + console.dir(posts, { depth: Infinity }) +} +``` + +Now run the code using the same command as before: + +```terminal copy +node index.js +``` + +You will see the following output: + +```json no-lines +[ + { + id: '60cc9bad005059d6007f45dd', + slug: 'my-first-post', + title: 'My first post', + body: 'Lots of really interesting stuff', + userId: '60cc9b0e001e3bfd00a6eddf', + comments: [ + { + id: '60cca420008a21d800578793', + postId: '60cca40300af8bf000f6ca99', + comment: 'Great post!', + }, + { + id: '60cca420008a21d800578794', + postId: '60cca40300af8bf000f6ca99', + comment: "Can't wait to try this!", + }, + ], + }, +] +``` + +Fantastic, you just wrote new data into your database for the first time using Prisma Client 🚀 diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb/250-querying-the-database.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb/250-querying-the-database-typescript-mongodb.mdx similarity index 63% rename from content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb/250-querying-the-database.mdx rename to content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb/250-querying-the-database-typescript-mongodb.mdx index d650cc2032..813fa18b5b 100644 --- a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb/250-querying-the-database.mdx +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb/250-querying-the-database-typescript-mongodb.mdx @@ -1,21 +1,21 @@ --- title: 'Querying the database' -metaTitle: 'Querying the database' -metaDescription: 'Write data to and query the database' +metaTitle: 'Querying the database with TypeScript and MongoDB' +metaDescription: 'Write data to and query the database using TypeScript and MongoDB' langSwitcher: ['typescript', 'node'] dbSwitcher: ['mongodb'] -toc: false +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/start-from-scratch/mongodb/next-steps +slugSwitch: /getting-started/setup-prisma/start-from-scratch/mongodb/querying-the-database- --- - + ## Write your first query with Prisma Client Now that you have generated Prisma Client, you can start writing queries to read and write data in your database. For the purpose of this guide, you'll use a plain Node.js script to explore some basic features of Prisma Client. - - Create a new file named `index.ts` and add the following code to it: -```js file=index.ts copy +```js file=index.ts copy showLineNumbers import { PrismaClient } from '@prisma/client' const prisma = new PrismaClient() @@ -34,34 +34,6 @@ main() }) ``` - - - - -Create a new file named `index.js` and add the following code to it: - -```js file=index.js copy -const { PrismaClient } = require('@prisma/client') - -const prisma = new PrismaClient() - -async function main() { - // ... you will write your Prisma Client queries here -} - -main() - .then(async () => { - await prisma.$disconnect() - }) - .catch(async (e) => { - console.error(e) - await prisma.$disconnect() - process.exit(1) - }) -``` - - - Here's a quick overview of the different parts of the code snippet: 1. Import the `PrismaClient` constructor from the `@prisma/client` node module @@ -73,48 +45,22 @@ Here's a quick overview of the different parts of the code snippet: Inside the `main` function, add the following query to read all `User` records from the database and print the result: - - -```ts file=index.ts +```ts file=index.ts showLineNumbers async function main() { // ... you will write your Prisma Client queries here +//add-start + const allUsers = await prisma.user.findMany() + console.log(allUsers) +//add-end } ``` - - - - -```js file=index.js -async function main() { -- // ... you will write your Prisma Client queries here -+ const allUsers = await prisma.user.findMany() -+ console.log(allUsers) -} -``` - - - Now run the code with this command: - - ```terminal copy npx ts-node index.ts ``` - - - - -```terminal copy -node index.js -``` - - - This should print an empty array because there are no `User` records in the database yet: ```json no-lines @@ -127,39 +73,9 @@ The `findMany` query you used in the previous section only _reads_ data from the Adjust the `main` function to send a `create` query to the database: - - -```ts file=index.ts highlight=2-21;add copy -async function main() { - await prisma.user.create({ - data: { - name: 'Rich', - email: 'hello@prisma.com', - posts: { - create: { - title: 'My first post', - body: 'Lots of really interesting stuff', - slug: 'my-first-post', - }, - }, - }, - }) - - const allUsers = await prisma.user.findMany({ - include: { - posts: true, - }, - }) - console.dir(allUsers, { depth: null }) -} -``` - - - - - -```js file=index.js highlight=2-21;add copy +```ts file=index.ts highlight=2-21;add copy showLineNumbers async function main() { + //add-start await prisma.user.create({ data: { name: 'Rich', @@ -180,36 +96,23 @@ async function main() { }, }) console.dir(allUsers, { depth: null }) + //add-end } ``` - - This code creates a new `User` record together with a new `Post` using a [nested write](/orm/prisma-client/queries/relation-queries#nested-writes) query. The `User` record is connected to the other one via the `Post.author` ↔ `User.posts` [relation fields](/orm/prisma-schema/data-model/relations#relation-fields) respectively. Notice that you're passing the [`include`](/orm/prisma-client/queries/select-fields#include-relations-and-select-relation-fields) option to `findMany` which tells Prisma Client to include the `posts` relations on the returned `User` objects. Run the code with this command: - - ```terminal copy npx ts-node index.ts ``` - - - - -```terminal copy -node index.js -``` - - - The output should look similar to this: -```json5 no-lines +```json no-lines [ { id: '60cc9b0e001e3bfd00a6eddf', @@ -229,8 +132,6 @@ The output should look similar to this: ] ``` - - Also note that `allUsers` is _statically typed_ thanks to [Prisma Client's generated types](/orm/prisma-client/type-safety/operating-against-partial-structures-of-model-types). You can observe the type by hovering over the `allUsers` variable in your editor. It should be typed as follows: ```ts no-lines @@ -247,8 +148,6 @@ export type Post = { } ``` - - The query added new records to the `User` and the `Post` tables: **User** @@ -267,9 +166,7 @@ The query added new records to the `User` and the `Post` tables: Before moving on to the next section, you'll add a couple of comments to the `Post` record you just created using an `update` query. Adjust the `main` function as follows: - - -```ts file=index.ts copy +```ts file=index.ts copy showLineNumbers async function main() { await prisma.post.update({ where: { @@ -296,62 +193,15 @@ async function main() { } ``` - - - - -```js file=index.js copy -async function main() { - await prisma.post.update({ - where: { - slug: 'my-first-post', - }, - data: { - comments: { - createMany: { - data: [ - { comment: 'Great post!' }, - { comment: "Can't wait to read more!" }, - ], - }, - }, - }, - }) - const posts = await prisma.post.findMany({ - include: { - comments: true, - }, - }) - - console.dir(posts, { depth: Infinity }) -} -``` - - - - - Now run the code using the same command as before: ```terminal copy npx ts-node index.ts ``` - - - - -Now run the code using the same command as before: - -```terminal copy -node index.js -``` - - - You will see the following output: -```json5 no-lines +```json no-lines [ { id: '60cc9bad005059d6007f45dd', @@ -376,50 +226,3 @@ You will see the following output: ``` Fantastic, you just wrote new data into your database for the first time using Prisma Client 🚀 - - - - - - - Install Prisma Client - - - - Next Steps - - - - - - - - - - - - Install Prisma Client - - - - Next Steps - - - - - diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb/300-next-steps.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb/300-next-steps.mdx index b6a1f1afbf..6b0de8f1b8 100644 --- a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb/300-next-steps.mdx +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb/300-next-steps.mdx @@ -1,27 +1,24 @@ --- title: 'Next steps' -metaTitle: 'Next steps' -metaDescription: 'Next steps to take now that you have successfully added Prisma to your project' -langSwitcher: ['typescript', 'node'] -dbSwitcher: ['mongodb'] -toc: false +metaTitle: 'Next steps after setting up Prisma ORM with MongoDB' +metaDescription: 'Next steps to take now that you have successfully added Prisma ORM to your new JavaScript or TypeScript project' +hide_table_of_contents: true --- - -## Next steps - + This section lists a number of potential next steps you can now take from here. Feel free to explore these or read the [Introduction](/orm/overview/introduction/what-is-prisma) page to get a high-level overview of Prisma ORM. ### Continue exploring the Prisma Client API You can send a variety of queries with the Prisma Client API. Check out the [API reference](/orm/prisma-client) and use your existing database setup from this guide to try them out. - +:::tip You can use your editor's auto-completion feature to learn about the different API calls and the arguments it takes. Auto-completion is commonly invoked by hitting CTRL+SPACE on your keyboard. - +::: -
Expand for more Prisma Client API examples +
+Expand for more Prisma Client API examples Here are a few suggestions for a number of more queries you can send with Prisma Client: @@ -75,13 +72,13 @@ const deletedUser = await prisma.user.delete({ Prisma Studio is a visual editor for the data in your database. Run `npx prisma studio` in your terminal. -### Try a Prisma example +### Try a Prisma ORM example The [`prisma-examples`](https://github.com/prisma/prisma-examples/) repository contains a number of ready-to-run examples: -, ]}> + - + | Demo | Stack | Description | | :------------------------------------------------------------------------------------------------------------------ | :----------- | --------------------------------------------------------------------------------------------------- | @@ -91,9 +88,9 @@ The [`prisma-examples`](https://github.com/prisma/prisma-examples/) repository c | [`rest-express`](https://github.com/prisma/prisma-examples/tree/latest/typescript/rest-express) | Backend only | Simple REST API with Express.JS | | [`grpc`](https://github.com/prisma/prisma-examples/tree/latest/typescript/grpc) | Backend only | Simple gRPC API | - + - + | Demo | Stack | Description | | :---------------------------------------------------------------------------------------------------------------- | :----------- | :-------------------------------------------------------------------------------------------------- | @@ -102,6 +99,6 @@ The [`prisma-examples`](https://github.com/prisma/prisma-examples/) repository c | [`rest-express`](https://github.com/prisma/prisma-examples/tree/latest/javascript/rest-express) | Backend only | Simple REST API with Express.JS | | [`grpc`](https://github.com/prisma/prisma-examples/tree/latest/javascript/grpc) | Backend only | Simple gRPC API | - + diff --git a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/index.mdx b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/index.mdx index 491ba8b0b5..ca5b269bd5 100644 --- a/content/100-getting-started/02-setup-prisma/100-start-from-scratch/index.mdx +++ b/content/100-getting-started/02-setup-prisma/100-start-from-scratch/index.mdx @@ -1,8 +1,8 @@ --- title: 'Start from scratch' -metaTitle: 'Start from scratch with Prisma' -metaDescription: 'Learn how to create a new Node.js or TypeScript project from scratch by connecting Prisma to your database of choice and generating a Prisma Client for database access.' -toc: false +metaTitle: 'Start from scratch with Prisma ORM' +metaDescription: 'Learn how to create a new Node.js or TypeScript project from scratch by connecting Prisma ORM to your database of choice and generating a Prisma Client for database access.' +hide_table_of_contents: true --- diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases-node-cockroachdb.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases-node-cockroachdb.mdx new file mode 100644 index 0000000000..4e47316071 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases-node-cockroachdb.mdx @@ -0,0 +1,70 @@ +--- +title: 'Relational databases' +metaTitle: 'Add Prisma ORM to an existing project using JavaScript and CockroachDB (15 min)' +metaDescription: 'Learn how to add Prisma ORM to an existing Node.js project by connecting it to your CockroachDB database and generating a Prisma Client for database access.' +hide_table_of_contents: true +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +sidebar_custom_props: { badge: '15 min' } +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/connect-your-database-node-cockroachdb +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases- +--- + + + +Learn how to add Prisma ORM to an existing Node.js or TypeScript project by connecting it to your database and generating a Prisma Client for database access. The following tutorial introduces you to the [Prisma CLI](/orm/tools/prisma-cli), [Prisma Client](/orm/prisma-client), and [Prisma Introspection](/orm/prisma-schema/introspection). + + + +:::tip + +If you're migrating to Prisma ORM from another ORM, see our [Migrate from TypeORM](/orm/more/migrating-to-prisma/migrate-from-typeorm) or [Migrate from Sequelize](/orm/more/migrating-to-prisma/migrate-from-sequelize) migration guides. + +::: + +## Prerequisites + +In order to successfully complete this guide, you need: + +- an existing Node.js project with a `package.json` +- [Node.js](https://nodejs.org/en/) installed on your machine +- a [CockroachDB](https://www.cockroachlabs.com) database server running and a database with at least one table + +> See [System requirements](/orm/reference/system-requirements) for exact version requirements. + +Make sure you have your database [connection URL](/orm/reference/connection-urls) (that includes your authentication credentials) at hand! If you don't have a database server running and just want to explore Prisma ORM, check out the [Quickstart](/getting-started/quickstart). + +## Set up Prisma ORM + +As a first step, navigate into your project directory that contains the `package.json` file. + +Next, add the Prisma CLI as a development dependency to your project: + +```terminal copy +npm install prisma --save-dev +``` + +You can now invoke the Prisma CLI by prefixing it with `npx`: + +```terminal +npx prisma +``` + + + +See [installation instructions](/orm/tools/prisma-cli#installation) to learn how to install Prisma ORM using a different package manager. + + + +Next, set up your Prisma ORM project by creating your [Prisma schema](/orm/prisma-schema) file template with the following command: + +```terminal copy +npx prisma init +``` + +This command does two things: + +- creates a new directory called `prisma` that contains a file called `schema.prisma`, which contains the Prisma schema with your database connection variable and schema models +- creates the [`.env` file](/orm/more/development-environment/environment-variables/env-files) in the root directory of the project, which is used for defining environment variables (such as your database connection) + diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases-node-mysql.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases-node-mysql.mdx new file mode 100644 index 0000000000..a50339a856 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases-node-mysql.mdx @@ -0,0 +1,71 @@ +--- +title: 'Relational databases' +metaTitle: 'Add Prisma ORM to an existing project using JavaScript and MySQL (15 min)' +metaDescription: 'Learn how to add Prisma ORM to an existing Node.js project by connecting it to your MySQL database and generating a Prisma Client for database access.' +hide_table_of_contents: true +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +sidebar_custom_props: { badge: '15 min' } +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/connect-your-database-node-mysql +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases- +--- + + + +Learn how to add Prisma ORM to an existing Node.js or TypeScript project by connecting it to your database and generating a Prisma Client for database access. The following tutorial introduces you to the [Prisma CLI](/orm/tools/prisma-cli), [Prisma Client](/orm/prisma-client), and [Prisma Introspection](/orm/prisma-schema/introspection). + + + +:::tip + +If you're migrating to Prisma ORM from another ORM, see our [Migrate from TypeORM](/orm/more/migrating-to-prisma/migrate-from-typeorm) or [Migrate from Sequelize](/orm/more/migrating-to-prisma/migrate-from-sequelize) migration guides. + +::: + +## Prerequisites + +In order to successfully complete this guide, you need: + +- an existing Node.js project with a `package.json` +- [Node.js](https://nodejs.org/en/) installed on your machine +- a [MySQL](https://www.mysql.com/) database server running and a database with at least one table + + +> See [System requirements](/orm/reference/system-requirements) for exact version requirements. + +Make sure you have your database [connection URL](/orm/reference/connection-urls) (that includes your authentication credentials) at hand! If you don't have a database server running and just want to explore Prisma ORM, check out the [Quickstart](/getting-started/quickstart). + +## Set up Prisma ORM + +As a first step, navigate into your project directory that contains the `package.json` file. + +Next, add the Prisma CLI as a development dependency to your project: + +```terminal copy +npm install prisma --save-dev +``` + +You can now invoke the Prisma CLI by prefixing it with `npx`: + +```terminal +npx prisma +``` + + + +See [installation instructions](/orm/tools/prisma-cli#installation) to learn how to install Prisma ORM using a different package manager. + + + +Next, set up your Prisma ORM project by creating your [Prisma schema](/orm/prisma-schema) file template with the following command: + +```terminal copy +npx prisma init +``` + +This command does two things: + +- creates a new directory called `prisma` that contains a file called `schema.prisma`, which contains the Prisma schema with your database connection variable and schema models +- creates the [`.env` file](/orm/more/development-environment/environment-variables/env-files) in the root directory of the project, which is used for defining environment variables (such as your database connection) + diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases-node-planetscale.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases-node-planetscale.mdx new file mode 100644 index 0000000000..886f4808a6 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases-node-planetscale.mdx @@ -0,0 +1,69 @@ +--- +title: 'Relational databases' +metaTitle: 'Add Prisma ORM to an existing project using JavaScript and PlanetScale (15 min)' +metaDescription: 'Learn how to add Prisma ORM to an existing Node.js project by connecting it to your PlanetScale database and generating a Prisma Client for database access.' +hide_table_of_contents: true +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +sidebar_custom_props: { badge: '15 min' } +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/connect-your-database-node-planetscale +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases- +--- + + + +Learn how to add Prisma ORM to an existing Node.js or TypeScript project by connecting it to your database and generating a Prisma Client for database access. The following tutorial introduces you to the [Prisma CLI](/orm/tools/prisma-cli), [Prisma Client](/orm/prisma-client), and [Prisma Introspection](/orm/prisma-schema/introspection). + + + +:::tip + +If you're migrating to Prisma ORM from another ORM, see our [Migrate from TypeORM](/orm/more/migrating-to-prisma/migrate-from-typeorm) or [Migrate from Sequelize](/orm/more/migrating-to-prisma/migrate-from-sequelize) migration guides. + +::: + +## Prerequisites + +In order to successfully complete this guide, you need: + +- an existing Node.js project with a `package.json` +- [Node.js](https://nodejs.org/en/) installed on your machine +- a [PlanetScale](https://www.planetscale.com/) database server running and a database with at least one table + +> See [System requirements](/orm/reference/system-requirements) for exact version requirements. + +Make sure you have your database [connection URL](/orm/reference/connection-urls) (that includes your authentication credentials) at hand! If you don't have a database server running and just want to explore Prisma ORM, check out the [Quickstart](/getting-started/quickstart). + +## Set up Prisma ORM + +As a first step, navigate into your project directory that contains the `package.json` file. + +Next, add the Prisma CLI as a development dependency to your project: + +```terminal copy +npm install prisma --save-dev +``` + +You can now invoke the Prisma CLI by prefixing it with `npx`: + +```terminal +npx prisma +``` + + + +See [installation instructions](/orm/tools/prisma-cli#installation) to learn how to install Prisma ORM using a different package manager. + + + +Next, set up your Prisma ORM project by creating your [Prisma schema](/orm/prisma-schema) file template with the following command: + +```terminal copy +npx prisma init +``` + +This command does two things: + +- creates a new directory called `prisma` that contains a file called `schema.prisma`, which contains the Prisma schema with your database connection variable and schema models +- creates the [`.env` file](/orm/more/development-environment/environment-variables/env-files) in the root directory of the project, which is used for defining environment variables (such as your database connection) diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases-node-postgresql.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases-node-postgresql.mdx new file mode 100644 index 0000000000..a757257821 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases-node-postgresql.mdx @@ -0,0 +1,71 @@ +--- +title: 'Relational databases' +metaTitle: 'Add Prisma ORM to an existing project that using JavaScript and PostgreSQL(15 min)' +metaDescription: 'Learn how to add Prisma ORM to an existing Node.js project by connecting it to your PostgreSQL database and generating a Prisma Client for database access.' +hide_table_of_contents: true +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +sidebar_custom_props: { badge: '15 min' } +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/connect-your-database-node-postgresql +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases- +--- + + + + +Learn how to add Prisma ORM to an existing Node.js or TypeScript project by connecting it to your database and generating a Prisma Client for database access. The following tutorial introduces you to the [Prisma CLI](/orm/tools/prisma-cli), [Prisma Client](/orm/prisma-client), and [Prisma Introspection](/orm/prisma-schema/introspection). + + + +:::tip + +If you're migrating to Prisma ORM from another ORM, see our [Migrate from TypeORM](/orm/more/migrating-to-prisma/migrate-from-typeorm) or [Migrate from Sequelize](/orm/more/migrating-to-prisma/migrate-from-sequelize) migration guides. + +::: + +## Prerequisites + +In order to successfully complete this guide, you need: + +- an existing Node.js project with a `package.json` +- [Node.js](https://nodejs.org/en/) installed on your machine +- a [PostgreSQL](https://www.postgresql.org/) database server running and a database with at least one table + +> See [System requirements](/orm/reference/system-requirements) for exact version requirements. + +Make sure you have your database [connection URL](/orm/reference/connection-urls) (that includes your authentication credentials) at hand! If you don't have a database server running and just want to explore Prisma ORM, check out the [Quickstart](/getting-started/quickstart). + +## Set up Prisma ORM + +As a first step, navigate into your project directory that contains the `package.json` file. + +Next, add the Prisma CLI as a development dependency to your project: + +```terminal copy +npm install prisma --save-dev +``` + +You can now invoke the Prisma CLI by prefixing it with `npx`: + +```terminal +npx prisma +``` + + + +See [installation instructions](/orm/tools/prisma-cli#installation) to learn how to install Prisma ORM using a different package manager. + + + +Next, set up your Prisma ORM project by creating your [Prisma schema](/orm/prisma-schema) file template with the following command: + +```terminal copy +npx prisma init +``` + +This command does two things: + +- creates a new directory called `prisma` that contains a file called `schema.prisma`, which contains the Prisma schema with your database connection variable and schema models +- creates the [`.env` file](/orm/more/development-environment/environment-variables/env-files) in the root directory of the project, which is used for defining environment variables (such as your database connection) + diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases-node-sqlserver.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases-node-sqlserver.mdx new file mode 100644 index 0000000000..c745cea4cf --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases-node-sqlserver.mdx @@ -0,0 +1,70 @@ +--- +title: 'Relational databases' +metaTitle: 'Add Prisma to an existing project that uses a relational database (15 min)' +metaDescription: 'Learn how to add Prisma to an existing Node.js or TypeScript project by connecting it to your relational database and generating a Prisma Client for database access.' +hide_table_of_contents: true +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +sidebar_custom_props: { badge: '15 min' } +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/connect-your-database-node-sqlserver +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases- +--- + + + +Learn how to add Prisma ORM to an existing Node.js or TypeScript project by connecting it to your database and generating a Prisma Client for database access. The following tutorial introduces you to the [Prisma CLI](/orm/tools/prisma-cli), [Prisma Client](/orm/prisma-client), and [Prisma Introspection](/orm/prisma-schema/introspection). + + + +:::tip + + +If you're migrating to Prisma ORM from another ORM, see our [Migrate from TypeORM](/orm/more/migrating-to-prisma/migrate-from-typeorm) or [Migrate from Sequelize](/orm/more/migrating-to-prisma/migrate-from-sequelize) migration guides. + +::: + +## Prerequisites + +In order to successfully complete this guide, you need: + +- [Node.js](https://nodejs.org/en/) installed on your machine +- A [Microsoft SQL Server](https://docs.microsoft.com/en-us/sql/?view=sql-server-ver15) database + - [Microsoft SQL Server on Linux for Docker](/orm/overview/databases/sql-server/sql-server-docker) + - [Microsoft SQL Server on Windows (local)](/orm/overview/databases/sql-server/sql-server-local) + +> See [System requirements](/orm/reference/system-requirements) for exact version requirements. + +Make sure you have your database [connection URL](/orm/reference/connection-urls) (that includes your authentication credentials) at hand! If you don't have a database server running and just want to explore Prisma ORM, check out the [Quickstart](/getting-started/quickstart). + +## Set up Prisma ORM + +As a first step, navigate into your project directory that contains the `package.json` file. + +Next, add the Prisma CLI as a development dependency to your project: + +```terminal copy +npm install prisma --save-dev +``` + +You can now invoke the Prisma CLI by prefixing it with `npx`: + +```terminal +npx prisma +``` + + + +See [installation instructions](/orm/tools/prisma-cli#installation) to learn how to install Prisma ORM using a different package manager. + + + +Next, set up your Prisma ORM project by creating your [Prisma schema](/orm/prisma-schema) file template with the following command: + +```terminal copy +npx prisma init +``` + +This command does two things: + +- creates a new directory called `prisma` that contains a file called `schema.prisma`, which contains the Prisma schema with your database connection variable and schema models +- creates the [`.env` file](/orm/more/development-environment/environment-variables/env-files) in the root directory of the project, which is used for defining environment variables (such as your database connection) diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases-typescript-cockroachdb.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases-typescript-cockroachdb.mdx new file mode 100644 index 0000000000..7322717d4b --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases-typescript-cockroachdb.mdx @@ -0,0 +1,70 @@ +--- +title: 'Relational databases' +metaTitle: 'Add Prisma ORM to an existing project using TypeScript and CockroachDB (15 min)' +metaDescription: 'Learn how to add Prisma ORM to an existing TypeScript project by connecting it to your CockroachDB database and generating a Prisma Client for database access.' +hide_table_of_contents: true +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +sidebar_custom_props: { badge: '15 min' } +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/connect-your-database-typescript-cockroachdb +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases- +--- + + + + +Learn how to add Prisma ORM to an existing Node.js or TypeScript project by connecting it to your database and generating a Prisma Client for database access. The following tutorial introduces you to the [Prisma CLI](/orm/tools/prisma-cli), [Prisma Client](/orm/prisma-client), and [Prisma Introspection](/orm/prisma-schema/introspection). + + + +:::tip + +If you're migrating to Prisma ORM from another ORM, see our [Migrate from TypeORM](/orm/more/migrating-to-prisma/migrate-from-typeorm) or [Migrate from Sequelize](/orm/more/migrating-to-prisma/migrate-from-sequelize) migration guides. + +::: + +## Prerequisites + +In order to successfully complete this guide, you need: + +- an existing Node.js project with a `package.json` +- [Node.js](https://nodejs.org/en/) installed on your machine +- a [CockroachDB](https://www.cockroachlabs.com) database server running and a database with at least one table + +> See [System requirements](/orm/reference/system-requirements) for exact version requirements. + +Make sure you have your database [connection URL](/orm/reference/connection-urls) (that includes your authentication credentials) at hand! If you don't have a database server running and just want to explore Prisma ORM, check out the [Quickstart](/getting-started/quickstart). + +## Set up Prisma ORM + +As a first step, navigate into your project directory that contains the `package.json` file. + +Next, add the Prisma CLI as a development dependency to your project: + +```terminal copy +npm install prisma --save-dev +``` + +You can now invoke the Prisma CLI by prefixing it with `npx`: + +```terminal +npx prisma +``` + + + +See [installation instructions](/orm/tools/prisma-cli#installation) to learn how to install Prisma ORM using a different package manager. + + + +Next, set up your Prisma ORM project by creating your [Prisma schema](/orm/prisma-schema) file template with the following command: + +```terminal copy +npx prisma init +``` + +This command does two things: + +- creates a new directory called `prisma` that contains a file called `schema.prisma`, which contains the Prisma schema with your database connection variable and schema models +- creates the [`.env` file](/orm/more/development-environment/environment-variables/env-files) in the root directory of the project, which is used for defining environment variables (such as your database connection) diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases-typescript-mysql.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases-typescript-mysql.mdx new file mode 100644 index 0000000000..94a84140ac --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases-typescript-mysql.mdx @@ -0,0 +1,69 @@ +--- +title: 'Relational databases' +metaTitle: 'Add Prisma to an existing project that uses a relational database (15 min)' +metaDescription: 'Learn how to add Prisma to an existing Node.js or TypeScript project by connecting it to your relational database and generating a Prisma Client for database access.' +hide_table_of_contents: true +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +sidebar_custom_props: { badge: '15 min' } +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/connect-your-database-typescript-mysql +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases- +--- + + + +Learn how to add Prisma ORM to an existing Node.js or TypeScript project by connecting it to your database and generating a Prisma Client for database access. The following tutorial introduces you to the [Prisma CLI](/orm/tools/prisma-cli), [Prisma Client](/orm/prisma-client), and [Prisma Introspection](/orm/prisma-schema/introspection). + + + +:::tip + +If you're migrating to Prisma ORM from another ORM, see our [Migrate from TypeORM](/orm/more/migrating-to-prisma/migrate-from-typeorm) or [Migrate from Sequelize](/orm/more/migrating-to-prisma/migrate-from-sequelize) migration guides. + +::: + +## Prerequisites + +In order to successfully complete this guide, you need: + +- an existing Node.js project with a `package.json` +- [Node.js](https://nodejs.org/en/) installed on your machine +- a [MySQL](https://www.mysql.com/) database server running and a database with at least one table + +> See [System requirements](/orm/reference/system-requirements) for exact version requirements. + +Make sure you have your database [connection URL](/orm/reference/connection-urls) (that includes your authentication credentials) at hand! If you don't have a database server running and just want to explore Prisma ORM, check out the [Quickstart](/getting-started/quickstart). + +## Set up Prisma ORM + +As a first step, navigate into your project directory that contains the `package.json` file. + +Next, add the Prisma CLI as a development dependency to your project: + +```terminal copy +npm install prisma --save-dev +``` + +You can now invoke the Prisma CLI by prefixing it with `npx`: + +```terminal +npx prisma +``` + + + +See [installation instructions](/orm/tools/prisma-cli#installation) to learn how to install Prisma ORM using a different package manager. + + + +Next, set up your Prisma ORM project by creating your [Prisma schema](/orm/prisma-schema) file template with the following command: + +```terminal copy +npx prisma init +``` + +This command does two things: + +- creates a new directory called `prisma` that contains a file called `schema.prisma`, which contains the Prisma schema with your database connection variable and schema models +- creates the [`.env` file](/orm/more/development-environment/environment-variables/env-files) in the root directory of the project, which is used for defining environment variables (such as your database connection) diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases-typescript-planetscale.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases-typescript-planetscale.mdx new file mode 100644 index 0000000000..b9b105927f --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases-typescript-planetscale.mdx @@ -0,0 +1,69 @@ +--- +title: 'Relational databases' +metaTitle: 'Add Prisma ORM to an existing project using TypeScript and PlanetScale (15 min)' +metaDescription: 'Learn how to add Prisma ORM to an existing TypeScript project by connecting it to your PlanetScale database and generating a Prisma Client for database access.' +hide_table_of_contents: true +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +sidebar_custom_props: { badge: '15 min' } +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/connect-your-database-typescript-planetscale +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases- +--- + + + +Learn how to add Prisma ORM to an existing Node.js or TypeScript project by connecting it to your database and generating a Prisma Client for database access. The following tutorial introduces you to the [Prisma CLI](/orm/tools/prisma-cli), [Prisma Client](/orm/prisma-client), and [Prisma Introspection](/orm/prisma-schema/introspection). + + + +:::tip + +If you're migrating to Prisma ORM from another ORM, see our [Migrate from TypeORM](/orm/more/migrating-to-prisma/migrate-from-typeorm) or [Migrate from Sequelize](/orm/more/migrating-to-prisma/migrate-from-sequelize) migration guides. + +::: + +## Prerequisites + +In order to successfully complete this guide, you need: + +- an existing Node.js project with a `package.json` +- [Node.js](https://nodejs.org/en/) installed on your machine +- a [PlanetScale](https://www.planetscale.com/) database server running and a database with at least one table + +> See [System requirements](/orm/reference/system-requirements) for exact version requirements. + +Make sure you have your database [connection URL](/orm/reference/connection-urls) (that includes your authentication credentials) at hand! If you don't have a database server running and just want to explore Prisma ORM, check out the [Quickstart](/getting-started/quickstart). + +## Set up Prisma ORM + +As a first step, navigate into your project directory that contains the `package.json` file. + +Next, add the Prisma CLI as a development dependency to your project: + +```terminal copy +npm install prisma --save-dev +``` + +You can now invoke the Prisma CLI by prefixing it with `npx`: + +```terminal +npx prisma +``` + + + +See [installation instructions](/orm/tools/prisma-cli#installation) to learn how to install Prisma ORM using a different package manager. + + + +Next, set up your Prisma ORM project by creating your [Prisma schema](/orm/prisma-schema) file template with the following command: + +```terminal copy +npx prisma init +``` + +This command does two things: + +- creates a new directory called `prisma` that contains a file called `schema.prisma`, which contains the Prisma schema with your database connection variable and schema models +- creates the [`.env` file](/orm/more/development-environment/environment-variables/env-files) in the root directory of the project, which is used for defining environment variables (such as your database connection) diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases-typescript-postgresql.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases-typescript-postgresql.mdx new file mode 100644 index 0000000000..c739c459d3 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases-typescript-postgresql.mdx @@ -0,0 +1,69 @@ +--- +title: 'Relational databases' +metaTitle: 'Add Prisma ORM to an existing project using TypeScript and PostgreSQL (15 min)' +metaDescription: 'Learn how to add Prisma ORM to an existing TypeScript project by connecting it to your PostgreSQL database and generating a Prisma Client for database access.' +hide_table_of_contents: true +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +sidebar_custom_props: { badge: '15 min' } +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/connect-your-database-typescript-postgresql +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases- +--- + + + +Learn how to add Prisma ORM to an existing Node.js or TypeScript project by connecting it to your database and generating a Prisma Client for database access. The following tutorial introduces you to the [Prisma CLI](/orm/tools/prisma-cli), [Prisma Client](/orm/prisma-client), and [Prisma Introspection](/orm/prisma-schema/introspection). + + + +:::tip + +If you're migrating to Prisma ORM from another ORM, see our [Migrate from TypeORM](/orm/more/migrating-to-prisma/migrate-from-typeorm) or [Migrate from Sequelize](/orm/more/migrating-to-prisma/migrate-from-sequelize) migration guides. + +::: + +## Prerequisites + +In order to successfully complete this guide, you need: + +- an existing Node.js project with a `package.json` +- [Node.js](https://nodejs.org/en/) installed on your machine +- a [PostgreSQL](https://www.postgresql.org/) database server running and a database with at least one table + +> See [System requirements](/orm/reference/system-requirements) for exact version requirements. + +Make sure you have your database [connection URL](/orm/reference/connection-urls) (that includes your authentication credentials) at hand! If you don't have a database server running and just want to explore Prisma ORM, check out the [Quickstart](/getting-started/quickstart). + +## Set up Prisma ORM + +As a first step, navigate into your project directory that contains the `package.json` file. + +Next, add the Prisma CLI as a development dependency to your project: + +```terminal copy +npm install prisma --save-dev +``` + +You can now invoke the Prisma CLI by prefixing it with `npx`: + +```terminal +npx prisma +``` + + + +See [installation instructions](/orm/tools/prisma-cli#installation) to learn how to install Prisma ORM using a different package manager. + + + +Next, set up your Prisma ORM project by creating your [Prisma schema](/orm/prisma-schema) file template with the following command: + +```terminal copy +npx prisma init +``` + +This command does two things: + +- creates a new directory called `prisma` that contains a file called `schema.prisma`, which contains the Prisma schema with your database connection variable and schema models +- creates the [`.env` file](/orm/more/development-environment/environment-variables/env-files) in the root directory of the project, which is used for defining environment variables (such as your database connection) diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases-typescript-sqlserver.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases-typescript-sqlserver.mdx new file mode 100644 index 0000000000..3879f21616 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases-typescript-sqlserver.mdx @@ -0,0 +1,70 @@ +--- +title: 'Relational databases' +metaTitle: 'Add Prisma ORM to an existing project using TypeScript and SQL Server (15 min)' +metaDescription: 'Learn how to add Prisma ORM to an existing TypeScript project by connecting it to your SQL Server database and generating a Prisma Client for database access.' +hide_table_of_contents: true +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +sidebar_custom_props: { badge: '15 min' } +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/connect-your-database-typescript-sqlserver +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases- +--- + + + +Learn how to add Prisma ORM to an existing Node.js or TypeScript project by connecting it to your database and generating a Prisma Client for database access. The following tutorial introduces you to the [Prisma CLI](/orm/tools/prisma-cli), [Prisma Client](/orm/prisma-client), and [Prisma Introspection](/orm/prisma-schema/introspection). + + + +:::tip + +If you're migrating to Prisma ORM from another ORM, see our [Migrate from TypeORM](/orm/more/migrating-to-prisma/migrate-from-typeorm) or [Migrate from Sequelize](/orm/more/migrating-to-prisma/migrate-from-sequelize) migration guides. + +::: + +## Prerequisites + +In order to successfully complete this guide, you need: + +- [Node.js](https://nodejs.org/en/) installed on your machine +- A [Microsoft SQL Server](https://docs.microsoft.com/en-us/sql/?view=sql-server-ver15) database + - [Microsoft SQL Server on Linux for Docker](/orm/overview/databases/sql-server/sql-server-docker) + - [Microsoft SQL Server on Windows (local)](/orm/overview/databases/sql-server/sql-server-local) + +> See [System requirements](/orm/reference/system-requirements) for exact version requirements. + +Make sure you have your database [connection URL](/orm/reference/connection-urls) (that includes your authentication credentials) at hand! If you don't have a database server running and just want to explore Prisma ORM, check out the [Quickstart](/getting-started/quickstart). + +## Set up Prisma ORM + +As a first step, navigate into your project directory that contains the `package.json` file. + +Next, add the Prisma CLI as a development dependency to your project: + +```terminal copy +npm install prisma --save-dev +``` + +You can now invoke the Prisma CLI by prefixing it with `npx`: + +```terminal +npx prisma +``` + + + +See [installation instructions](/orm/tools/prisma-cli#installation) to learn how to install Prisma ORM using a different package manager. + + + +Next, set up your Prisma ORM project by creating your [Prisma schema](/orm/prisma-schema) file template with the following command: + +```terminal copy +npx prisma init +``` + +This command does two things: + +- creates a new directory called `prisma` that contains a file called `schema.prisma`, which contains the Prisma schema with your database connection variable and schema models +- creates the [`.env` file](/orm/more/development-environment/environment-variables/env-files) in the root directory of the project, which is used for defining environment variables (such as your database connection) diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/100-connect-your-database-node-cockroachdb.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/100-connect-your-database-node-cockroachdb.mdx new file mode 100644 index 0000000000..ff4a7d5500 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/100-connect-your-database-node-cockroachdb.mdx @@ -0,0 +1,67 @@ +--- +title: 'Connect your database' +metaTitle: 'Connect your existing database using JavasSript and CockroachDB' +metaDescription: 'Connect your database to your existing project using JavaScript and CockroachDB' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +toc: false +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/introspection-node-cockroachdb +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/connect-your-database- +--- + +## Connecting your database + +To connect your database, you need to set the `url` field of the `datasource` block in your Prisma schema to your database [connection URL](/orm/reference/connection-urls): + +```prisma file=prisma/schema.prisma showLineNumbers +datasource db { + provider = "postgresql" + url = env("DATABASE_URL") +} +``` + +Note that the default schema created by `prisma init` uses PostgreSQL as the `provider`. For CockroachDB, you need to edit the `datasource` block to use the `cockroachdb` provider instead: + +```prisma file=prisma/schema.prisma highlight=2;edit showLineNumbers +datasource db { + //edit-next-line + provider = "cockroachdb" + url = env("DATABASE_URL") +} +``` + +The `url` is [set via an environment variable](/orm/more/development-environment/environment-variables) which is defined in `.env`. You now need to adjust the connection URL to point to your own database. + +

Connection URL

+ +The [format of the connection URL](/orm/reference/connection-urls) for your database depends on the database you use. CockroachDB uses the PostgreSQL connection URL format, which has the following structure (the parts spelled all-uppercased are _placeholders_ for your specific connection details): + +```no-lines +postgresql://USER:PASSWORD@HOST:PORT/DATABASE?PARAMETERS +``` + +Here's a short explanation of each component: + +- `USER`: The name of your database user +- `PASSWORD`: The password for your database user +- `PORT`: The port where your database server is running. The default for CockroachDB is `26257`. +- `DATABASE`: The name of the database +- `PARAMETERS`: Any additional connection parameters. See the CockroachDB documentation [here](https://www.cockroachlabs.com/docs/stable/connection-parameters.html#additional-connection-parameters). + +For a [CockroachDB Serverless](https://www.cockroachlabs.com/docs/cockroachcloud/quickstart.html) or [Cockroach Dedicated](https://www.cockroachlabs.com/docs/cockroachcloud/quickstart-trial-cluster) database hosted on [CockroachDB Cloud](https://www.cockroachlabs.com/get-started-cockroachdb/), the [connection URL](/orm/reference/connection-urls) looks similar to this: + +```bash file=.env +DATABASE_URL="postgresql://:@..cockroachlabs.cloud:26257/defaultdb?sslmode=verify-full&sslrootcert=$HOME/.postgresql/root.crt&options=--" +``` + +To find your connection string on CockroachDB Cloud, click the 'Connect' button on the overview page for your database cluster, and select the 'Connection string' tab. + +For a [CockroachDB database hosted locally](https://www.cockroachlabs.com/docs/stable/secure-a-cluster.html), the [connection URL](/orm/reference/connection-urls) looks similar to this: + +```bash file=.env +DATABASE_URL="postgresql://root@localhost:26257?sslmode=disable" +``` + +Your connection string is displayed as part of the welcome text when starting CockroachDB from the command line. diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/100-connect-your-database-node-mysql.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/100-connect-your-database-node-mysql.mdx new file mode 100644 index 0000000000..3b03c36df2 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/100-connect-your-database-node-mysql.mdx @@ -0,0 +1,68 @@ +--- +title: 'Connect your database' +metaTitle: 'Connect your existing database using JavaScript and MySQL' +metaDescription: 'Connect your database to your existing project using JavaScript and MySQL' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +sidebar_class_name: hidden-sidebar +hide_table_of_contents: true +toc: false +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/introspection-node-mysql +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/connect-your-database- +--- + +## Connecting your database + +To connect your database, you need to set the `url` field of the `datasource` block in your Prisma schema to your database [connection URL](/orm/reference/connection-urls): + +```prisma file=prisma/schema.prisma showLineNumbers +datasource db { + provider = "postgresql" + url = env("DATABASE_URL") +} +``` + +Note that the default schema created by `prisma init` uses PostgreSQL, so you first need to switch the `provider` to `mysql`: + +```prisma file=prisma/schema.prisma highlight=2;edit showLineNumbers +datasource db { + //edit-next-line + provider = "mysql" + url = env("DATABASE_URL") +} +``` + +In this case, the `url` is [set via an environment variable](/orm/prisma-schema/overview#accessing-environment-variables-from-the-schema) which is defined in `.env`: + +```bash file=.env +DATABASE_URL="mysql://johndoe:randompassword@localhost:3306/mydb" +``` + +You now need to adjust the connection URL to point to your own database. + +

Connection URL

+ +The [format of the connection URL](/orm/reference/connection-urls) for your database typically depends on the database you use. For MySQL, it looks as follows (the parts spelled all-uppercased are _placeholders_ for your specific connection details): + +```no-lines +mysql://USER:PASSWORD@HOST:PORT/DATABASE +``` + +Here's a short explanation of each component: + +- `USER`: The name of your database user +- `PASSWORD`: The password for your database user +- `PORT`: The port where your database server is running (typically `3306` for MySQL) +- `DATABASE`: The name of the [database](https://dev.mysql.com/doc/refman/8.0/en/creating-database.html) + +As an example, for a MySQL database hosted on AWS RDS, the [connection URL](/orm/reference/connection-urls) might look similar to this: + +```bash file=.env +DATABASE_URL="mysql://johndoe:XXX@mysql–instance1.123456789012.us-east-1.rds.amazonaws.com:3306/mydb" +``` + +When running MySQL locally, your connection URL typically looks similar to this: + +```bash file=.env +DATABASE_URL="mysql://root:randompassword@localhost:3306/mydb" +``` diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/100-connect-your-database-node-planetscale.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/100-connect-your-database-node-planetscale.mdx new file mode 100644 index 0000000000..e8a6d27622 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/100-connect-your-database-node-planetscale.mdx @@ -0,0 +1,97 @@ +--- +title: 'Connect your database' +metaTitle: 'Connect your existing database using JavaScript and PlanetScale' +metaDescription: 'Connect your database to your existing project using JavaScript and PlanetScale' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +sidebar_class_name: hidden-sidebar +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/start-from-scratch/relational-databases/using-prisma-migrate-node-planetscale +slugSwitch: /getting-started/setup-prisma/start-from-scratch/relational-databases/connect-your-database- +--- + +To connect your database, you need to set the `url` field of the `datasource` block in your Prisma schema to your database [connection URL](/orm/reference/connection-urls): + +```prisma file=prisma/schema.prisma showLineNumbers +datasource db { + provider = "postgresql" + url = env("DATABASE_URL") +} +``` + +Note that the default schema created by `prisma init` uses PostgreSQL as the `provider`. For PlanetScale, you need to edit the `datasource` block to use the `mysql` provider instead: + +```prisma file=prisma/schema.prisma highlight=2;edit showLineNumbers +datasource db { + //edit-next-line + provider = "mysql" + url = env("DATABASE_URL") +} +``` + +You will also need to set the relation mode type to `prisma` in order to [emulate foreign key constraints](/orm/overview/databases/planetscale#option-1-emulate-relations-in-prisma-client) in the `datasource` block: + +```prisma file=schema.prisma highlight=4;add showLineNumbers +datasource db { + provider = "mysql" + url = env("DATABASE_URL") + //add-next-line + relationMode = "prisma" +} +``` + +> **Note**: Since February 2024, you can alternatively [use foreign key constraints on a database-level in PlanetScale](/orm/overview/databases/planetscale#option-2-enable-foreign-key-constraints-in-the-planetscale-database-settings), which omits the need for setting `relationMode = "prisma"`. + +The `url` is [set via an environment variable](/orm/prisma-schema/overview#accessing-environment-variables-from-the-schema) which is defined in `.env`: + +```bash file=.env +DATABASE_URL="mysql://janedoe:mypassword@server.us-east-2.psdb.cloud/mydb?sslaccept=strict" +``` + +You now need to adjust the connection URL to point to your own database. + +The [format of the connection URL](/orm/reference/connection-urls) for your database typically depends on the database you use. PlanetScale uses the MySQL connection URL format, which has the following structure (the parts spelled all-uppercased are _placeholders_ for your specific connection details): + +```no-lines +mysql://USER:PASSWORD@HOST:PORT/DATABASE +``` + +Here's a short explanation of each component: + +- `USER`: The name of your database user +- `PASSWORD`: The password for your database user +- `PORT`: The port where your database server is running (typically `3306` for MySQL) +- `DATABASE`: The name of the [database](https://dev.mysql.com/doc/refman/8.0/en/creating-database.html) + +For a database hosted with PlanetScale, the [connection URL](/orm/reference/connection-urls) looks similar to this: + +```bash file=.env +DATABASE_URL="mysql://myusername:mypassword@server.us-east-2.psdb.cloud/mydb?sslaccept=strict" +``` + +The connection URL for a given database branch can be found from your PlanetScale account by going to the overview page for the branch and selecting the 'Connect' dropdown. In the 'Passwords' section, generate a new password and select 'Prisma' to get the Prisma format for the connection URL. + +
+Alternative method: connecting using the PlanetScale CLI + +Alternatively, you can connect to your PlanetScale database server using the [PlanetScale CLI](https://docs.planetscale.com/reference/planetscale-environment-setup), and use a local connection URL. In this case the connection URL will look like this: + +```bash file=.env +DATABASE_URL="mysql://root@localhost:PORT/mydb" +``` + + + +We recommend adding `.env` to your `.gitignore` file to prevent committing your environment variables. + + + +To connect to your branch, use the following command: + +```terminal +pscale connect prisma-test branchname --port PORT +``` + +The `--port` flag can be omitted if you are using the default port `3306`. + +
\ No newline at end of file diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/100-connect-your-database-node-postgresql.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/100-connect-your-database-node-postgresql.mdx new file mode 100644 index 0000000000..8563b8606b --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/100-connect-your-database-node-postgresql.mdx @@ -0,0 +1,55 @@ +--- +title: 'Connect your database' +metaTitle: 'Connect your existing database using JavaScript and PostgreSQL' +metaDescription: 'Connect your database to your existing project using JavaScript and PostgreSQL' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +sidebar_class_name: hidden-sidebar +hide_table_of_contents: true +toc: false +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/introspection-node-postgresql +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/connect-your-database- +--- + +## Connecting your database + +To connect your database, you need to set the `url` field of the `datasource` block in your Prisma schema to your database [connection URL](/orm/reference/connection-urls): + +```prisma file=prisma/schema.prisma showLineNumbers +datasource db { + provider = "postgresql" + url = env("DATABASE_URL") +} +``` + +In this case, the `url` is [set via an environment variable](/orm/more/development-environment/environment-variables) which is defined in `.env`: + +```bash file=.env +DATABASE_URL="postgresql://johndoe:randompassword@localhost:5432/mydb?schema=public" +``` + +You now need to adjust the connection URL to point to your own database. + +

Connection URL

+ +The [format of the connection URL](/orm/reference/connection-urls) for your database depends on the database you use. For PostgreSQL, it looks as follows (the parts spelled all-uppercased are _placeholders_ for your specific connection details): + +```no-lines +postgresql://USER:PASSWORD@HOST:PORT/DATABASE?schema=SCHEMA +``` + +> **Note**: In most cases, you can use the [`postgres://` and `postgresql:// URI scheme designators interchangeably`](https://www.postgresql.org/docs/10/libpq-connect.html#id-1.7.3.8.3.6) - however, depending on how your database is hosted, you might need to be specific. + +If you're unsure what to provide for the `schema` parameter for a PostgreSQL connection URL, you can probably omit it. In that case, the default schema name `public` will be used. + +As an example, for a PostgreSQL database hosted on Heroku, the connection URL might look similar to this: + +```bash file=.env +DATABASE_URL="postgresql://opnmyfngbknppm:XXX@ec2-46-137-91-216.eu-west-1.compute.amazonaws.com:5432/d50rgmkqi2ipus?schema=hello-prisma" +``` + +When running PostgreSQL locally on macOS, your user and password as well as the database name _typically_ correspond to the current _user_ of your OS, e.g. assuming the user is called `janedoe`: + +```bash file=.env +DATABASE_URL="postgresql://janedoe:janedoe@localhost:5432/janedoe?schema=hello-prisma" +``` diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/100-connect-your-database-node-sqlserver.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/100-connect-your-database-node-sqlserver.mdx new file mode 100644 index 0000000000..2df4ff724e --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/100-connect-your-database-node-sqlserver.mdx @@ -0,0 +1,33 @@ +--- +title: 'Connect your database' +metaTitle: 'Connect your existing database using JavaScript and SQL Server' +metaDescription: 'Connect your existing database to your project using JavaScript and SQL Server' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +sidebar_class_name: hidden-sidebar +hide_table_of_contents: true +toc: false +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/introspection-node-sqlserver +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/connect-your-database- +--- + +## Connecting your database + +To connect your database, you need to set the `url` field of the `datasource` block in your Prisma schema to your database [connection URL](/orm/reference/connection-urls): + +```prisma file=prisma/schema.prisma showLineNumbers +datasource db { + provider = "sqlserver" + url = env("DATABASE_URL") +} +``` + +The `url` is [set via an environment variable](/orm/prisma-schema/overview#accessing-environment-variables-from-the-schema), the following example connection URL [uses SQL authentication](/orm/overview/databases/sql-server), but there are [other ways to format your connection URL](/orm/overview/databases/sql-server) + +```bash file=.env +DATABASE_URL="sqlserver://localhost:1433;database=mydb;user=sa;password=r@ndomP@$$w0rd;trustServerCertificate=true" +``` + +Adjust the connection URL to match your setup - see [Microsoft SQL Server connection URL](/orm/overview/databases/sql-server) for more information. + +> Make sure TCP/IP connections are enabled via [SQL Server Configuration Manager](https://docs.microsoft.com/en-us/sql/relational-databases/sql-server-configuration-manager) to avoid `No connection could be made because the target machine actively refused it. (os error 10061)` diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/100-connect-your-database-typescript-cockroachdb.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/100-connect-your-database-typescript-cockroachdb.mdx new file mode 100644 index 0000000000..a51e135ebd --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/100-connect-your-database-typescript-cockroachdb.mdx @@ -0,0 +1,67 @@ +--- +title: 'Connect your database' +metaTitle: 'Connect your existing database using TypeScript and CockroachDB' +metaDescription: 'Connect your existing database to your project using TypeScript and CockroachDB' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +sidebar_class_name: 'hidden-sidebar tech-switch' +hide_table_of_contents: true +toc: false +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/introspection-typescript-cockroachdb +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/connect-your-database- +--- + +## Connecting your database + +To connect your database, you need to set the `url` field of the `datasource` block in your Prisma schema to your database [connection URL](/orm/reference/connection-urls): + +```prisma file=prisma/schema.prisma showLineNumbers +datasource db { + provider = "postgresql" + url = env("DATABASE_URL") +} +``` + +Note that the default schema created by `prisma init` uses PostgreSQL as the `provider`. For CockroachDB, you need to edit the `datasource` block to use the `cockroachdb` provider instead: + +```prisma file=prisma/schema.prisma highlight=2;edit showLineNumbers +datasource db { + //edit-next-line + provider = "cockroachdb" + url = env("DATABASE_URL") +} +``` + +The `url` is [set via an environment variable](/orm/more/development-environment/environment-variables) which is defined in `.env`. You now need to adjust the connection URL to point to your own database. + +

Connection URL

+ +The [format of the connection URL](/orm/reference/connection-urls) for your database depends on the database you use. CockroachDB uses the PostgreSQL connection URL format, which has the following structure (the parts spelled all-uppercased are _placeholders_ for your specific connection details): + +```no-lines +postgresql://USER:PASSWORD@HOST:PORT/DATABASE?PARAMETERS +``` + +Here's a short explanation of each component: + +- `USER`: The name of your database user +- `PASSWORD`: The password for your database user +- `PORT`: The port where your database server is running. The default for CockroachDB is `26257`. +- `DATABASE`: The name of the database +- `PARAMETERS`: Any additional connection parameters. See the CockroachDB documentation [here](https://www.cockroachlabs.com/docs/stable/connection-parameters.html#additional-connection-parameters). + +For a [CockroachDB Serverless](https://www.cockroachlabs.com/docs/cockroachcloud/quickstart.html) or [Cockroach Dedicated](https://www.cockroachlabs.com/docs/cockroachcloud/quickstart-trial-cluster) database hosted on [CockroachDB Cloud](https://www.cockroachlabs.com/get-started-cockroachdb/), the [connection URL](/orm/reference/connection-urls) looks similar to this: + +```bash file=.env +DATABASE_URL="postgresql://:@..cockroachlabs.cloud:26257/defaultdb?sslmode=verify-full&sslrootcert=$HOME/.postgresql/root.crt&options=--" +``` + +To find your connection string on CockroachDB Cloud, click the 'Connect' button on the overview page for your database cluster, and select the 'Connection string' tab. + +For a [CockroachDB database hosted locally](https://www.cockroachlabs.com/docs/stable/secure-a-cluster.html), the [connection URL](/orm/reference/connection-urls) looks similar to this: + +```bash file=.env +DATABASE_URL="postgresql://root@localhost:26257?sslmode=disable" +``` + +Your connection string is displayed as part of the welcome text when starting CockroachDB from the command line. diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/100-connect-your-database-typescript-mysql.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/100-connect-your-database-typescript-mysql.mdx new file mode 100644 index 0000000000..0004ab5b67 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/100-connect-your-database-typescript-mysql.mdx @@ -0,0 +1,68 @@ +--- +title: 'Connect your database' +metaTitle: 'Connect your existing database using TypeScript and MySQL' +metaDescription: 'Connect your existing database to your project using TypeScript and MySQL' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +sidebar_class_name: hidden-sidebar +hide_table_of_contents: true +toc: false +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/introspection-typescript-mysql +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/connect-your-database- +--- + +## Connecting your database + +To connect your database, you need to set the `url` field of the `datasource` block in your Prisma schema to your database [connection URL](/orm/reference/connection-urls): + +```prisma file=prisma/schema.prisma showLineNumbers +datasource db { + provider = "postgresql" + url = env("DATABASE_URL") +} +``` + +Note that the default schema created by `prisma init` uses PostgreSQL, so you first need to switch the `provider` to `mysql`: + +```prisma file=prisma/schema.prisma highlight=2;edit showLineNumbers +datasource db { + //edit-next-line + provider = "mysql" + url = env("DATABASE_URL") +} +``` + +In this case, the `url` is [set via an environment variable](/orm/prisma-schema/overview#accessing-environment-variables-from-the-schema) which is defined in `.env`: + +```bash file=.env +DATABASE_URL="mysql://johndoe:randompassword@localhost:3306/mydb" +``` + +You now need to adjust the connection URL to point to your own database. + +

Connection URL

+ +The [format of the connection URL](/orm/reference/connection-urls) for your database typically depends on the database you use. For MySQL, it looks as follows (the parts spelled all-uppercased are _placeholders_ for your specific connection details): + +```no-lines +mysql://USER:PASSWORD@HOST:PORT/DATABASE +``` + +Here's a short explanation of each component: + +- `USER`: The name of your database user +- `PASSWORD`: The password for your database user +- `PORT`: The port where your database server is running (typically `3306` for MySQL) +- `DATABASE`: The name of the [database](https://dev.mysql.com/doc/refman/8.0/en/creating-database.html) + +As an example, for a MySQL database hosted on AWS RDS, the [connection URL](/orm/reference/connection-urls) might look similar to this: + +```bash file=.env +DATABASE_URL="mysql://johndoe:XXX@mysql–instance1.123456789012.us-east-1.rds.amazonaws.com:3306/mydb" +``` + +When running MySQL locally, your connection URL typically looks similar to this: + +```bash file=.env +DATABASE_URL="mysql://root:randompassword@localhost:3306/mydb" +``` diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/100-connect-your-database-typescript-planetscale.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/100-connect-your-database-typescript-planetscale.mdx new file mode 100644 index 0000000000..c20cbdfaab --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/100-connect-your-database-typescript-planetscale.mdx @@ -0,0 +1,94 @@ +--- +title: 'Connect your database' +metaTitle: 'Connect your existing database using TypeScript and PlanetScale' +metaDescription: 'Connect your existing database to your project using TypeScript and PlanetScale' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +sidebar_class_name: hidden-sidebar +hide_table_of_contents: true +toc: false +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/introspection-typescript-planetscale +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/connect-your-database- +--- + +## Connecting your database + +To connect your database, you need to set the `url` field of the `datasource` block in your Prisma schema to your database [connection URL](/orm/reference/connection-urls): + +```prisma file=prisma/schema.prisma showLineNumbers +datasource db { + provider = "postgresql" + url = env("DATABASE_URL") +} +``` + +Note that the default schema created by `prisma init` uses PostgreSQL as the `provider`. For PlanetScale, you need to edit the `datasource` block to use the `mysql` provider instead: + +```prisma file=prisma/schema.prisma highlight=2;edit showLineNumbers +datasource db { + //edit-next-line + provider = "mysql" + url = env("DATABASE_URL") +} +``` + +You will also need to [set the relation mode type to `prisma`](/orm/prisma-schema/data-model/relations/relation-mode#emulate-relations-in-prisma-orm-with-the-prisma-relation-mode) in the `datasource` block: + +```prisma file=schema.prisma highlight=4;add showLineNumbers +datasource db { + provider = "mysql" + url = env("DATABASE_URL") + //add-next-line + relationMode = "prisma" +} +``` + +The `url` is [set via an environment variable](/orm/prisma-schema/overview#accessing-environment-variables-from-the-schema) which is defined in `.env`: + +```bash file=.env +DATABASE_URL="mysql://janedoe:mypassword@server.us-east-2.psdb.cloud/mydb?sslaccept=strict" +``` + +You now need to adjust the connection URL to point to your own database. + +

Connection URL

+ +The [format of the connection URL](/orm/reference/connection-urls) for your database typically depends on the database you use. PlanetScale uses the MySQL connection URL format, which has the following structure (the parts spelled all-uppercased are _placeholders_ for your specific connection details): + +```no-lines +mysql://USER:PASSWORD@HOST:PORT/DATABASE +``` + +Here's a short explanation of each component: + +- `USER`: The name of your database user +- `PASSWORD`: The password for your database user +- `PORT`: The port where your database server is running (typically `3306` for MySQL) +- `DATABASE`: The name of the [database](https://dev.mysql.com/doc/refman/8.0/en/creating-database.html) + +For a database hosted with PlanetScale, the [connection URL](/orm/reference/connection-urls) looks similar to this: + +```bash file=.env +DATABASE_URL="mysql://myusername:mypassword@server.us-east-2.psdb.cloud/mydb?sslaccept=strict" +``` + +The connection URL for a given database branch can be found from your PlanetScale account by going to the overview page for the branch and selecting the 'Connect' dropdown. In the 'Passwords' section, generate a new password and select 'Prisma' to get the Prisma format for the connection URL. + +
+Alternative method: connecting using the PlanetScale CLI + +Alternatively, you can connect to your PlanetScale database server using the [PlanetScale CLI](https://docs.planetscale.com/reference/planetscale-environment-setup), and use a local connection URL. In this case the connection URL will look like this: + +```bash file=.env +DATABASE_URL="mysql://root@localhost:PORT/mydb" +``` + +To connect to your branch, use the following command: + +```terminal +pscale connect prisma-test branchname --port PORT +``` + +The `--port` flag can be omitted if you are using the default port `3306`. + +
diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/100-connect-your-database-typescript-postgresql.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/100-connect-your-database-typescript-postgresql.mdx new file mode 100644 index 0000000000..1b06490a9b --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/100-connect-your-database-typescript-postgresql.mdx @@ -0,0 +1,54 @@ +--- +title: 'Connect your database' +metaTitle: 'Connect your existing database using TypeScript and PostgresSQL' +metaDescription: 'Connect your existing database to your project using TypeScript and PostgresSQL' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +toc: false +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/introspection-typescript-postgresql +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/connect-your-database- +--- + +## Connecting your database + +To connect your database, you need to set the `url` field of the `datasource` block in your Prisma schema to your database [connection URL](/orm/reference/connection-urls): + +```prisma file=prisma/schema.prisma showLineNumbers +datasource db { + provider = "postgresql" + url = env("DATABASE_URL") +} +``` + +In this case, the `url` is [set via an environment variable](/orm/more/development-environment/environment-variables) which is defined in `.env`: + +```bash file=.env +DATABASE_URL="postgresql://johndoe:randompassword@localhost:5432/mydb?schema=public" +``` + +You now need to adjust the connection URL to point to your own database. + +

Connection URL

+ +The [format of the connection URL](/orm/reference/connection-urls) for your database depends on the database you use. For PostgreSQL, it looks as follows (the parts spelled all-uppercased are _placeholders_ for your specific connection details): + +```no-lines +postgresql://USER:PASSWORD@HOST:PORT/DATABASE?schema=SCHEMA +``` + +> **Note**: In most cases, you can use the [`postgres://` and `postgresql:// URI scheme designators interchangeably`](https://www.postgresql.org/docs/10/libpq-connect.html#id-1.7.3.8.3.6) - however, depending on how your database is hosted, you might need to be specific. + +If you're unsure what to provide for the `schema` parameter for a PostgreSQL connection URL, you can probably omit it. In that case, the default schema name `public` will be used. + +As an example, for a PostgreSQL database hosted on Heroku, the connection URL might look similar to this: + +```bash file=.env +DATABASE_URL="postgresql://opnmyfngbknppm:XXX@ec2-46-137-91-216.eu-west-1.compute.amazonaws.com:5432/d50rgmkqi2ipus?schema=hello-prisma" +``` + +When running PostgreSQL locally on macOS, your user and password as well as the database name _typically_ correspond to the current _user_ of your OS, e.g. assuming the user is called `janedoe`: + +```bash file=.env +DATABASE_URL="postgresql://janedoe:janedoe@localhost:5432/janedoe?schema=hello-prisma" +``` diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/100-connect-your-database-typescript-sqlserver.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/100-connect-your-database-typescript-sqlserver.mdx new file mode 100644 index 0000000000..94376ba8a3 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/100-connect-your-database-typescript-sqlserver.mdx @@ -0,0 +1,33 @@ +--- +title: 'Connect your database' +metaTitle: 'Connect your existing database using TypeScript and SQL Server' +metaDescription: 'Connect your existing database to your project using TypeScript and SQL Server' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +toc: false +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/introspection-typescript-sqlserver +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/connect-your-database- +--- + +## Connecting your database + +To connect your database, you need to set the `url` field of the `datasource` block in your Prisma schema to your database [connection URL](/orm/reference/connection-urls): + +```prisma file=prisma/schema.prisma showLineNumbers +datasource db { + provider = "sqlserver" + url = env("DATABASE_URL") +} +``` + +The `url` is [set via an environment variable](/orm/prisma-schema/overview#accessing-environment-variables-from-the-schema), the following example connection URL [uses SQL authentication](/orm/overview/databases/sql-server), but there are [other ways to format your connection URL](/orm/overview/databases/sql-server) + +```bash file=.env +DATABASE_URL="sqlserver://localhost:1433;database=mydb;user=sa;password=r@ndomP@$$w0rd;trustServerCertificate=true" +``` + +Adjust the connection URL to match your setup - see [Microsoft SQL Server connection URL](/orm/overview/databases/sql-server) for more information. + +> Make sure TCP/IP connections are enabled via [SQL Server Configuration Manager](https://docs.microsoft.com/en-us/sql/relational-databases/sql-server-configuration-manager) to avoid `No connection could be made because the target machine actively refused it. (os error 10061)` diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/100-connect-your-database.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/100-connect-your-database.mdx deleted file mode 100644 index 3dc099358c..0000000000 --- a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/100-connect-your-database.mdx +++ /dev/null @@ -1,521 +0,0 @@ ---- -title: 'Connect your database' -metaTitle: 'Connect your database' -metaDescription: 'Connect your database to your project' -langSwitcher: ['typescript', 'node'] -dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] -toc: false ---- - -## Connecting your database - -To connect your database, you need to set the `url` field of the `datasource` block in your Prisma schema to your database [connection URL](/orm/reference/connection-urls): - - - -```prisma file=prisma/schema.prisma -datasource db { - provider = "postgresql" - url = env("DATABASE_URL") -} -``` - -In this case, the `url` is [set via an environment variable](/orm/more/development-environment/environment-variables) which is defined in `.env`: - -```bash file=.env -DATABASE_URL="postgresql://johndoe:randompassword@localhost:5432/mydb?schema=public" -``` - -You now need to adjust the connection URL to point to your own database. - -

Connection URL

- -The [format of the connection URL](/orm/reference/connection-urls) for your database depends on the database you use. For PostgreSQL, it looks as follows (the parts spelled all-uppercased are _placeholders_ for your specific connection details): - -```no-lines -postgresql://USER:PASSWORD@HOST:PORT/DATABASE?schema=SCHEMA -``` - -> **Note**: In most cases, you can use the [`postgres://` and `postgresql:// URI scheme designators interchangeably`](https://www.postgresql.org/docs/10/libpq-connect.html#id-1.7.3.8.3.6) - however, depending on how your database is hosted, you might need to be specific. - -If you're unsure what to provide for the `schema` parameter for a PostgreSQL connection URL, you can probably omit it. In that case, the default schema name `public` will be used. - -As an example, for a PostgreSQL database hosted on Heroku, the connection URL might look similar to this: - -```bash file=.env -DATABASE_URL="postgresql://opnmyfngbknppm:XXX@ec2-46-137-91-216.eu-west-1.compute.amazonaws.com:5432/d50rgmkqi2ipus?schema=hello-prisma" -``` - -When running PostgreSQL locally on macOS, your user and password as well as the database name _typically_ correspond to the current _user_ of your OS, e.g. assuming the user is called `janedoe`: - -```bash file=.env -DATABASE_URL="postgresql://janedoe:janedoe@localhost:5432/janedoe?schema=hello-prisma" -``` - -
- - - -```prisma file=prisma/schema.prisma -datasource db { - provider = "postgresql" - url = env("DATABASE_URL") -} -``` - -Note that the default schema created by `prisma init` uses PostgreSQL, so you first need to switch the `provider` to `mysql`: - -```prisma file=prisma/schema.prisma highlight=2;edit -datasource db { - provider = "mysql" - url = env("DATABASE_URL") -} -``` - -In this case, the `url` is [set via an environment variable](/orm/prisma-schema/overview#accessing-environment-variables-from-the-schema) which is defined in `.env`: - -```bash file=.env -DATABASE_URL="mysql://johndoe:randompassword@localhost:3306/mydb" -``` - -You now need to adjust the connection URL to point to your own database. - -

Connection URL

- -The [format of the connection URL](/orm/reference/connection-urls) for your database typically depends on the database you use. For MySQL, it looks as follows (the parts spelled all-uppercased are _placeholders_ for your specific connection details): - -```no-lines -mysql://USER:PASSWORD@HOST:PORT/DATABASE -``` - -Here's a short explanation of each component: - -- `USER`: The name of your database user -- `PASSWORD`: The password for your database user -- `PORT`: The port where your database server is running (typically `3306` for MySQL) -- `DATABASE`: The name of the [database](https://dev.mysql.com/doc/refman/8.0/en/creating-database.html) - -As an example, for a MySQL database hosted on AWS RDS, the [connection URL](/orm/reference/connection-urls) might look similar to this: - -```bash file=.env -DATABASE_URL="mysql://johndoe:XXX@mysql–instance1.123456789012.us-east-1.rds.amazonaws.com:3306/mydb" -``` - -When running MySQL locally, your connection URL typically looks similar to this: - -```bash file=.env -DATABASE_URL="mysql://root:randompassword@localhost:3306/mydb" -``` - -
- - - -```prisma file=prisma/schema.prisma -datasource db { - provider = "postgresql" - url = env("DATABASE_URL") -} -``` - -Note that the default schema created by `prisma init` uses PostgreSQL as the `provider`. For PlanetScale, you need to edit the `datasource` block to use the `mysql` provider instead: - -```prisma file=prisma/schema.prisma highlight=2;edit -datasource db { - provider = "mysql" - url = env("DATABASE_URL") -} -``` - -You will also need to set the relation mode type to `prisma` in order to [emulate foreign key constraints](/orm/overview/databases/planetscale#option-1-emulate-relations-in-prisma-client) in the `datasource` block: - -```prisma file=schema.prisma highlight=4;add -datasource db { - provider = "mysql" - url = env("DATABASE_URL") - relationMode = "prisma" -} -``` - -> **Note**: Since February 2024, you can alternatively [use foreign key constraints on a database-level in PlanetScale](/orm/overview/databases/planetscale#option-2-enable-foreign-key-constraints-in-the-planetscale-database-settings), which omits the need for setting `relationMode = "prisma"`. - -The `url` is [set via an environment variable](/orm/prisma-schema/overview#accessing-environment-variables-from-the-schema) which is defined in `.env`: - -```bash file=.env -DATABASE_URL="mysql://janedoe:mypassword@server.us-east-2.psdb.cloud/mydb?sslaccept=strict" -``` - -You now need to adjust the connection URL to point to your own database. - -

Connection URL

- -The [format of the connection URL](/orm/reference/connection-urls) for your database typically depends on the database you use. PlanetScale uses the MySQL connection URL format, which has the following structure (the parts spelled all-uppercased are _placeholders_ for your specific connection details): - -```no-lines -mysql://USER:PASSWORD@HOST:PORT/DATABASE -``` - -Here's a short explanation of each component: - -- `USER`: The name of your database user -- `PASSWORD`: The password for your database user -- `PORT`: The port where your database server is running (typically `3306` for MySQL) -- `DATABASE`: The name of the [database](https://dev.mysql.com/doc/refman/8.0/en/creating-database.html) - -For a database hosted with PlanetScale, the [connection URL](/orm/reference/connection-urls) looks similar to this: - -```bash file=.env -DATABASE_URL="mysql://myusername:mypassword@server.us-east-2.psdb.cloud/mydb?sslaccept=strict" -``` - -The connection URL for a given database branch can be found from your PlanetScale account by going to the overview page for the branch and selecting the 'Connect' dropdown. In the 'Passwords' section, generate a new password and select 'Prisma' to get the Prisma format for the connection URL. - -
Alternative method: connecting using the PlanetScale CLI - -Alternatively, you can connect to your PlanetScale database server using the [PlanetScale CLI](https://docs.planetscale.com/reference/planetscale-environment-setup), and use a local connection URL. In this case the connection URL will look like this: - -```bash file=.env -DATABASE_URL="mysql://root@localhost:PORT/mydb" -``` - -To connect to your branch, use the following command: - -```terminal -pscale connect prisma-test branchname --port PORT -``` - -The `--port` flag can be omitted if you are using the default port `3306`. - -
- -
- - - -```prisma file=prisma/schema.prisma -datasource db { - provider = "sqlserver" - url = env("DATABASE_URL") -} -``` - -The `url` is [set via an environment variable](/orm/prisma-schema/overview#accessing-environment-variables-from-the-schema), the following example connection URL [uses SQL authentication](/orm/overview/databases/sql-server), but there are [other ways to format your connection URL](/orm/overview/databases/sql-server) - -```bash file=.env -DATABASE_URL="sqlserver://localhost:1433;database=mydb;user=sa;password=r@ndomP@$$w0rd;trustServerCertificate=true" -``` - -Adjust the connection URL to match your setup - see [Microsoft SQL Server connection URL](/orm/overview/databases/sql-server) for more information. - -> Make sure TCP/IP connections are enabled via [SQL Server Configuration Manager](https://docs.microsoft.com/en-us/sql/relational-databases/sql-server-configuration-manager) to avoid `No connection could be made because the target machine actively refused it. (os error 10061)` - - - - - -```prisma file=prisma/schema.prisma -datasource db { - provider = "postgresql" - url = env("DATABASE_URL") -} -``` - -Note that the default schema created by `prisma init` uses PostgreSQL as the `provider`. For CockroachDB, you need to edit the `datasource` block to use the `cockroachdb` provider instead: - -```prisma file=prisma/schema.prisma highlight=2;edit -datasource db { - provider = "cockroachdb" - url = env("DATABASE_URL") -} -``` - -The `url` is [set via an environment variable](/orm/more/development-environment/environment-variables) which is defined in `.env`. You now need to adjust the connection URL to point to your own database. - -

Connection URL

- -The [format of the connection URL](/orm/reference/connection-urls) for your database depends on the database you use. CockroachDB uses the PostgreSQL connection URL format, which has the following structure (the parts spelled all-uppercased are _placeholders_ for your specific connection details): - -```no-lines -postgresql://USER:PASSWORD@HOST:PORT/DATABASE?PARAMETERS -``` - -Here's a short explanation of each component: - -- `USER`: The name of your database user -- `PASSWORD`: The password for your database user -- `PORT`: The port where your database server is running. The default for CockroachDB is `26257`. -- `DATABASE`: The name of the database -- `PARAMETERS`: Any additional connection parameters. See the CockroachDB documentation [here](https://www.cockroachlabs.com/docs/stable/connection-parameters.html#additional-connection-parameters). - -For a [CockroachDB Serverless](https://www.cockroachlabs.com/docs/cockroachcloud/quickstart.html) or [Cockroach Dedicated](https://www.cockroachlabs.com/docs/cockroachcloud/quickstart-trial-cluster) database hosted on [CockroachDB Cloud](https://www.cockroachlabs.com/get-started-cockroachdb/), the [connection URL](/orm/reference/connection-urls) looks similar to this: - -```bash file=.env -DATABASE_URL="postgresql://:@..cockroachlabs.cloud:26257/defaultdb?sslmode=verify-full&sslrootcert=$HOME/.postgresql/root.crt&options=--" -``` - -To find your connection string on CockroachDB Cloud, click the 'Connect' button on the overview page for your database cluster, and select the 'Connection string' tab. - -For a [CockroachDB database hosted locally](https://www.cockroachlabs.com/docs/stable/secure-a-cluster.html), the [connection URL](/orm/reference/connection-urls) looks similar to this: - -```bash file=.env -DATABASE_URL="postgresql://root@localhost:26257?sslmode=disable" -``` - -Your connection string is displayed as part of the welcome text when starting CockroachDB from the command line. - -
- - - - - - - Installation - - - - Introspection - - - - - - - - - - - - Installation - - - - Introspection - - - - - - - - - - - - Installation - - - - Introspection - - - - - - - - - - - - Installation - - - - Introspection - - - - - - - - - - - - Installation - - - - Introspection - - - - - - - - - - - - Installation - - - - Introspection - - - - - - - - - - - - Installation - - - - Introspection - - - - - - - - - - - - Installation - - - - Introspection - - - - - - - - - - - - Installation - - - - Introspection - - - - - - - - - - - - Installation - - - - Introspection - - - - - diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/150-introspection-node-cockroachdb.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/150-introspection-node-cockroachdb.mdx new file mode 100644 index 0000000000..9207a63df9 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/150-introspection-node-cockroachdb.mdx @@ -0,0 +1,215 @@ +--- +title: 'Introspection' +metaTitle: 'Introspection with Prisma ORM, JavaScript, and CockroachDB' +metaDescription: 'Introspect your existing project with Prisma ORM, JavaScript, and CockroachDB' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/baseline-your-database-node-cockroachdb +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/introspection- +--- + +## Introspect your database with Prisma ORM + +For the purpose of this guide, we'll use a demo SQL schema with three tables: + +```sql no-lines +CREATE TABLE "User" ( + id INT8 PRIMARY KEY DEFAULT unique_rowid(), + name STRING(255), + email STRING(255) UNIQUE NOT NULL +); + +CREATE TABLE "Post" ( + id INT8 PRIMARY KEY DEFAULT unique_rowid(), + title STRING(255) UNIQUE NOT NULL, + "createdAt" TIMESTAMP NOT NULL DEFAULT now(), + content STRING, + published BOOLEAN NOT NULL DEFAULT false, + "authorId" INT8 NOT NULL, + FOREIGN KEY ("authorId") REFERENCES "User"(id) +); + +CREATE TABLE "Profile" ( + id INT8 PRIMARY KEY DEFAULT unique_rowid(), + bio STRING, + "userId" INT8 UNIQUE NOT NULL, + FOREIGN KEY ("userId") REFERENCES "User"(id) +); +``` + +> **Note**: Some fields are written in double quotes to ensure CockroachDB uses proper casing. If no double-quotes were used, CockroachDB would just read everything as _lowercase_ characters. + +
+Expand for a graphical overview of the tables + +**User** + +| Column name | Type | Primary key | Foreign key | Required | Default | +| :---------- | :------------ | :---------- | :---------- | :------- | :----------------- | +| `id` | `INT8` | **✔️** | No | **✔️** | _autoincrementing_ | +| `name` | `STRING(255)` | No | No | No | - | +| `email` | `STRING(255)` | No | No | **✔️** | - | + +**Post** + +| Column name | Type | Primary key | Foreign key | Required | Default | +| :---------- | :------------ | :---------- | :---------- | :------- | :----------------- | +| `id` | `INT8` | **✔️** | No | **✔️** | _autoincrementing_ | +| `createdAt` | `TIMESTAMP` | No | No | **✔️** | `now()` | +| `title` | `STRING(255)` | No | No | **✔️** | - | +| `content` | `STRING` | No | No | No | - | +| `published` | `BOOLEAN` | No | No | **✔️** | `false` | +| `authorId` | `INT8` | No | **✔️** | **✔️** | - | + +**Profile** + +| Column name | Type | Primary key | Foreign key | Required | Default | +| :---------- | :------- | :---------- | :---------- | :------- | :----------------- | +| `id` | `INT8` | **✔️** | No | **✔️** | _autoincrementing_ | +| `bio` | `STRING` | No | No | No | - | +| `userId` | `INT8` | No | **✔️** | **✔️** | - | + +
+ +As a next step, you will introspect your database. The result of the introspection will be a [data model](/orm/prisma-schema/data-model/models) inside your Prisma schema. + +Run the following command to introspect your database: + +```terminal copy +npx prisma db pull +``` + +This commands reads the environment variable used to define the `url` in your `schema.prisma`, `DATABASE_URL`, that in our case is set in `.env` and connects to your database. Once the connection is established, it introspects the database (i.e. it _reads the database schema_). It then translates the database schema from SQL into a Prisma data model. + +After the introspection is complete, your Prisma schema file was updated: + +![Introspect your database](/img/getting-started/prisma-db-pull-generate-schema.png) + +The data model now looks similar to this: + +```prisma file=prisma/schema.prisma showLineNumbers +model Post { + id BigInt @id @default(autoincrement()) + title String @unique @db.String(255) + createdAt DateTime @default(now()) @db.Timestamp(6) + content String? + published Boolean @default(false) + authorId BigInt + User User @relation(fields: [authorId], references: [id], onDelete: NoAction, onUpdate: NoAction) +} + +model Profile { + id BigInt @id @default(autoincrement()) + bio String? + userId BigInt @unique + User User @relation(fields: [userId], references: [id], onDelete: NoAction, onUpdate: NoAction) +} + +model User { + id BigInt @id @default(autoincrement()) + name String? @db.String(255) + email String @unique @db.String(255) + Post Post[] + Profile Profile? +} +``` + +Prisma ORM's data model is a declarative representation of your database schema and serves as the foundation for the generated Prisma Client library. Your Prisma Client instance will expose queries that are _tailored_ to these models. + +Right now, there's a few minor "issues" with the data model: + +- The `User` relation field is uppercased and therefore doesn't adhere to Prisma's [naming conventions](/orm/reference/prisma-schema-reference#naming-conventions-1) . To express more "semantics", it would also be nice if this field was called `author` to _describe_ the relationship between `User` and `Post` better. +- The `Post` and `Profile` relation fields on `User` as well as the `User` relation field on `Profile` are all uppercased. To adhere to Prisma's [naming conventions](/orm/reference/prisma-schema-reference#naming-conventions-1) , both fields should be lowercased to `post`, `profile` and `user`. +- Even after lowercasing, the `post` field on `User` is still slightly misnamed. That's because it actually refers to a [list](/orm/prisma-schema/data-model/models#type-modifiers) of posts – a better name therefore would be the plural form: `posts`. + +These changes are relevant for the generated Prisma Client API where using lowercased relation fields `author`, `posts`, `profile` and `user` will feel more natural and idiomatic to JavaScript/TypeScript developers. You can therefore [configure your Prisma Client API](/orm/prisma-client/setup-and-configuration/custom-model-and-field-names). + +Because [relation fields](/orm/prisma-schema/data-model/relations#relation-fields) are _virtual_ (i.e. they _do not directly manifest in the database_), you can manually rename them in your Prisma schema without touching the database: + +```prisma file=prisma/schema.prisma highlight=8,15,22,23;edit showLineNumbers +model Post { + id BigInt @id @default(autoincrement()) + title String @unique @db.String(255) + createdAt DateTime @default(now()) @db.Timestamp(6) + content String? + published Boolean @default(false) + authorId BigInt + //edit-next-line + author User @relation(fields: [authorId], references: [id], onDelete: NoAction, onUpdate: NoAction) +} + +model Profile { + id BigInt @id @default(autoincrement()) + bio String? + userId BigInt @unique + //edit-next-line + user User @relation(fields: [userId], references: [id], onDelete: NoAction, onUpdate: NoAction) +} + +model User { + id BigInt @id @default(autoincrement()) + name String? @db.String(255) + email String @unique @db.String(255) + //edit-start + posts Post[] + profile Profile? + //edit-end +} +``` + +In this example, the database schema did follow the [naming conventions](/orm/reference/prisma-schema-reference#naming-conventions) for Prisma ORM models (only the virtual relation fields that were generated from introspection did not adhere to them and needed adjustment). This optimizes the ergonomics of the generated Prisma Client API. + +
+ Using custom model and field names + +Sometimes though, you may want to make additional changes to the names of the columns and tables that are exposed in the Prisma Client API. A common example is to translate _snake_case_ notation which is often used in database schemas into _PascalCase_ and _camelCase_ notations which feel more natural for JavaScript/TypeScript developers. + +Assume you obtained the following model from introspection that's based on _snake_case_ notation: + +```prisma no-lines +model my_user { + user_id Int @id @default(sequence()) + first_name String? + last_name String @unique +} +``` + +If you generated a Prisma Client API for this model, it would pick up the _snake_case_ notation in its API: + +```ts no-lines +const user = await prisma.my_user.create({ + data: { + first_name: 'Alice', + last_name: 'Smith', + }, +}) +``` + +If you don't want to use the table and column names from your database in your Prisma Client API, you can configure them with [`@map` and `@@map`](/orm/prisma-schema/data-model/models#mapping-model-names-to-tables-or-collections): + +```prisma no-lines +model MyUser { + userId Int @id @default(sequence()) @map("user_id") + firstName String? @map("first_name") + lastName String @unique @map("last_name") + + @@map("my_user") +} +``` + +With this approach, you can name your model and its fields whatever you like and use the `@map` (for field names) and `@@map` (for models names) to point to the underlying tables and columns. Your Prisma Client API now looks as follows: + +```ts no-lines +const user = await prisma.myUser.create({ + data: { + firstName: 'Alice', + lastName: 'Smith', + }, +}) +``` + +Learn more about this on the [Configuring your Prisma Client API](/orm/prisma-client/setup-and-configuration/custom-model-and-field-names) page. + +
diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/150-introspection-node-mysql.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/150-introspection-node-mysql.mdx new file mode 100644 index 0000000000..dd14984615 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/150-introspection-node-mysql.mdx @@ -0,0 +1,218 @@ +--- +title: 'Introspection' +metaTitle: 'Introspection with Prisma ORM, JavaScript, and MySQL' +metaDescription: 'Introspect your existing project with Prisma ORM, JavaScript, and MySQL' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/baseline-your-database-node-mysql +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/introspection- +--- + +## Introspect your database with Prisma ORM + +For the purpose of this guide, we'll use a demo SQL schema with three tables: + +```sql no-lines +CREATE TABLE User ( + id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL, + name VARCHAR(255), + email VARCHAR(255) UNIQUE NOT NULL +); + +CREATE TABLE Post ( + id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL, + title VARCHAR(255) NOT NULL, + createdAt TIMESTAMP NOT NULL DEFAULT now(), + content TEXT, + published BOOLEAN NOT NULL DEFAULT false, + authorId INTEGER NOT NULL, + FOREIGN KEY (authorId) REFERENCES User(id) +); + +CREATE TABLE Profile ( + id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL, + bio TEXT, + userId INTEGER UNIQUE NOT NULL, + FOREIGN KEY (userId) REFERENCES User(id) +); +``` + +
+Expand for a graphical overview of the tables + +**User** + +| Column name | Type | Primary key | Foreign key | Required | Default | +| :---------- | :------------- | :---------- | :---------- | :------- | :----------------- | +| `id` | `INTEGER` | **✔️** | No | **✔️** | _autoincrementing_ | +| `name` | `VARCHAR(255)` | No | No | No | - | +| `email` | `VARCHAR(255)` | No | No | **✔️** | - | + +**Post** + +| Column name | Type | Primary key | Foreign key | Required | Default | +| :---------- | :------------- | :---------- | :---------- | :------- | :----------------- | +| `id` | `INTEGER` | **✔️** | No | **✔️** | _autoincrementing_ | +| `createdAt` | `DATETIME(3)` | No | No | **✔️** | `now()` | +| `title` | `VARCHAR(255)` | No | No | **✔️** | - | +| `content` | `TEXT` | No | No | No | - | +| `published` | `BOOLEAN` | No | No | **✔️** | `false` | +| `authorId` | `INTEGER` | No | **✔️** | **✔️** | `false` | + +**Profile** + +| Column name | Type | Primary key | Foreign key | Required | Default | +| :---------- | :-------- | :---------- | :---------- | :------- | :----------------- | +| `id` | `INTEGER` | **✔️** | No | **✔️** | _autoincrementing_ | +| `bio` | `TEXT` | No | No | No | - | +| `userId` | `INTEGER` | No | **✔️** | **✔️** | - | + +
+ +As a next step, you will introspect your database. The result of the introspection will be a [data model](/orm/prisma-schema/data-model/models) inside your Prisma schema. + +Run the following command to introspect your database: + +```terminal copy +npx prisma db pull +``` + +This commands reads the `DATABASE_URL` environment variable that's defined in `.env` and connects to your database. Once the connection is established, it introspects the database (i.e. it _reads the database schema_). It then translates the database schema from SQL into a Prisma data model. + +After the introspection is complete, your Prisma schema file was updated: + +![Introspect your database](/img/getting-started/prisma-db-pull-generate-schema.png) + +The data model now looks similar to this (note that the fields on the models have been reordered for better readability): + +```prisma file=prisma/schema.prisma showLineNumbers +model Post { + id Int @id @default(autoincrement()) + title String @db.VarChar(255) + createdAt DateTime @default(now()) @db.Timestamp(0) + content String? @db.Text + published Boolean @default(false) + authorId Int + User User @relation(fields: [authorId], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "Post_ibfk_1") + + @@index([authorId], map: "authorId") +} + +model Profile { + id Int @id @default(autoincrement()) + bio String? @db.Text + userId Int @unique(map: "userId") + User User @relation(fields: [userId], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "Profile_ibfk_1") +} + +model User { + id Int @id @default(autoincrement()) + name String? @db.VarChar(255) + email String @unique(map: "email") @db.VarChar(255) + Post Post[] + Profile Profile? +} +``` + + + +Refer to the [Prisma schema reference](/orm/reference/prisma-schema-reference) for detailed information about the schema definition. + + + +Prisma ORM's data model is a declarative representation of your database schema and serves as the foundation for the generated Prisma Client library. Your Prisma Client instance will expose queries that are _tailored_ to these models. + +Right now, there's a few minor "issues" with the data model: + +- The `User` relation field is uppercased and therefore doesn't adhere to Prisma's [naming conventions](/orm/reference/prisma-schema-reference#naming-conventions-1) . To express more "semantics", it would also be nice if this field was called `author` to _describe_ the relationship between `User` and `Post` better. +- The `Post` and `Profile` relation fields on `User` as well as the `User` relation field on `Profile` are all uppercased. To adhere to Prisma's [naming conventions](/orm/reference/prisma-schema-reference#naming-conventions-1) , both fields should be lowercased to `post`, `profile` and `user`. +- Even after lowercasing, the `post` field on `User` is still slightly misnamed. That's because it actually refers to a [list](/orm/prisma-schema/data-model/models#type-modifiers) of posts – a better name therefore would be the plural form: `posts`. + +These changes are relevant for the generated Prisma Client API where using lowercased relation fields `author`, `posts`, `profile` and `user` will feel more natural and idiomatic to JavaScript/TypeScript developers. You can therefore [configure your Prisma Client API](/orm/prisma-client/setup-and-configuration/custom-model-and-field-names). + +Because [relation fields](/orm/prisma-schema/data-model/relations#relation-fields) are _virtual_ (i.e. they _do not directly manifest in the database_), you can manually rename them in your Prisma schema without touching the database: + +```prisma file=prisma/schema.prisma highlight=8,17,24,25;edit showLineNumbers +model Post { + id Int @id @default(autoincrement()) + title String @db.VarChar(255) + createdAt DateTime @default(now()) @db.Timestamp(0) + content String? @db.Text + published Boolean @default(false) + authorId Int + //edit-next-line + author User @relation(fields: [authorId], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "Post_ibfk_1") + + @@index([authorId], map: "authorId") +} + +model Profile { + id Int @id @default(autoincrement()) + bio String? @db.Text + userId Int @unique(map: "userId") + //edit-next-line + user User @relation(fields: [userId], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "Profile_ibfk_1") +} + +model User { + id Int @id @default(autoincrement()) + name String? @db.VarChar(255) + email String @unique(map: "email") @db.VarChar(255) + //edit-start + posts Post[] + profile Profile? + //edit-end +} +``` + +In this example, the database schema did follow the [naming conventions](/orm/reference/prisma-schema-reference#naming-conventions) for Prisma ORM models (only the virtual relation fields that were generated from introspection did not adhere to them and needed adjustment). This optimizes the ergonomics of the generated Prisma Client API. + +Sometimes though, you may want to make additional changes to the names of the columns and tables that are exposed in the Prisma Client API. A common example is to translate _snake_case_ notation which is often used in database schemas into _PascalCase_ and _camelCase_ notations which feel more natural for JavaScript/TypeScript developers. + +Assume you obtained the following model from introspection that's based on _snake_case_ notation: + +```prisma no-lines +model my_user { + user_id Int @id @default(autoincrement()) + first_name String? + last_name String @unique +} +``` + +If you generated a Prisma Client API for this model, it would pick up the _snake_case_ notation in its API: + +```ts no-lines +const user = await prisma.my_user.create({ + data: { + first_name: 'Alice', + last_name: 'Smith', + }, +}) +``` + +If you don't want to use the table and column names from your database in your Prisma Client API, you can configure them with [`@map` and `@@map`](/orm/prisma-schema/data-model/models#mapping-model-names-to-tables-or-collections): + +```prisma no-lines +model MyUser { + userId Int @id @default(autoincrement()) @map("user_id") + firstName String? @map("first_name") + lastName String @unique @map("last_name") + + @@map("my_user") +} +``` + +With this approach, you can name your model and its fields whatever you like and use the `@map` (for field names) and `@@map` (for models names) to point to the underlying tables and columns. Your Prisma Client API now looks as follows: + +```ts no-lines +const user = await prisma.myUser.create({ + data: { + firstName: 'Alice', + lastName: 'Smith', + }, +}) +``` + +Learn more about this on the [Configuring your Prisma Client API](/orm/prisma-client/setup-and-configuration/custom-model-and-field-names) page. diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/150-introspection-node-planetscale.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/150-introspection-node-planetscale.mdx new file mode 100644 index 0000000000..6e5a6d7f2c --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/150-introspection-node-planetscale.mdx @@ -0,0 +1,235 @@ +--- +title: 'Introspection' +metaTitle: 'Introspection with Prisma ORM, JavaScript, and PlanetScale' +metaDescription: 'Introspect your existing project with Prisma ORM, JavaScript, and PlanetScale' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/baseline-your-database-node-postgresql +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/introspection- +--- + + +## Introspect your database with Prisma ORM + +For the purpose of this guide, we'll use a demo SQL schema with three tables: + +```sql no-lines +CREATE TABLE `Post` ( + `id` int NOT NULL AUTO_INCREMENT, + `createdAt` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + `updatedAt` datetime(3) NOT NULL, + `title` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `content` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `published` tinyint(1) NOT NULL DEFAULT '0', + `authorId` int NOT NULL, + PRIMARY KEY (`id`), + KEY `Post_authorId_idx` (`authorId`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +CREATE TABLE `Profile` ( + `id` int NOT NULL AUTO_INCREMENT, + `bio` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `userId` int NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `Profile_userId_key` (`userId`), + KEY `Profile_userId_idx` (`userId`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +CREATE TABLE `User` ( + `id` int NOT NULL AUTO_INCREMENT, + `email` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL, + `name` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `User_email_key` (`email`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +``` + +
+Expand for a graphical overview of the tables + +**Post** + +| Column name | Type | Primary key | Foreign key | Required | Default | +| :---------- | :------------- | :---------- | :---------- | :------- | :----------------- | +| `id` | `int` | **✔️** | No | **✔️** | _autoincrementing_ | +| `createdAt` | `datetime(3)` | No | No | **✔️** | `now()` | +| `updatedAt` | `datetime(3)` | No | No | **✔️** | | +| `title` | `varchar(255)` | No | No | **✔️** | - | +| `content` | `varchar(191)` | No | No | No | - | +| `published` | `tinyint(1)` | No | No | **✔️** | `false` | +| `authorId` | `int` | No | No | **✔️** | - | + +**Profile** + +| Column name | Type | Primary key | Foreign key | Required | Default | +| :---------- | :------------- | :---------- | :---------- | :------- | :----------------- | +| `id` | `int` | **✔️** | No | **✔️** | _autoincrementing_ | +| `bio` | `varchar(191)` | No | No | No | - | +| `userId` | `int` | No | No | **✔️** | - | + +**User** + +| Column name | Type | Primary key | Foreign key | Required | Default | +| :---------- | :------------- | :---------- | :---------- | :------- | :----------------- | +| `id` | `int` | **✔️** | No | **✔️** | _autoincrementing_ | +| `name` | `varchar(191)` | No | No | No | - | +| `email` | `varchar(191)` | No | No | **✔️** | - | + +
+ +As a next step, you will introspect your database. The result of the introspection will be a [data model](/orm/prisma-schema/data-model/models) inside your Prisma schema. + +Run the following command to introspect your database: + +```terminal copy +npx prisma db pull +``` + +This commands reads the `DATABASE_URL` environment variable that's defined in `.env` and connects to your database. Once the connection is established, it introspects the database (i.e. it _reads the database schema_). It then translates the database schema from SQL into a Prisma data model. + +After the introspection is complete, your Prisma schema file was updated: + +![Introspect your database](/img/getting-started/prisma-db-pull-generate-schema.png) + +The data model now looks similar to this: + +```prisma file=prisma/schema.prisma showLineNumbers +model Post { + id Int @id @default(autoincrement()) + createdAt DateTime @default(now()) + updatedAt DateTime + title String @db.VarChar(255) + content String? + published Boolean @default(false) + authorId Int + + @@index([authorId]) +} + +model Profile { + id Int @id @default(autoincrement()) + bio String? + userId Int @unique + + @@index([userId]) +} + +model User { + id Int @id @default(autoincrement()) + email String @unique + name String? +} +``` + + + +Refer to the [Prisma schema reference](/orm/reference/prisma-schema-reference) for detailed information about the schema definition. + + + +Prisma's data model is a declarative representation of your database schema and serves as the foundation for the generated Prisma Client library. Your Prisma Client instance will expose queries that are _tailored_ to these models. + +You will then need to add in any missing relations between your data using [relation fields](/orm/prisma-schema/data-model/relations#relation-fields): + +```prisma file=prisma/schema.prisma highlight=8,17,27,28;add showLineNumbers +model Post { + id Int @id @default(autoincrement()) + createdAt DateTime @default(now()) + updatedAt DateTime + title String @db.VarChar(255) + content String? + published Boolean @default(false) + //add-next-line + author User @relation(fields: [authorId], references: [id]) + authorId Int + + @@index([authorId]) +} + +model Profile { + id Int @id @default(autoincrement()) + bio String? + //add-next-line + user User @relation(fields: [userId], references: [id]) + userId Int @unique + + @@index([userId]) +} + +model User { + id Int @id @default(autoincrement()) + email String @unique + name String? + //add-start + posts Post[] + profile Profile? + //add-end +} +``` + +After this, run introspection on your database for a second time: + +```terminal copy +npx prisma db pull +``` + +Prisma Migrate will now keep the manually added relation fields. + +Because relation fields are _virtual_ (i.e. they _do not directly manifest in the database_), you can manually rename them in your Prisma schema without touching the database. + +In this example, the database schema follows the [naming conventions](/orm/reference/prisma-schema-reference#naming-conventions) for Prisma ORM models. This optimizes the ergonomics of the generated Prisma Client API. + +
+ Using custom model and field names + +Sometimes though, you may want to make additional changes to the names of the columns and tables that are exposed in the Prisma Client API. A common example is to translate _snake_case_ notation which is often used in database schemas into _PascalCase_ and _camelCase_ notations which feel more natural for JavaScript/TypeScript developers. + +Assume you obtained the following model from introspection that's based on _snake_case_ notation: + +```prisma no-lines +model my_user { + user_id Int @id @default(autoincrement()) + first_name String? + last_name String @unique +} +``` + +If you generated a Prisma Client API for this model, it would pick up the _snake_case_ notation in its API: + +```ts no-lines +const user = await prisma.my_user.create({ + data: { + first_name: 'Alice', + last_name: 'Smith', + }, +}) +``` + +If you don't want to use the table and column names from your database in your Prisma Client API, you can configure them with [`@map` and `@@map`](/orm/prisma-schema/data-model/models#mapping-model-names-to-tables-or-collections): + +```prisma no-lines +model MyUser { + userId Int @id @default(autoincrement()) @map("user_id") + firstName String? @map("first_name") + lastName String @unique @map("last_name") + + @@map("my_user") +} +``` + +With this approach, you can name your model and its fields whatever you like and use the `@map` (for field names) and `@@map` (for models names) to point to the underlying tables and columns. Your Prisma Client API now looks as follows: + +```ts no-lines +const user = await prisma.myUser.create({ + data: { + firstName: 'Alice', + lastName: 'Smith', + }, +}) +``` + +Learn more about this on the [Configuring your Prisma Client API](/orm/prisma-client/setup-and-configuration/custom-model-and-field-names) page. + +
diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/150-introspection-node-postgresql.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/150-introspection-node-postgresql.mdx new file mode 100644 index 0000000000..7f7e12d8c7 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/150-introspection-node-postgresql.mdx @@ -0,0 +1,216 @@ +--- +title: 'Introspection' +metaTitle: 'Introspection with Prisma ORM, JavaScript, and PostgreSQL' +metaDescription: 'Introspect your existing project with Prisma ORM, JavaScript, and PostgreSQL' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/baseline-your-database-node-postgresql +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/introspection- +--- + + +## Introspect your database with Prisma ORM + +For the purpose of this guide, we'll use a demo SQL schema with three tables: + +```sql no-lines +CREATE TABLE "public"."User" ( + id SERIAL PRIMARY KEY NOT NULL, + name VARCHAR(255), + email VARCHAR(255) UNIQUE NOT NULL +); + +CREATE TABLE "public"."Post" ( + id SERIAL PRIMARY KEY NOT NULL, + title VARCHAR(255) NOT NULL, + "createdAt" TIMESTAMP NOT NULL DEFAULT now(), + content TEXT, + published BOOLEAN NOT NULL DEFAULT false, + "authorId" INTEGER NOT NULL, + FOREIGN KEY ("authorId") REFERENCES "public"."User"(id) +); + +CREATE TABLE "public"."Profile" ( + id SERIAL PRIMARY KEY NOT NULL, + bio TEXT, + "userId" INTEGER UNIQUE NOT NULL, + FOREIGN KEY ("userId") REFERENCES "public"."User"(id) +); +``` + +> **Note**: Some fields are written in double-quotes to ensure PostgreSQL uses proper casing. If no double-quotes were used, PostgreSQL would just read everything as _lowercase_ characters. + +
+Expand for a graphical overview of the tables + +**User** + +| Column name | Type | Primary key | Foreign key | Required | Default | +| :---------- | :------------- | :---------- | :---------- | :------- | :----------------- | +| `id` | `SERIAL` | **✔️** | No | **✔️** | _autoincrementing_ | +| `name` | `VARCHAR(255)` | No | No | No | - | +| `email` | `VARCHAR(255)` | No | No | **✔️** | - | + +**Post** + +| Column name | Type | Primary key | Foreign key | Required | Default | +| :---------- | :------------- | :---------- | :---------- | :------- | :----------------- | +| `id` | `SERIAL` | **✔️** | No | **✔️** | _autoincrementing_ | +| `createdAt` | `TIMESTAMP` | No | No | **✔️** | `now()` | +| `title` | `VARCHAR(255)` | No | No | **✔️** | - | +| `content` | `TEXT` | No | No | No | - | +| `published` | `BOOLEAN` | No | No | **✔️** | `false` | +| `authorId` | `INTEGER` | No | **✔️** | **✔️** | - | + +**Profile** + +| Column name | Type | Primary key | Foreign key | Required | Default | +| :---------- | :-------- | :---------- | :---------- | :------- | :----------------- | +| `id` | `SERIAL` | **✔️** | No | **✔️** | _autoincrementing_ | +| `bio` | `TEXT` | No | No | No | - | +| `userId` | `INTEGER` | No | **✔️** | **✔️** | - | + +
+ +As a next step, you will introspect your database. The result of the introspection will be a [data model](/orm/prisma-schema/data-model/models) inside your Prisma schema. + +Run the following command to introspect your database: + +```terminal copy +npx prisma db pull +``` + +This commands reads the `DATABASE_URL` environment variable that's defined in `.env` and connects to your database. Once the connection is established, it introspects the database (i.e. it _reads the database schema_). It then translates the database schema from SQL into a data model in your Prisma schema. + +After the introspection is complete, your Prisma schema file was updated: + +![Introspect your database with Prisma ORM](/img/getting-started/prisma-db-pull-generate-schema.png) + +The data model now looks similar to this (note that the fields on the models have been reordered for better readability): + +```prisma file=prisma/schema.prisma showLineNumbers +model Post { + id Int @id @default(autoincrement()) + title String @db.VarChar(255) + createdAt DateTime @default(now()) @db.Timestamp(6) + content String? + published Boolean @default(false) + authorId Int + User User @relation(fields: [authorId], references: [id], onDelete: NoAction, onUpdate: NoAction) +} + +model Profile { + id Int @id @default(autoincrement()) + bio String? + userId Int @unique + User User @relation(fields: [userId], references: [id], onDelete: NoAction, onUpdate: NoAction) +} + +model User { + id Int @id @default(autoincrement()) + name String? @db.VarChar(255) + email String @unique @db.VarChar(255) + Post Post[] + Profile Profile? +} +``` + +Prisma ORM's data model is a declarative representation of your database schema and serves as the foundation for the generated Prisma Client library. Your Prisma Client instance will expose queries that are _tailored_ to these models. + +Right now, there's a few minor "issues" with the data model: + +- The `User` relation field is uppercased and therefore doesn't adhere to Prisma's [naming conventions](/orm/reference/prisma-schema-reference#naming-conventions-1) . To express more "semantics", it would also be nice if this field was called `author` to _describe_ the relationship between `User` and `Post` better. +- The `Post` and `Profile` relation fields on `User` as well as the `User` relation field on `Profile` are all uppercased. To adhere to Prisma's [naming conventions](/orm/reference/prisma-schema-reference#naming-conventions-1) , both fields should be lowercased to `post`, `profile` and `user`. +- Even after lowercasing, the `post` field on `User` is still slightly misnamed. That's because it actually refers to a [list](/orm/prisma-schema/data-model/models#type-modifiers) of posts – a better name therefore would be the plural form: `posts`. + +These changes are relevant for the generated Prisma Client API where using lowercased relation fields `author`, `posts`, `profile` and `user` will feel more natural and idiomatic to JavaScript/TypeScript developers. You can therefore [configure your Prisma Client API](/orm/prisma-client/setup-and-configuration/custom-model-and-field-names). + +Because [relation fields](/orm/prisma-schema/data-model/relations#relation-fields) are _virtual_ (i.e. they _do not directly manifest in the database_), you can manually rename them in your Prisma schema without touching the database: + +```prisma file=prisma/schema.prisma highlight=8,15,22,23;edit showLineNumbers +model Post { + id Int @id @default(autoincrement()) + title String @db.VarChar(255) + createdAt DateTime @default(now()) @db.Timestamp(6) + content String? + published Boolean @default(false) + authorId Int + //edit-next-line + author User @relation(fields: [authorId], references: [id], onDelete: NoAction, onUpdate: NoAction) +} + +model Profile { + id Int @id @default(autoincrement()) + bio String? + userId Int @unique + //edit-next-line + user User @relation(fields: [userId], references: [id], onDelete: NoAction, onUpdate: NoAction) +} + +model User { + id Int @id @default(autoincrement()) + name String? @db.VarChar(255) + email String @unique @db.VarChar(255) + //edit-start + posts Post[] + profile Profile? + //edit-end +} +``` + +In this example, the database schema did follow the [naming conventions](/orm/reference/prisma-schema-reference#naming-conventions) for Prisma ORM models (only the virtual relation fields that were generated from introspection did not adhere to them and needed adjustment). This optimizes the ergonomics of the generated Prisma Client API. + +
+ Using custom model and field names + +Sometimes though, you may want to make additional changes to the names of the columns and tables that are exposed in the Prisma Client API. A common example is to translate _snake_case_ notation which is often used in database schemas into _PascalCase_ and _camelCase_ notations which feel more natural for JavaScript/TypeScript developers. + +Assume you obtained the following model from introspection that's based on _snake_case_ notation: + +```prisma no-lines +model my_user { + user_id Int @id @default(autoincrement()) + first_name String? + last_name String @unique +} +``` + +If you generated a Prisma Client API for this model, it would pick up the _snake_case_ notation in its API: + +```ts no-lines +const user = await prisma.my_user.create({ + data: { + first_name: 'Alice', + last_name: 'Smith', + }, +}) +``` + +If you don't want to use the table and column names from your database in your Prisma Client API, you can configure them with [`@map` and `@@map`](/orm/prisma-schema/data-model/models#mapping-model-names-to-tables-or-collections): + +```prisma no-lines +model MyUser { + userId Int @id @default(autoincrement()) @map("user_id") + firstName String? @map("first_name") + lastName String @unique @map("last_name") + + @@map("my_user") +} +``` + +With this approach, you can name your model and its fields whatever you like and use the `@map` (for field names) and `@@map` (for models names) to point to the underlying tables and columns. Your Prisma Client API now looks as follows: + +```ts no-lines +const user = await prisma.myUser.create({ + data: { + firstName: 'Alice', + lastName: 'Smith', + }, +}) +``` + +Learn more about this on the [Configuring your Prisma Client API](/orm/prisma-client/setup-and-configuration/custom-model-and-field-names) page. + +
diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/150-introspection-node-sqlserver.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/150-introspection-node-sqlserver.mdx new file mode 100644 index 0000000000..0c378af4ce --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/150-introspection-node-sqlserver.mdx @@ -0,0 +1,223 @@ +--- +title: 'Introspection' +metaTitle: 'Introspection with Prisma ORM, JavaScript, and SQL Server' +metaDescription: 'Introspect your database with Prisma ORM, JavaScript, and SQL Server' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/baseline-your-database-node-sqlserver +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/introspection- +--- + + +## Introspect your database with Prisma ORM + +For the purpose of this guide, we'll use a demo SQL schema with three tables: + +```sql no-lines +CREATE TABLE [dbo].[Post] ( + [id] INT NOT NULL IDENTITY(1,1), + [createdAt] DATETIME2 NOT NULL CONSTRAINT [Post_createdAt_df] DEFAULT CURRENT_TIMESTAMP, + [updatedAt] DATETIME2 NOT NULL, + [title] VARCHAR(255) NOT NULL, + [content] NVARCHAR(1000), + [published] BIT NOT NULL CONSTRAINT [Post_published_df] DEFAULT 0, + [authorId] INT NOT NULL, + CONSTRAINT [Post_pkey] PRIMARY KEY ([id]) +); + +CREATE TABLE [dbo].[Profile] ( + [id] INT NOT NULL IDENTITY(1,1), + [bio] NVARCHAR(1000), + [userId] INT NOT NULL, + CONSTRAINT [Profile_pkey] PRIMARY KEY ([id]), + CONSTRAINT [Profile_userId_key] UNIQUE ([userId]) +); + +CREATE TABLE [dbo].[User] ( + [id] INT NOT NULL IDENTITY(1,1), + [email] NVARCHAR(1000) NOT NULL, + [name] NVARCHAR(1000), + CONSTRAINT [User_pkey] PRIMARY KEY ([id]), + CONSTRAINT [User_email_key] UNIQUE ([email]) +); + +ALTER TABLE [dbo].[Post] ADD CONSTRAINT [Post_authorId_fkey] FOREIGN KEY ([authorId]) REFERENCES [dbo].[User]([id]) ON DELETE NO ACTION ON UPDATE CASCADE; + +ALTER TABLE [dbo].[Profile] ADD CONSTRAINT [Profile_userId_fkey] FOREIGN KEY ([userId]) REFERENCES [dbo].[User]([id]) ON DELETE NO ACTION ON UPDATE CASCADE; +``` + +
+Expand for a graphical overview of the tables + +**User** + +| Column name | Type | Primary key | Foreign key | Required | Default | +| :---------- | :--------------- | :---------- | :---------- | :------- | :----------------- | +| `id` | `INT` | **✔️** | No | **✔️** | _autoincrementing_ | +| `name` | `NVARCHAR(1000)` | No | No | No | - | +| `email` | `NVARCHAR(1000)` | No | No | **✔️** | - | + +**Post** + +| Column name | Type | Primary key | Foreign key | Required | Default | +| :---------- | :--------------- | :---------- | :---------- | :------- | :----------------- | +| `id` | `INT` | **✔️** | No | **✔️** | _autoincrementing_ | +| `createdAt` | `DATETIME2` | No | No | **✔️** | `now()` | +| `updatedAt` | `DATETIME2` | No | No | **✔️** | | +| `title` | `VARCHAR(255)` | No | No | **✔️** | - | +| `content` | `NVARCHAR(1000)` | No | No | No | - | +| `published` | `BIT` | No | No | **✔️** | `false` | +| `authorId` | `INT` | No | **✔️** | **✔️** | - | + +**Profile** + +| Column name | Type | Primary key | Foreign key | Required | Default | +| :---------- | :--------------- | :---------- | :---------- | :------- | :----------------- | +| `id` | `INT` | **✔️** | No | **✔️** | _autoincrementing_ | +| `bio` | `NVARCHAR(1000)` | No | No | No | - | +| `userId` | `INT` | No | **✔️** | **✔️** | - | + +
+ +As a next step, you will introspect your database. The result of the introspection will be a [data model](/orm/prisma-schema/data-model/models) inside your Prisma schema. + +Run the following command to introspect your database: + +```terminal copy +npx prisma db pull +``` + +This commands reads the `DATABASE_URL` environment variable that's defined in `.env` and connects to your database. Once the connection is established, it introspects the database (i.e. it _reads the database schema_). It then translates the database schema from SQL into a Prisma data model. + +After the introspection is complete, your Prisma schema file was updated: + +![Introspect your database](/img/getting-started/prisma-db-pull-generate-schema.png) + +The data model now looks similar to this (note that the fields on the models have been reordered for better readability): + +```prisma file=prisma/schema.prisma showLineNumbers +model Post { + id Int @id @default(autoincrement()) + title String @db.VarChar(255) + createdAt DateTime @default(now()) @db.Timestamp(6) + content String? + published Boolean @default(false) + authorId Int + User User @relation(fields: [authorId], references: [id]) +} + +model Profile { + id Int @id @default(autoincrement()) + bio String? + userId Int @unique + User User @relation(fields: [userId], references: [id]) +} + +model User { + id Int @id @default(autoincrement()) + name String? @db.VarChar(255) + email String @unique @db.VarChar(255) + Post Post[] + Profile Profile? +} +``` + +Prisma's data model is a declarative representation of your database schema and serves as the foundation for the generated Prisma Client library. Your Prisma Client instance will expose queries that are _tailored_ to these models. + +Right now, there's a few minor "issues" with the data model: + +- The `User` relation field is uppercased and therefore doesn't adhere to Prisma's [naming conventions](/orm/reference/prisma-schema-reference#naming-conventions-1) . To express more "semantics", it would also be nice if this field was called `author` to _describe_ the relationship between `User` and `Post` better. +- The `Post` and `Profile` relation fields on `User` as well as the `User` relation field on `Profile` are all uppercased. To adhere to Prisma's [naming conventions](/orm/reference/prisma-schema-reference#naming-conventions-1) , both fields should be lowercased to `post`, `profile` and `user`. +- Even after lowercasing, the `post` field on `User` is still slightly misnamed. That's because it actually refers to a [list](/orm/prisma-schema/data-model/models#type-modifiers) of posts – a better name therefore would be the plural form: `posts`. + +These changes are relevant for the generated Prisma Client API where using lowercased relation fields `author`, `posts`, `profile` and `user` will feel more natural and idiomatic to JavaScript/TypeScript developers. You can therefore [configure your Prisma Client API](/orm/prisma-client/setup-and-configuration/custom-model-and-field-names). + +Because [relation fields](/orm/prisma-schema/data-model/relations#relation-fields) are _virtual_ (i.e. they _do not directly manifest in the database_), you can manually rename them in your Prisma schema without touching the database: + +```prisma file=prisma/schema.prisma highlight=7,14,22,23;edit showLineNumbers +model Post { + id Int @id @default(autoincrement()) + title String @db.VarChar(255) + createdAt DateTime @default(now()) @db.Timestamp(6) + content String? + published Boolean @default(false) + //edit-next-line + author User @relation(fields: [authorId], references: [id]) + authorId Int +} + +model Profile { + id Int @id @default(autoincrement()) + bio String? + //edit-next-line + user User @relation(fields: [userId], references: [id]) + userId Int @unique +} + +model User { + id Int @id @default(autoincrement()) + email String @unique @db.VarChar(255) + name String? @db.VarChar(255) + //edit-start + posts Post[] + profile Profile? + //edit-end +} +``` + +In this example, the database schema did follow the [naming conventions](/orm/reference/prisma-schema-reference#naming-conventions) for Prisma ORM models (only the virtual relation fields that were generated from introspection did not adhere to them and needed adjustment). This optimizes the ergonomics of the generated Prisma Client API. + +
+ Using custom model and field names + +Sometimes though, you may want to make additional changes to the names of the columns and tables that are exposed in the Prisma Client API. A common example is to translate _snake_case_ notation which is often used in database schemas into _PascalCase_ and _camelCase_ notations which feel more natural for JavaScript/TypeScript developers. + +Assume you obtained the following model from introspection that's based on _snake_case_ notation: + +```prisma no-lines +model my_user { + user_id Int @id @default(autoincrement()) + first_name String? + last_name String @unique +} +``` + +If you generated a Prisma Client API for this model, it would pick up the _snake_case_ notation in its API: + +```ts no-lines +const user = await prisma.my_user.create({ + data: { + first_name: 'Alice', + last_name: 'Smith', + }, +}) +``` + +If you don't want to use the table and column names from your database in your Prisma Client API, you can configure them with [`@map` and `@@map`](/orm/prisma-schema/data-model/models#mapping-model-names-to-tables-or-collections): + +```prisma no-lines +model MyUser { + userId Int @id @default(autoincrement()) @map("user_id") + firstName String? @map("first_name") + lastName String @unique @map("last_name") + + @@map("my_user") +} +``` + +With this approach, you can name your model and its fields whatever you like and use the `@map` (for field names) and `@@map` (for models names) to point to the underlying tables and columns. Your Prisma Client API now looks as follows: + +```ts no-lines +const user = await prisma.myUser.create({ + data: { + firstName: 'Alice', + lastName: 'Smith', + }, +}) +``` + +Learn more about this on the [Configuring your Prisma Client API](/orm/prisma-client/setup-and-configuration/custom-model-and-field-names) page. + +
diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/150-introspection-typescript-cockroachdb.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/150-introspection-typescript-cockroachdb.mdx new file mode 100644 index 0000000000..f07ed2b605 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/150-introspection-typescript-cockroachdb.mdx @@ -0,0 +1,216 @@ +--- +title: 'Introspection' +metaTitle: 'Introspection with Prisma ORM, TypeScript, and CockroachDB' +metaDescription: 'Introspect your database with Prisma ORM, TypeScript, and CockroachDB' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/baseline-your-database-typescript-cockroachdb +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/introspection- +--- + + +## Introspect your database with Prisma ORM + +For the purpose of this guide, we'll use a demo SQL schema with three tables: + +```sql no-lines +CREATE TABLE "User" ( + id INT8 PRIMARY KEY DEFAULT unique_rowid(), + name STRING(255), + email STRING(255) UNIQUE NOT NULL +); + +CREATE TABLE "Post" ( + id INT8 PRIMARY KEY DEFAULT unique_rowid(), + title STRING(255) UNIQUE NOT NULL, + "createdAt" TIMESTAMP NOT NULL DEFAULT now(), + content STRING, + published BOOLEAN NOT NULL DEFAULT false, + "authorId" INT8 NOT NULL, + FOREIGN KEY ("authorId") REFERENCES "User"(id) +); + +CREATE TABLE "Profile" ( + id INT8 PRIMARY KEY DEFAULT unique_rowid(), + bio STRING, + "userId" INT8 UNIQUE NOT NULL, + FOREIGN KEY ("userId") REFERENCES "User"(id) +); +``` + +> **Note**: Some fields are written in double quotes to ensure CockroachDB uses proper casing. If no double-quotes were used, CockroachDB would just read everything as _lowercase_ characters. + +
+Expand for a graphical overview of the tables + +**User** + +| Column name | Type | Primary key | Foreign key | Required | Default | +| :---------- | :------------ | :---------- | :---------- | :------- | :----------------- | +| `id` | `INT8` | **✔️** | No | **✔️** | _autoincrementing_ | +| `name` | `STRING(255)` | No | No | No | - | +| `email` | `STRING(255)` | No | No | **✔️** | - | + +**Post** + +| Column name | Type | Primary key | Foreign key | Required | Default | +| :---------- | :------------ | :---------- | :---------- | :------- | :----------------- | +| `id` | `INT8` | **✔️** | No | **✔️** | _autoincrementing_ | +| `createdAt` | `TIMESTAMP` | No | No | **✔️** | `now()` | +| `title` | `STRING(255)` | No | No | **✔️** | - | +| `content` | `STRING` | No | No | No | - | +| `published` | `BOOLEAN` | No | No | **✔️** | `false` | +| `authorId` | `INT8` | No | **✔️** | **✔️** | - | + +**Profile** + +| Column name | Type | Primary key | Foreign key | Required | Default | +| :---------- | :------- | :---------- | :---------- | :------- | :----------------- | +| `id` | `INT8` | **✔️** | No | **✔️** | _autoincrementing_ | +| `bio` | `STRING` | No | No | No | - | +| `userId` | `INT8` | No | **✔️** | **✔️** | - | + +
+ +As a next step, you will introspect your database. The result of the introspection will be a [data model](/orm/prisma-schema/data-model/models) inside your Prisma schema. + +Run the following command to introspect your database: + +```terminal copy +npx prisma db pull +``` + +This commands reads the environment variable used to define the `url` in your `schema.prisma`, `DATABASE_URL`, that in our case is set in `.env` and connects to your database. Once the connection is established, it introspects the database (i.e. it _reads the database schema_). It then translates the database schema from SQL into a Prisma data model. + +After the introspection is complete, your Prisma schema file was updated: + +![Introspect your database](/img/getting-started/prisma-db-pull-generate-schema.png) + +The data model now looks similar to this: + +```prisma file=prisma/schema.prisma showLineNumbers +model Post { + id BigInt @id @default(autoincrement()) + title String @unique @db.String(255) + createdAt DateTime @default(now()) @db.Timestamp(6) + content String? + published Boolean @default(false) + authorId BigInt + User User @relation(fields: [authorId], references: [id], onDelete: NoAction, onUpdate: NoAction) +} + +model Profile { + id BigInt @id @default(autoincrement()) + bio String? + userId BigInt @unique + User User @relation(fields: [userId], references: [id], onDelete: NoAction, onUpdate: NoAction) +} + +model User { + id BigInt @id @default(autoincrement()) + name String? @db.String(255) + email String @unique @db.String(255) + Post Post[] + Profile Profile? +} +``` + +Prisma ORM's data model is a declarative representation of your database schema and serves as the foundation for the generated Prisma Client library. Your Prisma Client instance will expose queries that are _tailored_ to these models. + +Right now, there's a few minor "issues" with the data model: + +- The `User` relation field is uppercased and therefore doesn't adhere to Prisma's [naming conventions](/orm/reference/prisma-schema-reference#naming-conventions-1) . To express more "semantics", it would also be nice if this field was called `author` to _describe_ the relationship between `User` and `Post` better. +- The `Post` and `Profile` relation fields on `User` as well as the `User` relation field on `Profile` are all uppercased. To adhere to Prisma's [naming conventions](/orm/reference/prisma-schema-reference#naming-conventions-1) , both fields should be lowercased to `post`, `profile` and `user`. +- Even after lowercasing, the `post` field on `User` is still slightly misnamed. That's because it actually refers to a [list](/orm/prisma-schema/data-model/models#type-modifiers) of posts – a better name therefore would be the plural form: `posts`. + +These changes are relevant for the generated Prisma Client API where using lowercased relation fields `author`, `posts`, `profile` and `user` will feel more natural and idiomatic to JavaScript/TypeScript developers. You can therefore [configure your Prisma Client API](/orm/prisma-client/setup-and-configuration/custom-model-and-field-names). + +Because [relation fields](/orm/prisma-schema/data-model/relations#relation-fields) are _virtual_ (i.e. they _do not directly manifest in the database_), you can manually rename them in your Prisma schema without touching the database: + +```prisma file=prisma/schema.prisma highlight=8,15,22,23;edit showLineNumbers +model Post { + id BigInt @id @default(autoincrement()) + title String @unique @db.String(255) + createdAt DateTime @default(now()) @db.Timestamp(6) + content String? + published Boolean @default(false) + authorId BigInt + //edit-next-line + author User @relation(fields: [authorId], references: [id], onDelete: NoAction, onUpdate: NoAction) +} + +model Profile { + id BigInt @id @default(autoincrement()) + bio String? + userId BigInt @unique + //edit-next-line + user User @relation(fields: [userId], references: [id], onDelete: NoAction, onUpdate: NoAction) +} + +model User { + id BigInt @id @default(autoincrement()) + name String? @db.String(255) + email String @unique @db.String(255) + //edit-start + posts Post[] + profile Profile? + //edit-end +} +``` + +In this example, the database schema did follow the [naming conventions](/orm/reference/prisma-schema-reference#naming-conventions) for Prisma ORM models (only the virtual relation fields that were generated from introspection did not adhere to them and needed adjustment). This optimizes the ergonomics of the generated Prisma Client API. + +
+ Using custom model and field names + +Sometimes though, you may want to make additional changes to the names of the columns and tables that are exposed in the Prisma Client API. A common example is to translate _snake_case_ notation which is often used in database schemas into _PascalCase_ and _camelCase_ notations which feel more natural for JavaScript/TypeScript developers. + +Assume you obtained the following model from introspection that's based on _snake_case_ notation: + +```prisma no-lines +model my_user { + user_id Int @id @default(sequence()) + first_name String? + last_name String @unique +} +``` + +If you generated a Prisma Client API for this model, it would pick up the _snake_case_ notation in its API: + +```ts no-lines +const user = await prisma.my_user.create({ + data: { + first_name: 'Alice', + last_name: 'Smith', + }, +}) +``` + +If you don't want to use the table and column names from your database in your Prisma Client API, you can configure them with [`@map` and `@@map`](/orm/prisma-schema/data-model/models#mapping-model-names-to-tables-or-collections): + +```prisma no-lines +model MyUser { + userId Int @id @default(sequence()) @map("user_id") + firstName String? @map("first_name") + lastName String @unique @map("last_name") + + @@map("my_user") +} +``` + +With this approach, you can name your model and its fields whatever you like and use the `@map` (for field names) and `@@map` (for models names) to point to the underlying tables and columns. Your Prisma Client API now looks as follows: + +```ts no-lines +const user = await prisma.myUser.create({ + data: { + firstName: 'Alice', + lastName: 'Smith', + }, +}) +``` + +Learn more about this on the [Configuring your Prisma Client API](/orm/prisma-client/setup-and-configuration/custom-model-and-field-names) page. + +
diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/150-introspection-typescript-mysql.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/150-introspection-typescript-mysql.mdx new file mode 100644 index 0000000000..6bf877d1be --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/150-introspection-typescript-mysql.mdx @@ -0,0 +1,219 @@ +--- +title: 'Introspection' +metaTitle: 'Introspection with Prisma ORM, TypeScript, and MySQL' +metaDescription: 'Introspect your existing project with Prisma ORM, TypeScript, and MySQL' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/baseline-your-database-typescript-mysql +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/introspection- +--- + + +## Introspect your database with Prisma ORM + +For the purpose of this guide, we'll use a demo SQL schema with three tables: + +```sql no-lines +CREATE TABLE User ( + id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL, + name VARCHAR(255), + email VARCHAR(255) UNIQUE NOT NULL +); + +CREATE TABLE Post ( + id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL, + title VARCHAR(255) NOT NULL, + createdAt TIMESTAMP NOT NULL DEFAULT now(), + content TEXT, + published BOOLEAN NOT NULL DEFAULT false, + authorId INTEGER NOT NULL, + FOREIGN KEY (authorId) REFERENCES User(id) +); + +CREATE TABLE Profile ( + id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL, + bio TEXT, + userId INTEGER UNIQUE NOT NULL, + FOREIGN KEY (userId) REFERENCES User(id) +); +``` + +
+Expand for a graphical overview of the tables + +**User** + +| Column name | Type | Primary key | Foreign key | Required | Default | +| :---------- | :------------- | :---------- | :---------- | :------- | :----------------- | +| `id` | `INTEGER` | **✔️** | No | **✔️** | _autoincrementing_ | +| `name` | `VARCHAR(255)` | No | No | No | - | +| `email` | `VARCHAR(255)` | No | No | **✔️** | - | + +**Post** + +| Column name | Type | Primary key | Foreign key | Required | Default | +| :---------- | :------------- | :---------- | :---------- | :------- | :----------------- | +| `id` | `INTEGER` | **✔️** | No | **✔️** | _autoincrementing_ | +| `createdAt` | `DATETIME(3)` | No | No | **✔️** | `now()` | +| `title` | `VARCHAR(255)` | No | No | **✔️** | - | +| `content` | `TEXT` | No | No | No | - | +| `published` | `BOOLEAN` | No | No | **✔️** | `false` | +| `authorId` | `INTEGER` | No | **✔️** | **✔️** | `false` | + +**Profile** + +| Column name | Type | Primary key | Foreign key | Required | Default | +| :---------- | :-------- | :---------- | :---------- | :------- | :----------------- | +| `id` | `INTEGER` | **✔️** | No | **✔️** | _autoincrementing_ | +| `bio` | `TEXT` | No | No | No | - | +| `userId` | `INTEGER` | No | **✔️** | **✔️** | - | + +
+ +As a next step, you will introspect your database. The result of the introspection will be a [data model](/orm/prisma-schema/data-model/models) inside your Prisma schema. + +Run the following command to introspect your database: + +```terminal copy +npx prisma db pull +``` + +This commands reads the `DATABASE_URL` environment variable that's defined in `.env` and connects to your database. Once the connection is established, it introspects the database (i.e. it _reads the database schema_). It then translates the database schema from SQL into a Prisma data model. + +After the introspection is complete, your Prisma schema file was updated: + +![Introspect your database](/img/getting-started/prisma-db-pull-generate-schema.png) + +The data model now looks similar to this (note that the fields on the models have been reordered for better readability): + +```prisma file=prisma/schema.prisma showLineNumbers +model Post { + id Int @id @default(autoincrement()) + title String @db.VarChar(255) + createdAt DateTime @default(now()) @db.Timestamp(0) + content String? @db.Text + published Boolean @default(false) + authorId Int + User User @relation(fields: [authorId], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "Post_ibfk_1") + + @@index([authorId], map: "authorId") +} + +model Profile { + id Int @id @default(autoincrement()) + bio String? @db.Text + userId Int @unique(map: "userId") + User User @relation(fields: [userId], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "Profile_ibfk_1") +} + +model User { + id Int @id @default(autoincrement()) + name String? @db.VarChar(255) + email String @unique(map: "email") @db.VarChar(255) + Post Post[] + Profile Profile? +} +``` + + + +Refer to the [Prisma schema reference](/orm/reference/prisma-schema-reference) for detailed information about the schema definition. + + + +Prisma ORM's data model is a declarative representation of your database schema and serves as the foundation for the generated Prisma Client library. Your Prisma Client instance will expose queries that are _tailored_ to these models. + +Right now, there's a few minor "issues" with the data model: + +- The `User` relation field is uppercased and therefore doesn't adhere to Prisma's [naming conventions](/orm/reference/prisma-schema-reference#naming-conventions-1) . To express more "semantics", it would also be nice if this field was called `author` to _describe_ the relationship between `User` and `Post` better. +- The `Post` and `Profile` relation fields on `User` as well as the `User` relation field on `Profile` are all uppercased. To adhere to Prisma's [naming conventions](/orm/reference/prisma-schema-reference#naming-conventions-1) , both fields should be lowercased to `post`, `profile` and `user`. +- Even after lowercasing, the `post` field on `User` is still slightly misnamed. That's because it actually refers to a [list](/orm/prisma-schema/data-model/models#type-modifiers) of posts – a better name therefore would be the plural form: `posts`. + +These changes are relevant for the generated Prisma Client API where using lowercased relation fields `author`, `posts`, `profile` and `user` will feel more natural and idiomatic to JavaScript/TypeScript developers. You can therefore [configure your Prisma Client API](/orm/prisma-client/setup-and-configuration/custom-model-and-field-names). + +Because [relation fields](/orm/prisma-schema/data-model/relations#relation-fields) are _virtual_ (i.e. they _do not directly manifest in the database_), you can manually rename them in your Prisma schema without touching the database: + +```prisma file=prisma/schema.prisma highlight=8,17,24,25;edit showLineNumbers +model Post { + id Int @id @default(autoincrement()) + title String @db.VarChar(255) + createdAt DateTime @default(now()) @db.Timestamp(0) + content String? @db.Text + published Boolean @default(false) + authorId Int + //edit-next-line + author User @relation(fields: [authorId], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "Post_ibfk_1") + + @@index([authorId], map: "authorId") +} + +model Profile { + id Int @id @default(autoincrement()) + bio String? @db.Text + userId Int @unique(map: "userId") + //edit-next-line + user User @relation(fields: [userId], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "Profile_ibfk_1") +} + +model User { + id Int @id @default(autoincrement()) + name String? @db.VarChar(255) + email String @unique(map: "email") @db.VarChar(255) + //edit-start + posts Post[] + profile Profile? + //edit-end +} +``` + +In this example, the database schema did follow the [naming conventions](/orm/reference/prisma-schema-reference#naming-conventions) for Prisma ORM models (only the virtual relation fields that were generated from introspection did not adhere to them and needed adjustment). This optimizes the ergonomics of the generated Prisma Client API. + +Sometimes though, you may want to make additional changes to the names of the columns and tables that are exposed in the Prisma Client API. A common example is to translate _snake_case_ notation which is often used in database schemas into _PascalCase_ and _camelCase_ notations which feel more natural for JavaScript/TypeScript developers. + +Assume you obtained the following model from introspection that's based on _snake_case_ notation: + +```prisma no-lines +model my_user { + user_id Int @id @default(autoincrement()) + first_name String? + last_name String @unique +} +``` + +If you generated a Prisma Client API for this model, it would pick up the _snake_case_ notation in its API: + +```ts no-lines +const user = await prisma.my_user.create({ + data: { + first_name: 'Alice', + last_name: 'Smith', + }, +}) +``` + +If you don't want to use the table and column names from your database in your Prisma Client API, you can configure them with [`@map` and `@@map`](/orm/prisma-schema/data-model/models#mapping-model-names-to-tables-or-collections): + +```prisma no-lines +model MyUser { + userId Int @id @default(autoincrement()) @map("user_id") + firstName String? @map("first_name") + lastName String @unique @map("last_name") + + @@map("my_user") +} +``` + +With this approach, you can name your model and its fields whatever you like and use the `@map` (for field names) and `@@map` (for models names) to point to the underlying tables and columns. Your Prisma Client API now looks as follows: + +```ts no-lines +const user = await prisma.myUser.create({ + data: { + firstName: 'Alice', + lastName: 'Smith', + }, +}) +``` + +Learn more about this on the [Configuring your Prisma Client API](/orm/prisma-client/setup-and-configuration/custom-model-and-field-names) page. diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/150-introspection-typescript-planetscale.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/150-introspection-typescript-planetscale.mdx new file mode 100644 index 0000000000..cac7f5ddba --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/150-introspection-typescript-planetscale.mdx @@ -0,0 +1,235 @@ +--- +title: 'Introspection' +metaTitle: 'Introspection with Prisma ORM, TypeScript, and PlanetScale' +metaDescription: 'Introspect your existing project with Prisma ORM, TypeScript, and PlanetScale' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/baseline-your-database-typescript-postgresql +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/introspection- +--- + + +## Introspect your database with Prisma ORM + +For the purpose of this guide, we'll use a demo SQL schema with three tables: + +```sql no-lines +CREATE TABLE `Post` ( + `id` int NOT NULL AUTO_INCREMENT, + `createdAt` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + `updatedAt` datetime(3) NOT NULL, + `title` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `content` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `published` tinyint(1) NOT NULL DEFAULT '0', + `authorId` int NOT NULL, + PRIMARY KEY (`id`), + KEY `Post_authorId_idx` (`authorId`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +CREATE TABLE `Profile` ( + `id` int NOT NULL AUTO_INCREMENT, + `bio` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `userId` int NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `Profile_userId_key` (`userId`), + KEY `Profile_userId_idx` (`userId`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +CREATE TABLE `User` ( + `id` int NOT NULL AUTO_INCREMENT, + `email` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL, + `name` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `User_email_key` (`email`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +``` + +
+Expand for a graphical overview of the tables + +**Post** + +| Column name | Type | Primary key | Foreign key | Required | Default | +| :---------- | :------------- | :---------- | :---------- | :------- | :----------------- | +| `id` | `int` | **✔️** | No | **✔️** | _autoincrementing_ | +| `createdAt` | `datetime(3)` | No | No | **✔️** | `now()` | +| `updatedAt` | `datetime(3)` | No | No | **✔️** | | +| `title` | `varchar(255)` | No | No | **✔️** | - | +| `content` | `varchar(191)` | No | No | No | - | +| `published` | `tinyint(1)` | No | No | **✔️** | `false` | +| `authorId` | `int` | No | No | **✔️** | - | + +**Profile** + +| Column name | Type | Primary key | Foreign key | Required | Default | +| :---------- | :------------- | :---------- | :---------- | :------- | :----------------- | +| `id` | `int` | **✔️** | No | **✔️** | _autoincrementing_ | +| `bio` | `varchar(191)` | No | No | No | - | +| `userId` | `int` | No | No | **✔️** | - | + +**User** + +| Column name | Type | Primary key | Foreign key | Required | Default | +| :---------- | :------------- | :---------- | :---------- | :------- | :----------------- | +| `id` | `int` | **✔️** | No | **✔️** | _autoincrementing_ | +| `name` | `varchar(191)` | No | No | No | - | +| `email` | `varchar(191)` | No | No | **✔️** | - | + +
+ +As a next step, you will introspect your database. The result of the introspection will be a [data model](/orm/prisma-schema/data-model/models) inside your Prisma schema. + +Run the following command to introspect your database: + +```terminal copy +npx prisma db pull +``` + +This commands reads the `DATABASE_URL` environment variable that's defined in `.env` and connects to your database. Once the connection is established, it introspects the database (i.e. it _reads the database schema_). It then translates the database schema from SQL into a Prisma data model. + +After the introspection is complete, your Prisma schema file was updated: + +![Introspect your database](/img/getting-started/prisma-db-pull-generate-schema.png) + +The data model now looks similar to this: + +```prisma file=prisma/schema.prisma showLineNumbers +model Post { + id Int @id @default(autoincrement()) + createdAt DateTime @default(now()) + updatedAt DateTime + title String @db.VarChar(255) + content String? + published Boolean @default(false) + authorId Int + + @@index([authorId]) +} + +model Profile { + id Int @id @default(autoincrement()) + bio String? + userId Int @unique + + @@index([userId]) +} + +model User { + id Int @id @default(autoincrement()) + email String @unique + name String? +} +``` + + + +Refer to the [Prisma schema reference](/orm/reference/prisma-schema-reference) for detailed information about the schema definition. + + + +Prisma's data model is a declarative representation of your database schema and serves as the foundation for the generated Prisma Client library. Your Prisma Client instance will expose queries that are _tailored_ to these models. + +You will then need to add in any missing relations between your data using [relation fields](/orm/prisma-schema/data-model/relations#relation-fields): + +```prisma file=prisma/schema.prisma highlight=8,17,27,28;add showLineNumbers +model Post { + id Int @id @default(autoincrement()) + createdAt DateTime @default(now()) + updatedAt DateTime + title String @db.VarChar(255) + content String? + published Boolean @default(false) + //add-next-line + author User @relation(fields: [authorId], references: [id]) + authorId Int + + @@index([authorId]) +} + +model Profile { + id Int @id @default(autoincrement()) + bio String? + //add-next-line + user User @relation(fields: [userId], references: [id]) + userId Int @unique + + @@index([userId]) +} + +model User { + id Int @id @default(autoincrement()) + email String @unique + name String? + //add-start + posts Post[] + profile Profile? + //add-end +} +``` + +After this, run introspection on your database for a second time: + +```terminal copy +npx prisma db pull +``` + +Prisma Migrate will now keep the manually added relation fields. + +Because relation fields are _virtual_ (i.e. they _do not directly manifest in the database_), you can manually rename them in your Prisma schema without touching the database. + +In this example, the database schema follows the [naming conventions](/orm/reference/prisma-schema-reference#naming-conventions) for Prisma ORM models. This optimizes the ergonomics of the generated Prisma Client API. + +
+ Using custom model and field names + +Sometimes though, you may want to make additional changes to the names of the columns and tables that are exposed in the Prisma Client API. A common example is to translate _snake_case_ notation which is often used in database schemas into _PascalCase_ and _camelCase_ notations which feel more natural for JavaScript/TypeScript developers. + +Assume you obtained the following model from introspection that's based on _snake_case_ notation: + +```prisma no-lines +model my_user { + user_id Int @id @default(autoincrement()) + first_name String? + last_name String @unique +} +``` + +If you generated a Prisma Client API for this model, it would pick up the _snake_case_ notation in its API: + +```ts no-lines +const user = await prisma.my_user.create({ + data: { + first_name: 'Alice', + last_name: 'Smith', + }, +}) +``` + +If you don't want to use the table and column names from your database in your Prisma Client API, you can configure them with [`@map` and `@@map`](/orm/prisma-schema/data-model/models#mapping-model-names-to-tables-or-collections): + +```prisma no-lines +model MyUser { + userId Int @id @default(autoincrement()) @map("user_id") + firstName String? @map("first_name") + lastName String @unique @map("last_name") + + @@map("my_user") +} +``` + +With this approach, you can name your model and its fields whatever you like and use the `@map` (for field names) and `@@map` (for models names) to point to the underlying tables and columns. Your Prisma Client API now looks as follows: + +```ts no-lines +const user = await prisma.myUser.create({ + data: { + firstName: 'Alice', + lastName: 'Smith', + }, +}) +``` + +Learn more about this on the [Configuring your Prisma Client API](/orm/prisma-client/setup-and-configuration/custom-model-and-field-names) page. + +
diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/150-introspection-typescript-postgresql.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/150-introspection-typescript-postgresql.mdx new file mode 100644 index 0000000000..ce645d70e3 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/150-introspection-typescript-postgresql.mdx @@ -0,0 +1,215 @@ +--- +title: 'Introspection' +metaTitle: 'Introspection with Prisma ORM, TypeScript, and PostgreSQL' +metaDescription: 'Introspect your existing project with Prisma ORM, TypeScript, and PostgreSQL' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/baseline-your-database-typescript-postgresql +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/introspection- +--- + + +## Introspect your database with Prisma ORM + +For the purpose of this guide, we'll use a demo SQL schema with three tables: + +```sql no-lines +CREATE TABLE "public"."User" ( + id SERIAL PRIMARY KEY NOT NULL, + name VARCHAR(255), + email VARCHAR(255) UNIQUE NOT NULL +); + +CREATE TABLE "public"."Post" ( + id SERIAL PRIMARY KEY NOT NULL, + title VARCHAR(255) NOT NULL, + "createdAt" TIMESTAMP NOT NULL DEFAULT now(), + content TEXT, + published BOOLEAN NOT NULL DEFAULT false, + "authorId" INTEGER NOT NULL, + FOREIGN KEY ("authorId") REFERENCES "public"."User"(id) +); + +CREATE TABLE "public"."Profile" ( + id SERIAL PRIMARY KEY NOT NULL, + bio TEXT, + "userId" INTEGER UNIQUE NOT NULL, + FOREIGN KEY ("userId") REFERENCES "public"."User"(id) +); +``` + +> **Note**: Some fields are written in double-quotes to ensure PostgreSQL uses proper casing. If no double-quotes were used, PostgreSQL would just read everything as _lowercase_ characters. + +
+Expand for a graphical overview of the tables + +**User** + +| Column name | Type | Primary key | Foreign key | Required | Default | +| :---------- | :------------- | :---------- | :---------- | :------- | :----------------- | +| `id` | `SERIAL` | **✔️** | No | **✔️** | _autoincrementing_ | +| `name` | `VARCHAR(255)` | No | No | No | - | +| `email` | `VARCHAR(255)` | No | No | **✔️** | - | + +**Post** + +| Column name | Type | Primary key | Foreign key | Required | Default | +| :---------- | :------------- | :---------- | :---------- | :------- | :----------------- | +| `id` | `SERIAL` | **✔️** | No | **✔️** | _autoincrementing_ | +| `createdAt` | `TIMESTAMP` | No | No | **✔️** | `now()` | +| `title` | `VARCHAR(255)` | No | No | **✔️** | - | +| `content` | `TEXT` | No | No | No | - | +| `published` | `BOOLEAN` | No | No | **✔️** | `false` | +| `authorId` | `INTEGER` | No | **✔️** | **✔️** | - | + +**Profile** + +| Column name | Type | Primary key | Foreign key | Required | Default | +| :---------- | :-------- | :---------- | :---------- | :------- | :----------------- | +| `id` | `SERIAL` | **✔️** | No | **✔️** | _autoincrementing_ | +| `bio` | `TEXT` | No | No | No | - | +| `userId` | `INTEGER` | No | **✔️** | **✔️** | - | + +
+ +As a next step, you will introspect your database. The result of the introspection will be a [data model](/orm/prisma-schema/data-model/models) inside your Prisma schema. + +Run the following command to introspect your database: + +```terminal copy +npx prisma db pull +``` + +This commands reads the `DATABASE_URL` environment variable that's defined in `.env` and connects to your database. Once the connection is established, it introspects the database (i.e. it _reads the database schema_). It then translates the database schema from SQL into a data model in your Prisma schema. + +After the introspection is complete, your Prisma schema file was updated: + +![Introspect your database with Prisma ORM](/img/getting-started/prisma-db-pull-generate-schema.png) + +The data model now looks similar to this (note that the fields on the models have been reordered for better readability): + +```prisma file=prisma/schema.prisma showLineNumbers +model Post { + id Int @id @default(autoincrement()) + title String @db.VarChar(255) + createdAt DateTime @default(now()) @db.Timestamp(6) + content String? + published Boolean @default(false) + authorId Int + User User @relation(fields: [authorId], references: [id], onDelete: NoAction, onUpdate: NoAction) +} + +model Profile { + id Int @id @default(autoincrement()) + bio String? + userId Int @unique + User User @relation(fields: [userId], references: [id], onDelete: NoAction, onUpdate: NoAction) +} + +model User { + id Int @id @default(autoincrement()) + name String? @db.VarChar(255) + email String @unique @db.VarChar(255) + Post Post[] + Profile Profile? +} +``` + +Prisma ORM's data model is a declarative representation of your database schema and serves as the foundation for the generated Prisma Client library. Your Prisma Client instance will expose queries that are _tailored_ to these models. + +Right now, there's a few minor "issues" with the data model: + +- The `User` relation field is uppercased and therefore doesn't adhere to Prisma's [naming conventions](/orm/reference/prisma-schema-reference#naming-conventions-1) . To express more "semantics", it would also be nice if this field was called `author` to _describe_ the relationship between `User` and `Post` better. +- The `Post` and `Profile` relation fields on `User` as well as the `User` relation field on `Profile` are all uppercased. To adhere to Prisma's [naming conventions](/orm/reference/prisma-schema-reference#naming-conventions-1) , both fields should be lowercased to `post`, `profile` and `user`. +- Even after lowercasing, the `post` field on `User` is still slightly misnamed. That's because it actually refers to a [list](/orm/prisma-schema/data-model/models#type-modifiers) of posts – a better name therefore would be the plural form: `posts`. + +These changes are relevant for the generated Prisma Client API where using lowercased relation fields `author`, `posts`, `profile` and `user` will feel more natural and idiomatic to JavaScript/TypeScript developers. You can therefore [configure your Prisma Client API](/orm/prisma-client/setup-and-configuration/custom-model-and-field-names). + +Because [relation fields](/orm/prisma-schema/data-model/relations#relation-fields) are _virtual_ (i.e. they _do not directly manifest in the database_), you can manually rename them in your Prisma schema without touching the database: + +```prisma file=prisma/schema.prisma highlight=8,15,22,23;edit showLineNumbers +model Post { + id Int @id @default(autoincrement()) + title String @db.VarChar(255) + createdAt DateTime @default(now()) @db.Timestamp(6) + content String? + published Boolean @default(false) + authorId Int + //edit-next-line + author User @relation(fields: [authorId], references: [id], onDelete: NoAction, onUpdate: NoAction) +} + +model Profile { + id Int @id @default(autoincrement()) + bio String? + userId Int @unique + //edit-next-line + user User @relation(fields: [userId], references: [id], onDelete: NoAction, onUpdate: NoAction) +} + +model User { + id Int @id @default(autoincrement()) + name String? @db.VarChar(255) + email String @unique @db.VarChar(255) + //edit-start + posts Post[] + profile Profile? + //edit-end +} +``` + +In this example, the database schema did follow the [naming conventions](/orm/reference/prisma-schema-reference#naming-conventions) for Prisma ORM models (only the virtual relation fields that were generated from introspection did not adhere to them and needed adjustment). This optimizes the ergonomics of the generated Prisma Client API. + +
+ Using custom model and field names + +Sometimes though, you may want to make additional changes to the names of the columns and tables that are exposed in the Prisma Client API. A common example is to translate _snake_case_ notation which is often used in database schemas into _PascalCase_ and _camelCase_ notations which feel more natural for JavaScript/TypeScript developers. + +Assume you obtained the following model from introspection that's based on _snake_case_ notation: + +```prisma no-lines +model my_user { + user_id Int @id @default(autoincrement()) + first_name String? + last_name String @unique +} +``` + +If you generated a Prisma Client API for this model, it would pick up the _snake_case_ notation in its API: + +```ts no-lines +const user = await prisma.my_user.create({ + data: { + first_name: 'Alice', + last_name: 'Smith', + }, +}) +``` + +If you don't want to use the table and column names from your database in your Prisma Client API, you can configure them with [`@map` and `@@map`](/orm/prisma-schema/data-model/models#mapping-model-names-to-tables-or-collections): + +```prisma no-lines +model MyUser { + userId Int @id @default(autoincrement()) @map("user_id") + firstName String? @map("first_name") + lastName String @unique @map("last_name") + + @@map("my_user") +} +``` + +With this approach, you can name your model and its fields whatever you like and use the `@map` (for field names) and `@@map` (for models names) to point to the underlying tables and columns. Your Prisma Client API now looks as follows: + +```ts no-lines +const user = await prisma.myUser.create({ + data: { + firstName: 'Alice', + lastName: 'Smith', + }, +}) +``` + +Learn more about this on the [Configuring your Prisma Client API](/orm/prisma-client/setup-and-configuration/custom-model-and-field-names) page. + +
diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/150-introspection-typescript-sqlserver.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/150-introspection-typescript-sqlserver.mdx new file mode 100644 index 0000000000..7bcdb563cd --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/150-introspection-typescript-sqlserver.mdx @@ -0,0 +1,223 @@ +--- +title: 'Introspection' +metaTitle: 'Introspection with Prisma ORM, TypeScript, and SQL Server' +metaDescription: 'Introspect your existing project with Prisma ORM, TypeScript, and SQL Server' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/baseline-your-database-typescript-sqlserver +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/introspection- +--- + + +## Introspect your database with Prisma ORM + +For the purpose of this guide, we'll use a demo SQL schema with three tables: + +```sql no-lines +CREATE TABLE [dbo].[Post] ( + [id] INT NOT NULL IDENTITY(1,1), + [createdAt] DATETIME2 NOT NULL CONSTRAINT [Post_createdAt_df] DEFAULT CURRENT_TIMESTAMP, + [updatedAt] DATETIME2 NOT NULL, + [title] VARCHAR(255) NOT NULL, + [content] NVARCHAR(1000), + [published] BIT NOT NULL CONSTRAINT [Post_published_df] DEFAULT 0, + [authorId] INT NOT NULL, + CONSTRAINT [Post_pkey] PRIMARY KEY ([id]) +); + +CREATE TABLE [dbo].[Profile] ( + [id] INT NOT NULL IDENTITY(1,1), + [bio] NVARCHAR(1000), + [userId] INT NOT NULL, + CONSTRAINT [Profile_pkey] PRIMARY KEY ([id]), + CONSTRAINT [Profile_userId_key] UNIQUE ([userId]) +); + +CREATE TABLE [dbo].[User] ( + [id] INT NOT NULL IDENTITY(1,1), + [email] NVARCHAR(1000) NOT NULL, + [name] NVARCHAR(1000), + CONSTRAINT [User_pkey] PRIMARY KEY ([id]), + CONSTRAINT [User_email_key] UNIQUE ([email]) +); + +ALTER TABLE [dbo].[Post] ADD CONSTRAINT [Post_authorId_fkey] FOREIGN KEY ([authorId]) REFERENCES [dbo].[User]([id]) ON DELETE NO ACTION ON UPDATE CASCADE; + +ALTER TABLE [dbo].[Profile] ADD CONSTRAINT [Profile_userId_fkey] FOREIGN KEY ([userId]) REFERENCES [dbo].[User]([id]) ON DELETE NO ACTION ON UPDATE CASCADE; +``` + +
+Expand for a graphical overview of the tables + +**User** + +| Column name | Type | Primary key | Foreign key | Required | Default | +| :---------- | :--------------- | :---------- | :---------- | :------- | :----------------- | +| `id` | `INT` | **✔️** | No | **✔️** | _autoincrementing_ | +| `name` | `NVARCHAR(1000)` | No | No | No | - | +| `email` | `NVARCHAR(1000)` | No | No | **✔️** | - | + +**Post** + +| Column name | Type | Primary key | Foreign key | Required | Default | +| :---------- | :--------------- | :---------- | :---------- | :------- | :----------------- | +| `id` | `INT` | **✔️** | No | **✔️** | _autoincrementing_ | +| `createdAt` | `DATETIME2` | No | No | **✔️** | `now()` | +| `updatedAt` | `DATETIME2` | No | No | **✔️** | | +| `title` | `VARCHAR(255)` | No | No | **✔️** | - | +| `content` | `NVARCHAR(1000)` | No | No | No | - | +| `published` | `BIT` | No | No | **✔️** | `false` | +| `authorId` | `INT` | No | **✔️** | **✔️** | - | + +**Profile** + +| Column name | Type | Primary key | Foreign key | Required | Default | +| :---------- | :--------------- | :---------- | :---------- | :------- | :----------------- | +| `id` | `INT` | **✔️** | No | **✔️** | _autoincrementing_ | +| `bio` | `NVARCHAR(1000)` | No | No | No | - | +| `userId` | `INT` | No | **✔️** | **✔️** | - | + +
+ +As a next step, you will introspect your database. The result of the introspection will be a [data model](/orm/prisma-schema/data-model/models) inside your Prisma schema. + +Run the following command to introspect your database: + +```terminal copy +npx prisma db pull +``` + +This commands reads the `DATABASE_URL` environment variable that's defined in `.env` and connects to your database. Once the connection is established, it introspects the database (i.e. it _reads the database schema_). It then translates the database schema from SQL into a Prisma data model. + +After the introspection is complete, your Prisma schema file was updated: + +![Introspect your database](/img/getting-started/prisma-db-pull-generate-schema.png) + +The data model now looks similar to this (note that the fields on the models have been reordered for better readability): + +```prisma file=prisma/schema.prisma showLineNumbers +model Post { + id Int @id @default(autoincrement()) + title String @db.VarChar(255) + createdAt DateTime @default(now()) @db.Timestamp(6) + content String? + published Boolean @default(false) + authorId Int + User User @relation(fields: [authorId], references: [id]) +} + +model Profile { + id Int @id @default(autoincrement()) + bio String? + userId Int @unique + User User @relation(fields: [userId], references: [id]) +} + +model User { + id Int @id @default(autoincrement()) + name String? @db.VarChar(255) + email String @unique @db.VarChar(255) + Post Post[] + Profile Profile? +} +``` + +Prisma's data model is a declarative representation of your database schema and serves as the foundation for the generated Prisma Client library. Your Prisma Client instance will expose queries that are _tailored_ to these models. + +Right now, there's a few minor "issues" with the data model: + +- The `User` relation field is uppercased and therefore doesn't adhere to Prisma's [naming conventions](/orm/reference/prisma-schema-reference#naming-conventions-1) . To express more "semantics", it would also be nice if this field was called `author` to _describe_ the relationship between `User` and `Post` better. +- The `Post` and `Profile` relation fields on `User` as well as the `User` relation field on `Profile` are all uppercased. To adhere to Prisma's [naming conventions](/orm/reference/prisma-schema-reference#naming-conventions-1) , both fields should be lowercased to `post`, `profile` and `user`. +- Even after lowercasing, the `post` field on `User` is still slightly misnamed. That's because it actually refers to a [list](/orm/prisma-schema/data-model/models#type-modifiers) of posts – a better name therefore would be the plural form: `posts`. + +These changes are relevant for the generated Prisma Client API where using lowercased relation fields `author`, `posts`, `profile` and `user` will feel more natural and idiomatic to JavaScript/TypeScript developers. You can therefore [configure your Prisma Client API](/orm/prisma-client/setup-and-configuration/custom-model-and-field-names). + +Because [relation fields](/orm/prisma-schema/data-model/relations#relation-fields) are _virtual_ (i.e. they _do not directly manifest in the database_), you can manually rename them in your Prisma schema without touching the database: + +```prisma file=prisma/schema.prisma highlight=7,14,22,23;edit showLineNumbers +model Post { + id Int @id @default(autoincrement()) + title String @db.VarChar(255) + createdAt DateTime @default(now()) @db.Timestamp(6) + content String? + published Boolean @default(false) + //edit-next-line + author User @relation(fields: [authorId], references: [id]) + authorId Int +} + +model Profile { + id Int @id @default(autoincrement()) + bio String? + //edit-next-line + user User @relation(fields: [userId], references: [id]) + userId Int @unique +} + +model User { + id Int @id @default(autoincrement()) + email String @unique @db.VarChar(255) + name String? @db.VarChar(255) + //edit-start + posts Post[] + profile Profile? + //edit-end +} +``` + +In this example, the database schema did follow the [naming conventions](/orm/reference/prisma-schema-reference#naming-conventions) for Prisma ORM models (only the virtual relation fields that were generated from introspection did not adhere to them and needed adjustment). This optimizes the ergonomics of the generated Prisma Client API. + +
+ Using custom model and field names + +Sometimes though, you may want to make additional changes to the names of the columns and tables that are exposed in the Prisma Client API. A common example is to translate _snake_case_ notation which is often used in database schemas into _PascalCase_ and _camelCase_ notations which feel more natural for JavaScript/TypeScript developers. + +Assume you obtained the following model from introspection that's based on _snake_case_ notation: + +```prisma no-lines +model my_user { + user_id Int @id @default(autoincrement()) + first_name String? + last_name String @unique +} +``` + +If you generated a Prisma Client API for this model, it would pick up the _snake_case_ notation in its API: + +```ts no-lines +const user = await prisma.my_user.create({ + data: { + first_name: 'Alice', + last_name: 'Smith', + }, +}) +``` + +If you don't want to use the table and column names from your database in your Prisma Client API, you can configure them with [`@map` and `@@map`](/orm/prisma-schema/data-model/models#mapping-model-names-to-tables-or-collections): + +```prisma no-lines +model MyUser { + userId Int @id @default(autoincrement()) @map("user_id") + firstName String? @map("first_name") + lastName String @unique @map("last_name") + + @@map("my_user") +} +``` + +With this approach, you can name your model and its fields whatever you like and use the `@map` (for field names) and `@@map` (for models names) to point to the underlying tables and columns. Your Prisma Client API now looks as follows: + +```ts no-lines +const user = await prisma.myUser.create({ + data: { + firstName: 'Alice', + lastName: 'Smith', + }, +}) +``` + +Learn more about this on the [Configuring your Prisma Client API](/orm/prisma-client/setup-and-configuration/custom-model-and-field-names) page. + +
diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/150-introspection.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/150-introspection.mdx deleted file mode 100644 index 35279526d0..0000000000 --- a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/150-introspection.mdx +++ /dev/null @@ -1,1324 +0,0 @@ ---- -title: 'Introspection' -metaTitle: 'Introspection' -metaDescription: 'Introspection your database with Prisma' -langSwitcher: ['typescript', 'node'] -dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] -toc: false ---- - -## Introspect your database with Prisma ORM - - - -For the purpose of this guide, we'll use a demo SQL schema with three tables: - -```sql no-lines -CREATE TABLE "public"."User" ( - id SERIAL PRIMARY KEY NOT NULL, - name VARCHAR(255), - email VARCHAR(255) UNIQUE NOT NULL -); - -CREATE TABLE "public"."Post" ( - id SERIAL PRIMARY KEY NOT NULL, - title VARCHAR(255) NOT NULL, - "createdAt" TIMESTAMP NOT NULL DEFAULT now(), - content TEXT, - published BOOLEAN NOT NULL DEFAULT false, - "authorId" INTEGER NOT NULL, - FOREIGN KEY ("authorId") REFERENCES "public"."User"(id) -); - -CREATE TABLE "public"."Profile" ( - id SERIAL PRIMARY KEY NOT NULL, - bio TEXT, - "userId" INTEGER UNIQUE NOT NULL, - FOREIGN KEY ("userId") REFERENCES "public"."User"(id) -); -``` - -> **Note**: Some fields are written in double-quotes to ensure PostgreSQL uses proper casing. If no double-quotes were used, PostgreSQL would just read everything as _lowercase_ characters. - -
Expand for a graphical overview of the tables - -**User** - -| Column name | Type | Primary key | Foreign key | Required | Default | -| :---------- | :------------- | :---------- | :---------- | :------- | :----------------- | -| `id` | `SERIAL` | **✔️** | No | **✔️** | _autoincrementing_ | -| `name` | `VARCHAR(255)` | No | No | No | - | -| `email` | `VARCHAR(255)` | No | No | **✔️** | - | - -**Post** - -| Column name | Type | Primary key | Foreign key | Required | Default | -| :---------- | :------------- | :---------- | :---------- | :------- | :----------------- | -| `id` | `SERIAL` | **✔️** | No | **✔️** | _autoincrementing_ | -| `createdAt` | `TIMESTAMP` | No | No | **✔️** | `now()` | -| `title` | `VARCHAR(255)` | No | No | **✔️** | - | -| `content` | `TEXT` | No | No | No | - | -| `published` | `BOOLEAN` | No | No | **✔️** | `false` | -| `authorId` | `INTEGER` | No | **✔️** | **✔️** | - | - -**Profile** - -| Column name | Type | Primary key | Foreign key | Required | Default | -| :---------- | :-------- | :---------- | :---------- | :------- | :----------------- | -| `id` | `SERIAL` | **✔️** | No | **✔️** | _autoincrementing_ | -| `bio` | `TEXT` | No | No | No | - | -| `userId` | `INTEGER` | No | **✔️** | **✔️** | - | - -
- -
- - - -For the purpose of this guide, we'll use a demo SQL schema with three tables: - -```sql no-lines -CREATE TABLE User ( - id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL, - name VARCHAR(255), - email VARCHAR(255) UNIQUE NOT NULL -); - -CREATE TABLE Post ( - id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL, - title VARCHAR(255) NOT NULL, - createdAt TIMESTAMP NOT NULL DEFAULT now(), - content TEXT, - published BOOLEAN NOT NULL DEFAULT false, - authorId INTEGER NOT NULL, - FOREIGN KEY (authorId) REFERENCES User(id) -); - -CREATE TABLE Profile ( - id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL, - bio TEXT, - userId INTEGER UNIQUE NOT NULL, - FOREIGN KEY (userId) REFERENCES User(id) -); -``` - -
Expand for a graphical overview of the tables - -**User** - -| Column name | Type | Primary key | Foreign key | Required | Default | -| :---------- | :------------- | :---------- | :---------- | :------- | :----------------- | -| `id` | `INTEGER` | **✔️** | No | **✔️** | _autoincrementing_ | -| `name` | `VARCHAR(255)` | No | No | No | - | -| `email` | `VARCHAR(255)` | No | No | **✔️** | - | - -**Post** - -| Column name | Type | Primary key | Foreign key | Required | Default | -| :---------- | :------------- | :---------- | :---------- | :------- | :----------------- | -| `id` | `INTEGER` | **✔️** | No | **✔️** | _autoincrementing_ | -| `createdAt` | `DATETIME(3)` | No | No | **✔️** | `now()` | -| `title` | `VARCHAR(255)` | No | No | **✔️** | - | -| `content` | `TEXT` | No | No | No | - | -| `published` | `BOOLEAN` | No | No | **✔️** | `false` | -| `authorId` | `INTEGER` | No | **✔️** | **✔️** | `false` | - -**Profile** - -| Column name | Type | Primary key | Foreign key | Required | Default | -| :---------- | :-------- | :---------- | :---------- | :------- | :----------------- | -| `id` | `INTEGER` | **✔️** | No | **✔️** | _autoincrementing_ | -| `bio` | `TEXT` | No | No | No | - | -| `userId` | `INTEGER` | No | **✔️** | **✔️** | - | - -
- -
- - - -For the purpose of this guide, we'll use a demo SQL schema with three tables: - -```sql no-lines -CREATE TABLE `Post` ( - `id` int NOT NULL AUTO_INCREMENT, - `createdAt` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), - `updatedAt` datetime(3) NOT NULL, - `title` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, - `content` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL, - `published` tinyint(1) NOT NULL DEFAULT '0', - `authorId` int NOT NULL, - PRIMARY KEY (`id`), - KEY `Post_authorId_idx` (`authorId`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; - -CREATE TABLE `Profile` ( - `id` int NOT NULL AUTO_INCREMENT, - `bio` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL, - `userId` int NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `Profile_userId_key` (`userId`), - KEY `Profile_userId_idx` (`userId`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; - -CREATE TABLE `User` ( - `id` int NOT NULL AUTO_INCREMENT, - `email` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL, - `name` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `User_email_key` (`email`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -``` - -
Expand for a graphical overview of the tables - -**Post** - -| Column name | Type | Primary key | Foreign key | Required | Default | -| :---------- | :------------- | :---------- | :---------- | :------- | :----------------- | -| `id` | `int` | **✔️** | No | **✔️** | _autoincrementing_ | -| `createdAt` | `datetime(3)` | No | No | **✔️** | `now()` | -| `updatedAt` | `datetime(3)` | No | No | **✔️** | | -| `title` | `varchar(255)` | No | No | **✔️** | - | -| `content` | `varchar(191)` | No | No | No | - | -| `published` | `tinyint(1)` | No | No | **✔️** | `false` | -| `authorId` | `int` | No | No | **✔️** | - | - -**Profile** - -| Column name | Type | Primary key | Foreign key | Required | Default | -| :---------- | :------------- | :---------- | :---------- | :------- | :----------------- | -| `id` | `int` | **✔️** | No | **✔️** | _autoincrementing_ | -| `bio` | `varchar(191)` | No | No | No | - | -| `userId` | `int` | No | No | **✔️** | - | - -**User** - -| Column name | Type | Primary key | Foreign key | Required | Default | -| :---------- | :------------- | :---------- | :---------- | :------- | :----------------- | -| `id` | `int` | **✔️** | No | **✔️** | _autoincrementing_ | -| `name` | `varchar(191)` | No | No | No | - | -| `email` | `varchar(191)` | No | No | **✔️** | - | - -
- -
- - - -For the purpose of this guide, we'll use a demo SQL schema with three tables: - -```sql no-lines -CREATE TABLE [dbo].[Post] ( - [id] INT NOT NULL IDENTITY(1,1), - [createdAt] DATETIME2 NOT NULL CONSTRAINT [Post_createdAt_df] DEFAULT CURRENT_TIMESTAMP, - [updatedAt] DATETIME2 NOT NULL, - [title] VARCHAR(255) NOT NULL, - [content] NVARCHAR(1000), - [published] BIT NOT NULL CONSTRAINT [Post_published_df] DEFAULT 0, - [authorId] INT NOT NULL, - CONSTRAINT [Post_pkey] PRIMARY KEY ([id]) -); - -CREATE TABLE [dbo].[Profile] ( - [id] INT NOT NULL IDENTITY(1,1), - [bio] NVARCHAR(1000), - [userId] INT NOT NULL, - CONSTRAINT [Profile_pkey] PRIMARY KEY ([id]), - CONSTRAINT [Profile_userId_key] UNIQUE ([userId]) -); - -CREATE TABLE [dbo].[User] ( - [id] INT NOT NULL IDENTITY(1,1), - [email] NVARCHAR(1000) NOT NULL, - [name] NVARCHAR(1000), - CONSTRAINT [User_pkey] PRIMARY KEY ([id]), - CONSTRAINT [User_email_key] UNIQUE ([email]) -); - -ALTER TABLE [dbo].[Post] ADD CONSTRAINT [Post_authorId_fkey] FOREIGN KEY ([authorId]) REFERENCES [dbo].[User]([id]) ON DELETE NO ACTION ON UPDATE CASCADE; - -ALTER TABLE [dbo].[Profile] ADD CONSTRAINT [Profile_userId_fkey] FOREIGN KEY ([userId]) REFERENCES [dbo].[User]([id]) ON DELETE NO ACTION ON UPDATE CASCADE; -``` - -
Expand for a graphical overview of the tables - -**User** - -| Column name | Type | Primary key | Foreign key | Required | Default | -| :---------- | :--------------- | :---------- | :---------- | :------- | :----------------- | -| `id` | `INT` | **✔️** | No | **✔️** | _autoincrementing_ | -| `name` | `NVARCHAR(1000)` | No | No | No | - | -| `email` | `NVARCHAR(1000)` | No | No | **✔️** | - | - -**Post** - -| Column name | Type | Primary key | Foreign key | Required | Default | -| :---------- | :--------------- | :---------- | :---------- | :------- | :----------------- | -| `id` | `INT` | **✔️** | No | **✔️** | _autoincrementing_ | -| `createdAt` | `DATETIME2` | No | No | **✔️** | `now()` | -| `updatedAt` | `DATETIME2` | No | No | **✔️** | | -| `title` | `VARCHAR(255)` | No | No | **✔️** | - | -| `content` | `NVARCHAR(1000)` | No | No | No | - | -| `published` | `BIT` | No | No | **✔️** | `false` | -| `authorId` | `INT` | No | **✔️** | **✔️** | - | - -**Profile** - -| Column name | Type | Primary key | Foreign key | Required | Default | -| :---------- | :--------------- | :---------- | :---------- | :------- | :----------------- | -| `id` | `INT` | **✔️** | No | **✔️** | _autoincrementing_ | -| `bio` | `NVARCHAR(1000)` | No | No | No | - | -| `userId` | `INT` | No | **✔️** | **✔️** | - | - -
- -
- - - -For the purpose of this guide, we'll use a demo SQL schema with three tables: - -```sql no-lines -CREATE TABLE "User" ( - id INT8 PRIMARY KEY DEFAULT unique_rowid(), - name STRING(255), - email STRING(255) UNIQUE NOT NULL -); - -CREATE TABLE "Post" ( - id INT8 PRIMARY KEY DEFAULT unique_rowid(), - title STRING(255) UNIQUE NOT NULL, - "createdAt" TIMESTAMP NOT NULL DEFAULT now(), - content STRING, - published BOOLEAN NOT NULL DEFAULT false, - "authorId" INT8 NOT NULL, - FOREIGN KEY ("authorId") REFERENCES "User"(id) -); - -CREATE TABLE "Profile" ( - id INT8 PRIMARY KEY DEFAULT unique_rowid(), - bio STRING, - "userId" INT8 UNIQUE NOT NULL, - FOREIGN KEY ("userId") REFERENCES "User"(id) -); -``` - -> **Note**: Some fields are written in double quotes to ensure CockroachDB uses proper casing. If no double-quotes were used, CockroachDB would just read everything as _lowercase_ characters. - -
Expand for a graphical overview of the tables - -**User** - -| Column name | Type | Primary key | Foreign key | Required | Default | -| :---------- | :------------ | :---------- | :---------- | :------- | :----------------- | -| `id` | `INT8` | **✔️** | No | **✔️** | _autoincrementing_ | -| `name` | `STRING(255)` | No | No | No | - | -| `email` | `STRING(255)` | No | No | **✔️** | - | - -**Post** - -| Column name | Type | Primary key | Foreign key | Required | Default | -| :---------- | :------------ | :---------- | :---------- | :------- | :----------------- | -| `id` | `INT8` | **✔️** | No | **✔️** | _autoincrementing_ | -| `createdAt` | `TIMESTAMP` | No | No | **✔️** | `now()` | -| `title` | `STRING(255)` | No | No | **✔️** | - | -| `content` | `STRING` | No | No | No | - | -| `published` | `BOOLEAN` | No | No | **✔️** | `false` | -| `authorId` | `INT8` | No | **✔️** | **✔️** | - | - -**Profile** - -| Column name | Type | Primary key | Foreign key | Required | Default | -| :---------- | :------- | :---------- | :---------- | :------- | :----------------- | -| `id` | `INT8` | **✔️** | No | **✔️** | _autoincrementing_ | -| `bio` | `STRING` | No | No | No | - | -| `userId` | `INT8` | No | **✔️** | **✔️** | - | - -
- -
- - - -As a next step, you will introspect your database. The result of the introspection will be a [data model](/orm/prisma-schema/data-model/models) inside your Prisma schema. - -Run the following command to introspect your database: - -```terminal copy -npx prisma db pull -``` - -This commands reads the `DATABASE_URL` environment variable that's defined in `.env` and connects to your database. Once the connection is established, it introspects the database (i.e. it _reads the database schema_). It then translates the database schema from SQL into a data model in your Prisma schema. - -After the introspection is complete, your Prisma schema file was updated: - -![Introspect your database with Prisma ORM](../../../../doc-images/prisma-db-pull-generate-schema.png) - -The data model now looks similar to this (note that the fields on the models have been reordered for better readability): - -```prisma file=prisma/schema.prisma -model Post { - id Int @id @default(autoincrement()) - title String @db.VarChar(255) - createdAt DateTime @default(now()) @db.Timestamp(6) - content String? - published Boolean @default(false) - authorId Int - User User @relation(fields: [authorId], references: [id], onDelete: NoAction, onUpdate: NoAction) -} - -model Profile { - id Int @id @default(autoincrement()) - bio String? - userId Int @unique - User User @relation(fields: [userId], references: [id], onDelete: NoAction, onUpdate: NoAction) -} - -model User { - id Int @id @default(autoincrement()) - name String? @db.VarChar(255) - email String @unique @db.VarChar(255) - Post Post[] - Profile Profile? -} -``` - -Prisma ORM's data model is a declarative representation of your database schema and serves as the foundation for the generated Prisma Client library. Your Prisma Client instance will expose queries that are _tailored_ to these models. - -Right now, there's a few minor "issues" with the data model: - -- The `User` relation field is uppercased and therefore doesn't adhere to Prisma's [naming conventions](/orm/reference/prisma-schema-reference#naming-conventions-1) . To express more "semantics", it would also be nice if this field was called `author` to _describe_ the relationship between `User` and `Post` better. -- The `Post` and `Profile` relation fields on `User` as well as the `User` relation field on `Profile` are all uppercased. To adhere to Prisma's [naming conventions](/orm/reference/prisma-schema-reference#naming-conventions-1) , both fields should be lowercased to `post`, `profile` and `user`. -- Even after lowercasing, the `post` field on `User` is still slightly misnamed. That's because it actually refers to a [list](/orm/prisma-schema/data-model/models#type-modifiers) of posts – a better name therefore would be the plural form: `posts`. - -These changes are relevant for the generated Prisma Client API where using lowercased relation fields `author`, `posts`, `profile` and `user` will feel more natural and idiomatic to JavaScript/TypeScript developers. You can therefore [configure your Prisma Client API](/orm/prisma-client/setup-and-configuration/custom-model-and-field-names). - -Because [relation fields](/orm/prisma-schema/data-model/relations#relation-fields) are _virtual_ (i.e. they _do not directly manifest in the database_), you can manually rename them in your Prisma schema without touching the database: - -```prisma file=prisma/schema.prisma highlight=8,15,22,23;edit -model Post { - id Int @id @default(autoincrement()) - title String @db.VarChar(255) - createdAt DateTime @default(now()) @db.Timestamp(6) - content String? - published Boolean @default(false) - authorId Int - author User @relation(fields: [authorId], references: [id], onDelete: NoAction, onUpdate: NoAction) -} - -model Profile { - id Int @id @default(autoincrement()) - bio String? - userId Int @unique - user User @relation(fields: [userId], references: [id], onDelete: NoAction, onUpdate: NoAction) -} - -model User { - id Int @id @default(autoincrement()) - name String? @db.VarChar(255) - email String @unique @db.VarChar(255) - posts Post[] - profile Profile? -} -``` - -In this example, the database schema did follow the [naming conventions](/orm/reference/prisma-schema-reference#naming-conventions) for Prisma ORM models (only the virtual relation fields that were generated from introspection did not adhere to them and needed adjustment). This optimizes the ergonomics of the generated Prisma Client API. - -
- Using custom model and field names - -Sometimes though, you may want to make additional changes to the names of the columns and tables that are exposed in the Prisma Client API. A common example is to translate _snake_case_ notation which is often used in database schemas into _PascalCase_ and _camelCase_ notations which feel more natural for JavaScript/TypeScript developers. - -Assume you obtained the following model from introspection that's based on _snake_case_ notation: - -```prisma no-lines -model my_user { - user_id Int @id @default(autoincrement()) - first_name String? - last_name String @unique -} -``` - -If you generated a Prisma Client API for this model, it would pick up the _snake_case_ notation in its API: - -```ts no-lines -const user = await prisma.my_user.create({ - data: { - first_name: 'Alice', - last_name: 'Smith', - }, -}) -``` - -If you don't want to use the table and column names from your database in your Prisma Client API, you can configure them with [`@map` and `@@map`](/orm/prisma-schema/data-model/models#mapping-model-names-to-tables-or-collections): - -```prisma no-lines -model MyUser { - userId Int @id @default(autoincrement()) @map("user_id") - firstName String? @map("first_name") - lastName String @unique @map("last_name") - - @@map("my_user") -} -``` - -With this approach, you can name your model and its fields whatever you like and use the `@map` (for field names) and `@@map` (for models names) to point to the underlying tables and columns. Your Prisma Client API now looks as follows: - -```ts no-lines -const user = await prisma.myUser.create({ - data: { - firstName: 'Alice', - lastName: 'Smith', - }, -}) -``` - -Learn more about this on the [Configuring your Prisma Client API](/orm/prisma-client/setup-and-configuration/custom-model-and-field-names) page. - -
- -
- - - -As a next step, you will introspect your database. The result of the introspection will be a [data model](/orm/prisma-schema/data-model/models) inside your Prisma schema. - -Run the following command to introspect your database: - -```terminal copy -npx prisma db pull -``` - -This commands reads the `DATABASE_URL` environment variable that's defined in `.env` and connects to your database. Once the connection is established, it introspects the database (i.e. it _reads the database schema_). It then translates the database schema from SQL into a data model in the Prisma schema. - -After the introspection is complete, your Prisma schema file was updated: - -![Introspect your database with Prisma](../../../../doc-images/prisma-db-pull-generate-schema.png) - -The data model now looks similar to this (note that the fields on the models have been reordered for better readability): - -```prisma file=prisma/schema.prisma -model Post { - id Int @id @default(autoincrement()) - title String @db.VarChar(255) - createdAt DateTime @default(now()) @db.Timestamp(0) - content String? @db.Text - published Boolean @default(false) - authorId Int - User User @relation(fields: [authorId], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "Post_ibfk_1") - - @@index([authorId], map: "authorId") -} - -model Profile { - id Int @id @default(autoincrement()) - bio String? @db.Text - userId Int @unique(map: "userId") - User User @relation(fields: [userId], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "Profile_ibfk_1") -} - -model User { - id Int @id @default(autoincrement()) - name String? @db.VarChar(255) - email String @unique(map: "email") @db.VarChar(255) - Post Post[] - Profile Profile? -} -``` - - - -Refer to the [Prisma schema reference](/orm/reference/prisma-schema-reference) for detailed information about the schema definition. - - - -Prisma ORM's data model is a declarative representation of your database schema and serves as the foundation for the generated Prisma Client library. Your Prisma Client instance will expose queries that are _tailored_ to these models. - -Right now, there's a few minor "issues" with the data model: - -- The `User` relation field is uppercased and therefore doesn't adhere to Prisma's [naming conventions](/orm/reference/prisma-schema-reference#naming-conventions-1) . To express more "semantics", it would also be nice if this field was called `author` to _describe_ the relationship between `User` and `Post` better. -- The `Post` and `Profile` relation fields on `User` as well as the `User` relation field on `Profile` are all uppercased. To adhere to Prisma's [naming conventions](/orm/reference/prisma-schema-reference#naming-conventions-1) , both fields should be lowercased to `post`, `profile` and `user`. -- Even after lowercasing, the `post` field on `User` is still slightly misnamed. That's because it actually refers to a [list](/orm/prisma-schema/data-model/models#type-modifiers) of posts – a better name therefore would be the plural form: `posts`. - -These changes are relevant for the generated Prisma Client API where using lowercased relation fields `author`, `posts`, `profile` and `user` will feel more natural and idiomatic to JavaScript/TypeScript developers. You can therefore [configure your Prisma Client API](/orm/prisma-client/setup-and-configuration/custom-model-and-field-names). - -Because [relation fields](/orm/prisma-schema/data-model/relations#relation-fields) are _virtual_ (i.e. they _do not directly manifest in the database_), you can manually rename them in your Prisma schema without touching the database: - -```prisma file=prisma/schema.prisma highlight=8,17,24,25;edit -model Post { - id Int @id @default(autoincrement()) - title String @db.VarChar(255) - createdAt DateTime @default(now()) @db.Timestamp(0) - content String? @db.Text - published Boolean @default(false) - authorId Int - author User @relation(fields: [authorId], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "Post_ibfk_1") - - @@index([authorId], map: "authorId") -} - -model Profile { - id Int @id @default(autoincrement()) - bio String? @db.Text - userId Int @unique(map: "userId") - user User @relation(fields: [userId], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "Profile_ibfk_1") -} - -model User { - id Int @id @default(autoincrement()) - name String? @db.VarChar(255) - email String @unique(map: "email") @db.VarChar(255) - posts Post[] - profile Profile? -} -``` - -In this example, the database schema did follow the [naming conventions](/orm/reference/prisma-schema-reference#naming-conventions) for Prisma ORM models (only the virtual relation fields that were generated from introspection did not adhere to them and needed adjustment). This optimizes the ergonomics of the generated Prisma Client API. - -Sometimes though, you may want to make additional changes to the names of the columns and tables that are exposed in the Prisma Client API. A common example is to translate _snake_case_ notation which is often used in database schemas into _PascalCase_ and _camelCase_ notations which feel more natural for JavaScript/TypeScript developers. - -Assume you obtained the following model from introspection that's based on _snake_case_ notation: - -```prisma no-lines -model my_user { - user_id Int @id @default(autoincrement()) - first_name String? - last_name String @unique -} -``` - -If you generated a Prisma Client API for this model, it would pick up the _snake_case_ notation in its API: - -```ts no-lines -const user = await prisma.my_user.create({ - data: { - first_name: 'Alice', - last_name: 'Smith', - }, -}) -``` - -If you don't want to use the table and column names from your database in your Prisma Client API, you can configure them with [`@map` and `@@map`](/orm/prisma-schema/data-model/models#mapping-model-names-to-tables-or-collections): - -```prisma no-lines -model MyUser { - userId Int @id @default(autoincrement()) @map("user_id") - firstName String? @map("first_name") - lastName String @unique @map("last_name") - - @@map("my_user") -} -``` - -With this approach, you can name your model and its fields whatever you like and use the `@map` (for field names) and `@@map` (for models names) to point to the underlying tables and columns. Your Prisma Client API now looks as follows: - -```ts no-lines -const user = await prisma.myUser.create({ - data: { - firstName: 'Alice', - lastName: 'Smith', - }, -}) -``` - -Learn more about this on the [Configuring your Prisma Client API](/orm/prisma-client/setup-and-configuration/custom-model-and-field-names) page. - - - - - -As a next step, you will introspect your database. The result of the introspection will be a [data model](/orm/prisma-schema/data-model/models) inside your Prisma schema. - -Run the following command to introspect your database: - -```terminal copy -npx prisma db pull -``` - -This commands reads the `DATABASE_URL` environment variable that's defined in `.env` and connects to your database. Once the connection is established, it introspects the database (i.e. it _reads the database schema_). It then translates the database schema from SQL into a data model in the Prisma schema. - -After the introspection is complete, your Prisma schema file was updated: - -![Introspect your database with Prisma](../../../../doc-images/prisma-db-pull-generate-schema.png) - -The data model now looks similar to this (note that the fields on the models have been reordered for better readability): - -```prisma file=prisma/schema.prisma -model Post { - id Int @id @default(autoincrement()) - title String @db.VarChar(255) - createdAt DateTime @default(now()) @db.Timestamp(6) - content String? - published Boolean @default(false) - authorId Int - User User @relation(fields: [authorId], references: [id]) -} - -model Profile { - id Int @id @default(autoincrement()) - bio String? - userId Int @unique - User User @relation(fields: [userId], references: [id]) -} - -model User { - id Int @id @default(autoincrement()) - name String? @db.VarChar(255) - email String @unique @db.VarChar(255) - Post Post[] - Profile Profile? -} -``` - -Prisma's data model is a declarative representation of your database schema and serves as the foundation for the generated Prisma Client library. Your Prisma Client instance will expose queries that are _tailored_ to these models. - -Right now, there's a few minor "issues" with the data model: - -- The `User` relation field is uppercased and therefore doesn't adhere to Prisma's [naming conventions](/orm/reference/prisma-schema-reference#naming-conventions-1) . To express more "semantics", it would also be nice if this field was called `author` to _describe_ the relationship between `User` and `Post` better. -- The `Post` and `Profile` relation fields on `User` as well as the `User` relation field on `Profile` are all uppercased. To adhere to Prisma's [naming conventions](/orm/reference/prisma-schema-reference#naming-conventions-1) , both fields should be lowercased to `post`, `profile` and `user`. -- Even after lowercasing, the `post` field on `User` is still slightly misnamed. That's because it actually refers to a [list](/orm/prisma-schema/data-model/models#type-modifiers) of posts – a better name therefore would be the plural form: `posts`. - -These changes are relevant for the generated Prisma Client API where using lowercased relation fields `author`, `posts`, `profile` and `user` will feel more natural and idiomatic to JavaScript/TypeScript developers. You can therefore [configure your Prisma Client API](/orm/prisma-client/setup-and-configuration/custom-model-and-field-names). - -Because [relation fields](/orm/prisma-schema/data-model/relations#relation-fields) are _virtual_ (i.e. they _do not directly manifest in the database_), you can manually rename them in your Prisma schema without touching the database: - -```prisma file=prisma/schema.prisma highlight=7,14,22,23;edit -model Post { - id Int @id @default(autoincrement()) - title String @db.VarChar(255) - createdAt DateTime @default(now()) @db.Timestamp(6) - content String? - published Boolean @default(false) - author User @relation(fields: [authorId], references: [id]) - authorId Int -} - -model Profile { - id Int @id @default(autoincrement()) - bio String? - user User @relation(fields: [userId], references: [id]) - userId Int @unique -} - -model User { - id Int @id @default(autoincrement()) - email String @unique @db.VarChar(255) - name String? @db.VarChar(255) - posts Post[] - profile Profile? -} -``` - -In this example, the database schema did follow the [naming conventions](/orm/reference/prisma-schema-reference#naming-conventions) for Prisma ORM models (only the virtual relation fields that were generated from introspection did not adhere to them and needed adjustment). This optimizes the ergonomics of the generated Prisma Client API. - -
- Using custom model and field names - -Sometimes though, you may want to make additional changes to the names of the columns and tables that are exposed in the Prisma Client API. A common example is to translate _snake_case_ notation which is often used in database schemas into _PascalCase_ and _camelCase_ notations which feel more natural for JavaScript/TypeScript developers. - -Assume you obtained the following model from introspection that's based on _snake_case_ notation: - -```prisma no-lines -model my_user { - user_id Int @id @default(autoincrement()) - first_name String? - last_name String @unique -} -``` - -If you generated a Prisma Client API for this model, it would pick up the _snake_case_ notation in its API: - -```ts no-lines -const user = await prisma.my_user.create({ - data: { - first_name: 'Alice', - last_name: 'Smith', - }, -}) -``` - -If you don't want to use the table and column names from your database in your Prisma Client API, you can configure them with [`@map` and `@@map`](/orm/prisma-schema/data-model/models#mapping-model-names-to-tables-or-collections): - -```prisma no-lines -model MyUser { - userId Int @id @default(autoincrement()) @map("user_id") - firstName String? @map("first_name") - lastName String @unique @map("last_name") - - @@map("my_user") -} -``` - -With this approach, you can name your model and its fields whatever you like and use the `@map` (for field names) and `@@map` (for models names) to point to the underlying tables and columns. Your Prisma Client API now looks as follows: - -```ts no-lines -const user = await prisma.myUser.create({ - data: { - firstName: 'Alice', - lastName: 'Smith', - }, -}) -``` - -Learn more about this on the [Configuring your Prisma Client API](/orm/prisma-client/setup-and-configuration/custom-model-and-field-names) page. - -
- -
- - - -As a next step, you will introspect your database. The result of the introspection will be a [data model](/orm/prisma-schema/data-model/models) inside your Prisma schema. - -Run the following command to introspect your database: - -```terminal copy -npx prisma db pull -``` - -This commands reads the `DATABASE_URL` environment variable that's defined in `.env` and connects to your database. Once the connection is established, it introspects the database (i.e. it _reads the database schema_). It then translates the database schema from SQL into a data model in the Prisma schema. - -After the introspection is complete, your Prisma schema file was updated: - -![Introspect your database with Prisma](../../../../doc-images/prisma-db-pull-generate-schema.png) - -The data model now looks similar to this: - -```prisma file=prisma/schema.prisma -model Post { - id Int @id @default(autoincrement()) - createdAt DateTime @default(now()) - updatedAt DateTime - title String @db.VarChar(255) - content String? - published Boolean @default(false) - authorId Int - - @@index([authorId]) -} - -model Profile { - id Int @id @default(autoincrement()) - bio String? - userId Int @unique - - @@index([userId]) -} - -model User { - id Int @id @default(autoincrement()) - email String @unique - name String? -} -``` - - - -Refer to the [Prisma schema reference](/orm/reference/prisma-schema-reference) for detailed information about the schema definition. - - - -Prisma's data model is a declarative representation of your database schema and serves as the foundation for the generated Prisma Client library. Your Prisma Client instance will expose queries that are _tailored_ to these models. - -You will then need to add in any missing relations between your data using [relation fields](/orm/prisma-schema/data-model/relations#relation-fields): - -```prisma file=prisma/schema.prisma highlight=8,17,27,28;add -model Post { - id Int @id @default(autoincrement()) - createdAt DateTime @default(now()) - updatedAt DateTime - title String @db.VarChar(255) - content String? - published Boolean @default(false) - author User @relation(fields: [authorId], references: [id]) - authorId Int - - @@index([authorId]) -} - -model Profile { - id Int @id @default(autoincrement()) - bio String? - user User @relation(fields: [userId], references: [id]) - userId Int @unique - - @@index([userId]) -} - -model User { - id Int @id @default(autoincrement()) - email String @unique - name String? - posts Post[] - profile Profile? -} -``` - -After this, run introspection on your database for a second time: - -```terminal copy -npx prisma db pull -``` - -Prisma Migrate will now keep the manually added relation fields. - -Because relation fields are _virtual_ (i.e. they _do not directly manifest in the database_), you can manually rename them in your Prisma schema without touching the database. - -In this example, the database schema follows the [naming conventions](/orm/reference/prisma-schema-reference#naming-conventions) for Prisma ORM models. This optimizes the ergonomics of the generated Prisma Client API. - -
- Using custom model and field names - -Sometimes though, you may want to make additional changes to the names of the columns and tables that are exposed in the Prisma Client API. A common example is to translate _snake_case_ notation which is often used in database schemas into _PascalCase_ and _camelCase_ notations which feel more natural for JavaScript/TypeScript developers. - -Assume you obtained the following model from introspection that's based on _snake_case_ notation: - -```prisma no-lines -model my_user { - user_id Int @id @default(autoincrement()) - first_name String? - last_name String @unique -} -``` - -If you generated a Prisma Client API for this model, it would pick up the _snake_case_ notation in its API: - -```ts no-lines -const user = await prisma.my_user.create({ - data: { - first_name: 'Alice', - last_name: 'Smith', - }, -}) -``` - -If you don't want to use the table and column names from your database in your Prisma Client API, you can configure them with [`@map` and `@@map`](/orm/prisma-schema/data-model/models#mapping-model-names-to-tables-or-collections): - -```prisma no-lines -model MyUser { - userId Int @id @default(autoincrement()) @map("user_id") - firstName String? @map("first_name") - lastName String @unique @map("last_name") - - @@map("my_user") -} -``` - -With this approach, you can name your model and its fields whatever you like and use the `@map` (for field names) and `@@map` (for models names) to point to the underlying tables and columns. Your Prisma Client API now looks as follows: - -```ts no-lines -const user = await prisma.myUser.create({ - data: { - firstName: 'Alice', - lastName: 'Smith', - }, -}) -``` - -Learn more about this on the [Configuring your Prisma Client API](/orm/prisma-client/setup-and-configuration/custom-model-and-field-names) page. - -
- -
- - - -As a next step, you will introspect your database. The result of the introspection will be a [data model](/orm/prisma-schema/data-model/models) inside your Prisma schema. - -Run the following command to introspect your database: - -```terminal copy -npx prisma db pull -``` - -This commands reads the environment variable used to define the `url` in your `schema.prisma`, `DATABASE_URL`, that in our case is set in `.env` and connects to your database. Once the connection is established, it introspects the database (i.e. it _reads the database schema_). It then translates the database schema from SQL into a data model in the Prisma schema. - -After the introspection is complete, your Prisma schema file was updated: - -![Introspect your database with Prisma ORM](../../../../doc-images/prisma-db-pull-generate-schema.png) - -The data model now looks similar to this: - -```prisma file=prisma/schema.prisma -model Post { - id BigInt @id @default(autoincrement()) - title String @unique @db.String(255) - createdAt DateTime @default(now()) @db.Timestamp(6) - content String? - published Boolean @default(false) - authorId BigInt - User User @relation(fields: [authorId], references: [id], onDelete: NoAction, onUpdate: NoAction) -} - -model Profile { - id BigInt @id @default(autoincrement()) - bio String? - userId BigInt @unique - User User @relation(fields: [userId], references: [id], onDelete: NoAction, onUpdate: NoAction) -} - -model User { - id BigInt @id @default(autoincrement()) - name String? @db.String(255) - email String @unique @db.String(255) - Post Post[] - Profile Profile? -} -``` - -Prisma ORM's data model is a declarative representation of your database schema and serves as the foundation for the generated Prisma Client library. Your Prisma Client instance will expose queries that are _tailored_ to these models. - -Right now, there's a few minor "issues" with the data model: - -- The `User` relation field is uppercased and therefore doesn't adhere to Prisma's [naming conventions](/orm/reference/prisma-schema-reference#naming-conventions-1) . To express more "semantics", it would also be nice if this field was called `author` to _describe_ the relationship between `User` and `Post` better. -- The `Post` and `Profile` relation fields on `User` as well as the `User` relation field on `Profile` are all uppercased. To adhere to Prisma's [naming conventions](/orm/reference/prisma-schema-reference#naming-conventions-1) , both fields should be lowercased to `post`, `profile` and `user`. -- Even after lowercasing, the `post` field on `User` is still slightly misnamed. That's because it actually refers to a [list](/orm/prisma-schema/data-model/models#type-modifiers) of posts – a better name therefore would be the plural form: `posts`. - -These changes are relevant for the generated Prisma Client API where using lowercased relation fields `author`, `posts`, `profile` and `user` will feel more natural and idiomatic to JavaScript/TypeScript developers. You can therefore [configure your Prisma Client API](/orm/prisma-client/setup-and-configuration/custom-model-and-field-names). - -Because [relation fields](/orm/prisma-schema/data-model/relations#relation-fields) are _virtual_ (i.e. they _do not directly manifest in the database_), you can manually rename them in your Prisma schema without touching the database: - -```prisma file=prisma/schema.prisma highlight=8,15,22,23;edit -model Post { - id BigInt @id @default(autoincrement()) - title String @unique @db.String(255) - createdAt DateTime @default(now()) @db.Timestamp(6) - content String? - published Boolean @default(false) - authorId BigInt - author User @relation(fields: [authorId], references: [id], onDelete: NoAction, onUpdate: NoAction) -} - -model Profile { - id BigInt @id @default(autoincrement()) - bio String? - userId BigInt @unique - user User @relation(fields: [userId], references: [id], onDelete: NoAction, onUpdate: NoAction) -} - -model User { - id BigInt @id @default(autoincrement()) - name String? @db.String(255) - email String @unique @db.String(255) - posts Post[] - profile Profile? -} -``` - -In this example, the database schema did follow the [naming conventions](/orm/reference/prisma-schema-reference#naming-conventions) for Prisma ORM models (only the virtual relation fields that were generated from introspection did not adhere to them and needed adjustment). This optimizes the ergonomics of the generated Prisma Client API. - -
- Using custom model and field names - -Sometimes though, you may want to make additional changes to the names of the columns and tables that are exposed in the Prisma Client API. A common example is to translate _snake_case_ notation which is often used in database schemas into _PascalCase_ and _camelCase_ notations which feel more natural for JavaScript/TypeScript developers. - -Assume you obtained the following model from introspection that's based on _snake_case_ notation: - -```prisma no-lines -model my_user { - user_id Int @id @default(sequence()) - first_name String? - last_name String @unique -} -``` - -If you generated a Prisma Client API for this model, it would pick up the _snake_case_ notation in its API: - -```ts no-lines -const user = await prisma.my_user.create({ - data: { - first_name: 'Alice', - last_name: 'Smith', - }, -}) -``` - -If you don't want to use the table and column names from your database in your Prisma Client API, you can configure them with [`@map` and `@@map`](/orm/prisma-schema/data-model/models#mapping-model-names-to-tables-or-collections): - -```prisma no-lines -model MyUser { - userId Int @id @default(sequence()) @map("user_id") - firstName String? @map("first_name") - lastName String @unique @map("last_name") - - @@map("my_user") -} -``` - -With this approach, you can name your model and its fields whatever you like and use the `@map` (for field names) and `@@map` (for models names) to point to the underlying tables and columns. Your Prisma Client API now looks as follows: - -```ts no-lines -const user = await prisma.myUser.create({ - data: { - firstName: 'Alice', - lastName: 'Smith', - }, -}) -``` - -Learn more about this on the [Configuring your Prisma Client API](/orm/prisma-client/setup-and-configuration/custom-model-and-field-names) page. - -
- -
- - - - - - - Connect your database - - - - Baseline your database - - - - - - - - - - - - Connect your database - - - - Baseline your database - - - - - - - - - - - - Connect your database - - - - Install Prisma Client - - - - - - - - - - - - Connect your database - - - - Baseline your database - - - - - - - - - - - - Connect your database - - - - Baseline your database - - - - - - - - - - - - Connect your database - - - - Baseline your database - - - - - - - - - - - - Connect your database - - - - Baseline your database - - - - - - - - - - - - Connect your database - - - - Install Prisma Client - - - - - - - - - - - - Connect your database - - - - Baseline your database - - - - - - - - - - - - Connect your database - - - - Baseline your database - - - - - diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/170-baseline-your-database-node-cockroachdb.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/170-baseline-your-database-node-cockroachdb.mdx new file mode 100644 index 0000000000..08b17054a4 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/170-baseline-your-database-node-cockroachdb.mdx @@ -0,0 +1,83 @@ +--- +title: 'Baseline your database' +metaTitle: 'Baseline with Prisma ORM, JavaScript, and CockroachDB' +metaDescription: 'Baseline your database with Prisma ORM, JavaScript, and CockroachDB' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/install-prisma-client-node-cockroachdb +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/baseline-your-database- +--- + + +## Create an initial migration + +To use Prisma Migrate with the database you introspected in the last section, you will need to [baseline your database](/orm/prisma-migrate/getting-started). + +Baselining refers to initializing your migration history for a database that might already contain data and **cannot be reset**, such as your production database. Baselining tells Prisma Migrate to assume that one or more migrations have already been applied to your database. + +To baseline your database, use [`prisma migrate diff`](/orm/reference/prisma-cli-reference#migrate-diff) to compare your schema and database, and save the output into a SQL file. + +First, create a `migrations` directory and add a directory inside with your preferred name for the migration. In this example, we will use `0_init` as the migration name: + +```terminal +mkdir -p prisma/migrations/0_init +``` + + + +`-p` will recursively create any missing folders in the path you provide. + + + +Next, generate the migration file with `prisma migrate diff`. Use the following arguments: + +- `--from-empty`: assumes the data model you're migrating from is empty +- `--to-schema-datamodel`: the current database state using the URL in the `datasource` block +- `--script`: output a SQL script + +```terminal wrap +npx prisma migrate diff --from-empty --to-schema-datamodel prisma/schema.prisma --script > prisma/migrations/0_init/migration.sql +``` + +## Review the migration + +The command will generate a migration that should resemble the following script: + +```sql file=prisma/migrations/0_init/migration.sql +CREATE TABLE "User" ( + id INT8 PRIMARY KEY DEFAULT unique_rowid(), + name STRING(255), + email STRING(255) UNIQUE NOT NULL +); + +CREATE TABLE "Post" ( + id INT8 PRIMARY KEY DEFAULT unique_rowid(), + title STRING(255) UNIQUE NOT NULL, + "createdAt" TIMESTAMP NOT NULL DEFAULT now(), + content STRING, + published BOOLEAN NOT NULL DEFAULT false, + "authorId" INT8 NOT NULL, + FOREIGN KEY ("authorId") REFERENCES "User"(id) +); + +CREATE TABLE "Profile" ( + id INT8 PRIMARY KEY DEFAULT unique_rowid(), + bio STRING, + "userId" INT8 UNIQUE NOT NULL, + FOREIGN KEY ("userId") REFERENCES "User"(id) +); +``` + +Review the SQL migration file to ensure everything is correct. + +Next, mark the migration as applied using `prisma migrate resolve` with the `--applied` argument. + +```terminal +npx prisma migrate resolve --applied 0_init +``` + +The command will mark `0_init` as applied by adding it to the `_prisma_migrations` table. + +You now have a baseline for your current database schema. To make further changes to your database schema, you can update your Prisma schema and use `prisma migrate dev` to apply the changes to your database. diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/170-baseline-your-database-node-mysql.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/170-baseline-your-database-node-mysql.mdx new file mode 100644 index 0000000000..0b13fe07ed --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/170-baseline-your-database-node-mysql.mdx @@ -0,0 +1,99 @@ +--- +title: 'Baseline your database' +metaTitle: 'Baseline with Prisma ORM, JavaScript, and MySQL' +metaDescription: 'Baseline your database with Prisma ORM, JavaScript, and MySQL' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/install-prisma-client-node-mysql +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/baseline-your-database- +--- + + +## Create an initial migration + +To use Prisma Migrate with the database you introspected in the last section, you will need to [baseline your database](/orm/prisma-migrate/getting-started). + +Baselining refers to initializing your migration history for a database that might already contain data and **cannot be reset**, such as your production database. Baselining tells Prisma Migrate to assume that one or more migrations have already been applied to your database. + +To baseline your database, use [`prisma migrate diff`](/orm/reference/prisma-cli-reference#migrate-diff) to compare your schema and database, and save the output into a SQL file. + +First, create a `migrations` directory and add a directory inside with your preferred name for the migration. In this example, we will use `0_init` as the migration name: + +```terminal +mkdir -p prisma/migrations/0_init +``` + + + +`-p` will recursively create any missing folders in the path you provide. + + + +Next, generate the migration file with `prisma migrate diff`. Use the following arguments: + +- `--from-empty`: assumes the data model you're migrating from is empty +- `--to-schema-datamodel`: the current database state using the URL in the `datasource` block +- `--script`: output a SQL script + +```terminal wrap +npx prisma migrate diff --from-empty --to-schema-datamodel prisma/schema.prisma --script > prisma/migrations/0_init/migration.sql +``` + +## Review the migration + +The command will generate a migration that should resemble the following script: + +```sql file=prisma/migrations/0_init/migration.sql +-- CreateTable +CREATE TABLE `Post` ( + `id` INTEGER NOT NULL AUTO_INCREMENT, + `title` VARCHAR(255) NOT NULL, + `createdAt` TIMESTAMP(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0), + `content` TEXT NULL, + `published` BOOLEAN NOT NULL DEFAULT false, + `authorId` INTEGER NOT NULL, + + INDEX `authorId`(`authorId`), + PRIMARY KEY (`id`) +) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +-- CreateTable +CREATE TABLE `Profile` ( + `id` INTEGER NOT NULL AUTO_INCREMENT, + `bio` TEXT NULL, + `userId` INTEGER NOT NULL, + + UNIQUE INDEX `userId`(`userId`), + PRIMARY KEY (`id`) +) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +-- CreateTable +CREATE TABLE `User` ( + `id` INTEGER NOT NULL AUTO_INCREMENT, + `name` VARCHAR(255) NULL, + `email` VARCHAR(255) NOT NULL, + + UNIQUE INDEX `email`(`email`), + PRIMARY KEY (`id`) +) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +-- AddForeignKey +ALTER TABLE `Post` ADD CONSTRAINT `Post_ibfk_1` FOREIGN KEY (`authorId`) REFERENCES `User`(`id`) ON DELETE RESTRICT ON UPDATE RESTRICT; + +-- AddForeignKey +ALTER TABLE `Profile` ADD CONSTRAINT `Profile_ibfk_1` FOREIGN KEY (`userId`) REFERENCES `User`(`id`) ON DELETE RESTRICT ON UPDATE RESTRICT; +``` + +Review the SQL migration file to ensure everything is correct. + +Next, mark the migration as applied using `prisma migrate resolve` with the `--applied` argument. + +```terminal +npx prisma migrate resolve --applied 0_init +``` + +The command will mark `0_init` as applied by adding it to the `_prisma_migrations` table. + +You now have a baseline for your current database schema. To make further changes to your database schema, you can update your Prisma schema and use `prisma migrate dev` to apply the changes to your database. diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/170-baseline-your-database-node-postgresql.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/170-baseline-your-database-node-postgresql.mdx new file mode 100644 index 0000000000..74ccfba735 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/170-baseline-your-database-node-postgresql.mdx @@ -0,0 +1,102 @@ +--- +title: 'Baseline your database' +metaTitle: 'Baseline with Prisma ORM, JavaScript, and PostgreSQL' +metaDescription: 'Baseline your database with Prisma ORM, JavaScript, and PostgreSQL' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/install-prisma-client-node-postgresql +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/baseline-your-database- +--- + + +## Create an initial migration + +To use Prisma Migrate with the database you introspected in the last section, you will need to [baseline your database](/orm/prisma-migrate/getting-started). + +Baselining refers to initializing your migration history for a database that might already contain data and **cannot be reset**, such as your production database. Baselining tells Prisma Migrate to assume that one or more migrations have already been applied to your database. + +To baseline your database, use [`prisma migrate diff`](/orm/reference/prisma-cli-reference#migrate-diff) to compare your schema and database, and save the output into a SQL file. + +First, create a `migrations` directory and add a directory inside with your preferred name for the migration. In this example, we will use `0_init` as the migration name: + +```terminal +mkdir -p prisma/migrations/0_init +``` + + + +`-p` will recursively create any missing folders in the path you provide. + + + +Next, generate the migration file with `prisma migrate diff`. Use the following arguments: + +- `--from-empty`: assumes the data model you're migrating from is empty +- `--to-schema-datamodel`: the current database state using the URL in the `datasource` block +- `--script`: output a SQL script + +```terminal wrap +npx prisma migrate diff --from-empty --to-schema-datamodel prisma/schema.prisma --script > prisma/migrations/0_init/migration.sql +``` + +## Review the migration + +The command will generate a migration that should resemble the following script: + +```sql file=prisma/migrations/0_init/migration.sql +-- CreateTable +CREATE TABLE "Post" ( + "id" SERIAL NOT NULL, + "title" VARCHAR(255) NOT NULL, + "createdAt" TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "content" TEXT, + "published" BOOLEAN NOT NULL DEFAULT false, + "authorId" INTEGER NOT NULL, + + CONSTRAINT "Post_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Profile" ( + "id" SERIAL NOT NULL, + "bio" TEXT, + "userId" INTEGER NOT NULL, + + CONSTRAINT "Profile_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "User" ( + "id" SERIAL NOT NULL, + "name" VARCHAR(255), + "email" VARCHAR(255) NOT NULL, + + CONSTRAINT "User_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "Profile_userId_key" ON "Profile"("userId"); + +-- CreateIndex +CREATE UNIQUE INDEX "User_email_key" ON "User"("email"); + +-- AddForeignKey +ALTER TABLE "Post" ADD CONSTRAINT "Post_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "User"("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +-- AddForeignKey +ALTER TABLE "Profile" ADD CONSTRAINT "Profile_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE NO ACTION ON UPDATE NO ACTION; +``` + +Review the SQL migration file to ensure everything is correct. + +Next, mark the migration as applied using `prisma migrate resolve` with the `--applied` argument. + +```terminal +npx prisma migrate resolve --applied 0_init +``` + +The command will mark `0_init` as applied by adding it to the `_prisma_migrations` table. + +You now have a baseline for your current database schema. To make further changes to your database schema, you can update your Prisma schema and use `prisma migrate dev` to apply the changes to your database. diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/170-baseline-your-database-node-sqlserver.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/170-baseline-your-database-node-sqlserver.mdx new file mode 100644 index 0000000000..fbe2896b1d --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/170-baseline-your-database-node-sqlserver.mdx @@ -0,0 +1,91 @@ +--- +title: 'Baseline your database' +metaTitle: 'Baseline with Prisma ORM, JavaScript, and SQL Server' +metaDescription: 'Baseline your database with Prisma ORM, JavaScript, and SQL Server' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/install-prisma-client-node-sqlserver +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/baseline-your-database- +--- + + +## Create an initial migration + +To use Prisma Migrate with the database you introspected in the last section, you will need to [baseline your database](/orm/prisma-migrate/getting-started). + +Baselining refers to initializing your migration history for a database that might already contain data and **cannot be reset**, such as your production database. Baselining tells Prisma Migrate to assume that one or more migrations have already been applied to your database. + +To baseline your database, use [`prisma migrate diff`](/orm/reference/prisma-cli-reference#migrate-diff) to compare your schema and database, and save the output into a SQL file. + +First, create a `migrations` directory and add a directory inside with your preferred name for the migration. In this example, we will use `0_init` as the migration name: + +```terminal +mkdir -p prisma/migrations/0_init +``` + + + +`-p` will recursively create any missing folders in the path you provide. + + + +Next, generate the migration file with `prisma migrate diff`. Use the following arguments: + +- `--from-empty`: assumes the data model you're migrating from is empty +- `--to-schema-datamodel`: the current database state using the URL in the `datasource` block +- `--script`: output a SQL script + +```terminal wrap +npx prisma migrate diff --from-empty --to-schema-datamodel prisma/schema.prisma --script > prisma/migrations/0_init/migration.sql +``` + +## Review the migration + +The command will generate a migration that should resemble the following script: + +```sql file=prisma/migrations/0_init/migration.sql +CREATE TABLE [dbo].[Post] ( + [id] INT NOT NULL IDENTITY(1,1), + [createdAt] DATETIME2 NOT NULL CONSTRAINT [Post_createdAt_df] DEFAULT CURRENT_TIMESTAMP, + [updatedAt] DATETIME2 NOT NULL, + [title] VARCHAR(255) NOT NULL, + [content] NVARCHAR(1000), + [published] BIT NOT NULL CONSTRAINT [Post_published_df] DEFAULT 0, + [authorId] INT NOT NULL, + CONSTRAINT [Post_pkey] PRIMARY KEY ([id]) +); + +CREATE TABLE [dbo].[Profile] ( + [id] INT NOT NULL IDENTITY(1,1), + [bio] NVARCHAR(1000), + [userId] INT NOT NULL, + CONSTRAINT [Profile_pkey] PRIMARY KEY ([id]), + CONSTRAINT [Profile_userId_key] UNIQUE ([userId]) +); + +CREATE TABLE [dbo].[User] ( + [id] INT NOT NULL IDENTITY(1,1), + [email] NVARCHAR(1000) NOT NULL, + [name] NVARCHAR(1000), + CONSTRAINT [User_pkey] PRIMARY KEY ([id]), + CONSTRAINT [User_email_key] UNIQUE ([email]) +); + +ALTER TABLE [dbo].[Post] ADD CONSTRAINT [Post_authorId_fkey] FOREIGN KEY ([authorId]) REFERENCES [dbo].[User]([id]) ON DELETE NO ACTION ON UPDATE CASCADE; + +ALTER TABLE [dbo].[Profile] ADD CONSTRAINT [Profile_userId_fkey] FOREIGN KEY ([userId]) REFERENCES [dbo].[User]([id]) ON DELETE NO ACTION ON UPDATE CASCADE; +``` + +Review the SQL migration file to ensure everything is correct. + +Next, mark the migration as applied using `prisma migrate resolve` with the `--applied` argument. + +```terminal +npx prisma migrate resolve --applied 0_init +``` + +The command will mark `0_init` as applied by adding it to the `_prisma_migrations` table. + +You now have a baseline for your current database schema. To make further changes to your database schema, you can update your Prisma schema and use `prisma migrate dev` to apply the changes to your database. diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/170-baseline-your-database-typescript-cockroachdb.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/170-baseline-your-database-typescript-cockroachdb.mdx new file mode 100644 index 0000000000..cf6c84a40a --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/170-baseline-your-database-typescript-cockroachdb.mdx @@ -0,0 +1,72 @@ +--- +title: 'Baseline your database' +metaTitle: 'Baseline with Prisma ORM, TypeScript, and CockroachDB' +metaDescription: 'Baseline your database with Prisma ORM, JavaScript, and CockroachDB' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/install-prisma-client-typescript-cockroachdb +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/baseline-your-database- +--- + + +## Create an initial migration + +To use Prisma Migrate with the database you introspected in the last section, you will need to [baseline your database](/orm/prisma-migrate/getting-started). + +Baselining refers to initializing your migration history for a database that might already contain data and **cannot be reset**, such as your production database. Baselining tells Prisma Migrate to assume that one or more migrations have already been applied to your database. + +To baseline your database, use [`prisma migrate diff`](/orm/reference/prisma-cli-reference#migrate-diff) to compare your schema and database, and save the output into a SQL file. + +First, create a `migrations` directory and add a directory inside with your preferred name for the migration. In this example, we will use `0_init` as the migration name: + +```terminal +mkdir -p prisma/migrations/0_init +``` + + + +`-p` will recursively create any missing folders in the path you provide. + + + +Next, generate the migration file with `prisma migrate diff`. Use the following arguments: + +- `--from-empty`: assumes the data model you're migrating from is empty +- `--to-schema-datamodel`: the current database state using the URL in the `datasource` block +- `--script`: output a SQL script + +```terminal wrap +npx prisma migrate diff --from-empty --to-schema-datamodel prisma/schema.prisma --script > prisma/migrations/0_init/migration.sql +``` + +## Review the migration + +The command will generate a migration that should resemble the following script: + + +```sql file=prisma/migrations/0_init/migration.sql +CREATE TABLE "User" ( + id INT8 PRIMARY KEY DEFAULT unique_rowid(), + name STRING(255), + email STRING(255) UNIQUE NOT NULL +); + +CREATE TABLE "Post" ( + id INT8 PRIMARY KEY DEFAULT unique_rowid(), + title STRING(255) UNIQUE NOT NULL, + "createdAt" TIMESTAMP NOT NULL DEFAULT now(), + content STRING, + published BOOLEAN NOT NULL DEFAULT false, + "authorId" INT8 NOT NULL, + FOREIGN KEY ("authorId") REFERENCES "User"(id) +); + +CREATE TABLE "Profile" ( + id INT8 PRIMARY KEY DEFAULT unique_rowid(), + bio STRING, + "userId" INT8 UNIQUE NOT NULL, + FOREIGN KEY ("userId") REFERENCES "User"(id) +); +``` diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/170-baseline-your-database-typescript-mysql.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/170-baseline-your-database-typescript-mysql.mdx new file mode 100644 index 0000000000..af3825f302 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/170-baseline-your-database-typescript-mysql.mdx @@ -0,0 +1,100 @@ +--- +title: 'Baseline your database' +metaTitle: 'Baseline with Prisma ORM, TypeScript, and MySQL' +metaDescription: 'Baseline your database with Prisma ORM, JavaScript, and MySQL' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/install-prisma-client-typescript-mysql +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/baseline-your-database- +--- + + +## Create an initial migration + +To use Prisma Migrate with the database you introspected in the last section, you will need to [baseline your database](/orm/prisma-migrate/getting-started). + +Baselining refers to initializing your migration history for a database that might already contain data and **cannot be reset**, such as your production database. Baselining tells Prisma Migrate to assume that one or more migrations have already been applied to your database. + +To baseline your database, use [`prisma migrate diff`](/orm/reference/prisma-cli-reference#migrate-diff) to compare your schema and database, and save the output into a SQL file. + +First, create a `migrations` directory and add a directory inside with your preferred name for the migration. In this example, we will use `0_init` as the migration name: + +```terminal +mkdir -p prisma/migrations/0_init +``` + + + +`-p` will recursively create any missing folders in the path you provide. + + + +Next, generate the migration file with `prisma migrate diff`. Use the following arguments: + +- `--from-empty`: assumes the data model you're migrating from is empty +- `--to-schema-datamodel`: the current database state using the URL in the `datasource` block +- `--script`: output a SQL script + +```terminal wrap +npx prisma migrate diff --from-empty --to-schema-datamodel prisma/schema.prisma --script > prisma/migrations/0_init/migration.sql +``` + +## Review the migration + +The command will generate a migration that should resemble the following script: + +```sql file=prisma/migrations/0_init/migration.sql +-- CreateTable +CREATE TABLE `Post` ( + `id` INTEGER NOT NULL AUTO_INCREMENT, + `title` VARCHAR(255) NOT NULL, + `createdAt` TIMESTAMP(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0), + `content` TEXT NULL, + `published` BOOLEAN NOT NULL DEFAULT false, + `authorId` INTEGER NOT NULL, + + INDEX `authorId`(`authorId`), + PRIMARY KEY (`id`) +) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +-- CreateTable +CREATE TABLE `Profile` ( + `id` INTEGER NOT NULL AUTO_INCREMENT, + `bio` TEXT NULL, + `userId` INTEGER NOT NULL, + + UNIQUE INDEX `userId`(`userId`), + PRIMARY KEY (`id`) +) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +-- CreateTable +CREATE TABLE `User` ( + `id` INTEGER NOT NULL AUTO_INCREMENT, + `name` VARCHAR(255) NULL, + `email` VARCHAR(255) NOT NULL, + + UNIQUE INDEX `email`(`email`), + PRIMARY KEY (`id`) +) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +-- AddForeignKey +ALTER TABLE `Post` ADD CONSTRAINT `Post_ibfk_1` FOREIGN KEY (`authorId`) REFERENCES `User`(`id`) ON DELETE RESTRICT ON UPDATE RESTRICT; + +-- AddForeignKey +ALTER TABLE `Profile` ADD CONSTRAINT `Profile_ibfk_1` FOREIGN KEY (`userId`) REFERENCES `User`(`id`) ON DELETE RESTRICT ON UPDATE RESTRICT; +``` + + +Review the SQL migration file to ensure everything is correct. + +Next, mark the migration as applied using `prisma migrate resolve` with the `--applied` argument. + +```terminal +npx prisma migrate resolve --applied 0_init +``` + +The command will mark `0_init` as applied by adding it to the `_prisma_migrations` table. + +You now have a baseline for your current database schema. To make further changes to your database schema, you can update your Prisma schema and use `prisma migrate dev` to apply the changes to your database. diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/170-baseline-your-database-typescript-postgresql.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/170-baseline-your-database-typescript-postgresql.mdx new file mode 100644 index 0000000000..87b08f593c --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/170-baseline-your-database-typescript-postgresql.mdx @@ -0,0 +1,101 @@ +--- +title: 'Baseline your database' +metaTitle: 'Baseline with Prisma ORM, TypeScript, and PostgreSQL' +metaDescription: 'Baseline your database with Prisma ORM, JavaScript, and PostgreSQL' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'cockroachdb'] +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/install-prisma-client-typescript-postgresql +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/baseline-your-database- +--- + + +## Create an initial migration + +To use Prisma Migrate with the database you introspected in the last section, you will need to [baseline your database](/orm/prisma-migrate/getting-started). + +Baselining refers to initializing your migration history for a database that might already contain data and **cannot be reset**, such as your production database. Baselining tells Prisma Migrate to assume that one or more migrations have already been applied to your database. + +To baseline your database, use [`prisma migrate diff`](/orm/reference/prisma-cli-reference#migrate-diff) to compare your schema and database, and save the output into a SQL file. + +First, create a `migrations` directory and add a directory inside with your preferred name for the migration. In this example, we will use `0_init` as the migration name: + +```terminal +mkdir -p prisma/migrations/0_init +``` + + + +`-p` will recursively create any missing folders in the path you provide. + + + +Next, generate the migration file with `prisma migrate diff`. Use the following arguments: + +- `--from-empty`: assumes the data model you're migrating from is empty +- `--to-schema-datamodel`: the current database state using the URL in the `datasource` block +- `--script`: output a SQL script + +```terminal wrap +npx prisma migrate diff --from-empty --to-schema-datamodel prisma/schema.prisma --script > prisma/migrations/0_init/migration.sql +``` + +## Review the migration + +The command will generate a migration that should resemble the following script: + +```sql file=prisma/migrations/0_init/migration.sql +-- CreateTable +CREATE TABLE "Post" ( + "id" SERIAL NOT NULL, + "title" VARCHAR(255) NOT NULL, + "createdAt" TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "content" TEXT, + "published" BOOLEAN NOT NULL DEFAULT false, + "authorId" INTEGER NOT NULL, + + CONSTRAINT "Post_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Profile" ( + "id" SERIAL NOT NULL, + "bio" TEXT, + "userId" INTEGER NOT NULL, + + CONSTRAINT "Profile_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "User" ( + "id" SERIAL NOT NULL, + "name" VARCHAR(255), + "email" VARCHAR(255) NOT NULL, + + CONSTRAINT "User_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "Profile_userId_key" ON "Profile"("userId"); + +-- CreateIndex +CREATE UNIQUE INDEX "User_email_key" ON "User"("email"); + +-- AddForeignKey +ALTER TABLE "Post" ADD CONSTRAINT "Post_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "User"("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +-- AddForeignKey +ALTER TABLE "Profile" ADD CONSTRAINT "Profile_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE NO ACTION ON UPDATE NO ACTION; +``` + +Review the SQL migration file to ensure everything is correct. + +Next, mark the migration as applied using `prisma migrate resolve` with the `--applied` argument. + +```terminal +npx prisma migrate resolve --applied 0_init +``` + +The command will mark `0_init` as applied by adding it to the `_prisma_migrations` table. + +You now have a baseline for your current database schema. To make further changes to your database schema, you can update your Prisma schema and use `prisma migrate dev` to apply the changes to your database. diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/170-baseline-your-database-typescript-sqlserver.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/170-baseline-your-database-typescript-sqlserver.mdx new file mode 100644 index 0000000000..ee6d21af26 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/170-baseline-your-database-typescript-sqlserver.mdx @@ -0,0 +1,91 @@ +--- +title: 'Baseline your database' +metaTitle: 'Baseline with Prisma ORM, TypeScript, and SQL Server' +metaDescription: 'Baseline your database with Prisma ORM, JavaScript, and SQL Server' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/install-prisma-client-typescript-sqlserver +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/baseline-your-database- +--- + + +## Create an initial migration + +To use Prisma Migrate with the database you introspected in the last section, you will need to [baseline your database](/orm/prisma-migrate/getting-started). + +Baselining refers to initializing your migration history for a database that might already contain data and **cannot be reset**, such as your production database. Baselining tells Prisma Migrate to assume that one or more migrations have already been applied to your database. + +To baseline your database, use [`prisma migrate diff`](/orm/reference/prisma-cli-reference#migrate-diff) to compare your schema and database, and save the output into a SQL file. + +First, create a `migrations` directory and add a directory inside with your preferred name for the migration. In this example, we will use `0_init` as the migration name: + +```terminal +mkdir -p prisma/migrations/0_init +``` + + + +`-p` will recursively create any missing folders in the path you provide. + + + +Next, generate the migration file with `prisma migrate diff`. Use the following arguments: + +- `--from-empty`: assumes the data model you're migrating from is empty +- `--to-schema-datamodel`: the current database state using the URL in the `datasource` block +- `--script`: output a SQL script + +```terminal wrap +npx prisma migrate diff --from-empty --to-schema-datamodel prisma/schema.prisma --script > prisma/migrations/0_init/migration.sql +``` + +## Review the migration + +The command will generate a migration that should resemble the following script: + +```sql file=prisma/migrations/0_init/migration.sql +CREATE TABLE [dbo].[Post] ( + [id] INT NOT NULL IDENTITY(1,1), + [createdAt] DATETIME2 NOT NULL CONSTRAINT [Post_createdAt_df] DEFAULT CURRENT_TIMESTAMP, + [updatedAt] DATETIME2 NOT NULL, + [title] VARCHAR(255) NOT NULL, + [content] NVARCHAR(1000), + [published] BIT NOT NULL CONSTRAINT [Post_published_df] DEFAULT 0, + [authorId] INT NOT NULL, + CONSTRAINT [Post_pkey] PRIMARY KEY ([id]) +); + +CREATE TABLE [dbo].[Profile] ( + [id] INT NOT NULL IDENTITY(1,1), + [bio] NVARCHAR(1000), + [userId] INT NOT NULL, + CONSTRAINT [Profile_pkey] PRIMARY KEY ([id]), + CONSTRAINT [Profile_userId_key] UNIQUE ([userId]) +); + +CREATE TABLE [dbo].[User] ( + [id] INT NOT NULL IDENTITY(1,1), + [email] NVARCHAR(1000) NOT NULL, + [name] NVARCHAR(1000), + CONSTRAINT [User_pkey] PRIMARY KEY ([id]), + CONSTRAINT [User_email_key] UNIQUE ([email]) +); + +ALTER TABLE [dbo].[Post] ADD CONSTRAINT [Post_authorId_fkey] FOREIGN KEY ([authorId]) REFERENCES [dbo].[User]([id]) ON DELETE NO ACTION ON UPDATE CASCADE; + +ALTER TABLE [dbo].[Profile] ADD CONSTRAINT [Profile_userId_fkey] FOREIGN KEY ([userId]) REFERENCES [dbo].[User]([id]) ON DELETE NO ACTION ON UPDATE CASCADE; +``` + +Review the SQL migration file to ensure everything is correct. + +Next, mark the migration as applied using `prisma migrate resolve` with the `--applied` argument. + +```terminal +npx prisma migrate resolve --applied 0_init +``` + +The command will mark `0_init` as applied by adding it to the `_prisma_migrations` table. + +You now have a baseline for your current database schema. To make further changes to your database schema, you can update your Prisma schema and use `prisma migrate dev` to apply the changes to your database. diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/170-baseline-your-database.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/170-baseline-your-database.mdx deleted file mode 100644 index 88f71c91ac..0000000000 --- a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/170-baseline-your-database.mdx +++ /dev/null @@ -1,421 +0,0 @@ ---- -title: 'Baseline your database' -metaTitle: 'Baseline your database' -metaDescription: 'Baseline your database using Prisma Migrate in your project' -langSwitcher: ['typescript', 'node'] -dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'cockroachdb'] -toc: false ---- - -## Create an initial migration - -To use Prisma Migrate with the database you introspected in the last section, you will need to [baseline your database](/orm/prisma-migrate/getting-started). - -Baselining refers to initializing your migration history for a database that might already contain data and **cannot be reset**, such as your production database. Baselining tells Prisma Migrate to assume that one or more migrations have already been applied to your database. - -To baseline your database, use [`prisma migrate diff`](/orm/reference/prisma-cli-reference#migrate-diff) to compare your schema and database, and save the output into a SQL file. - -First, create a `migrations` directory and add a directory inside with your preferred name for the migration. In this example, we will use `0_init` as the migration name: - -```terminal -mkdir -p prisma/migrations/0_init -``` - - - -`-p` will recursively create any missing folders in the path you provide. - - - -Next, generate the migration file with `prisma migrate diff`. Use the following arguments: - -- `--from-empty`: assumes the data model you're migrating from is empty -- `--to-schema-datamodel`: the current database state using the URL in the `datasource` block -- `--script`: output a SQL script - -```terminal wrap -npx prisma migrate diff --from-empty --to-schema-datamodel prisma/schema.prisma --script > prisma/migrations/0_init/migration.sql -``` - -## Review the migration - -The command will generate a migration that should resemble the following script: - - - -```sql file=prisma/migrations/0_init/migration.sql --- CreateTable -CREATE TABLE "Post" ( - "id" SERIAL NOT NULL, - "title" VARCHAR(255) NOT NULL, - "createdAt" TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "content" TEXT, - "published" BOOLEAN NOT NULL DEFAULT false, - "authorId" INTEGER NOT NULL, - - CONSTRAINT "Post_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "Profile" ( - "id" SERIAL NOT NULL, - "bio" TEXT, - "userId" INTEGER NOT NULL, - - CONSTRAINT "Profile_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "User" ( - "id" SERIAL NOT NULL, - "name" VARCHAR(255), - "email" VARCHAR(255) NOT NULL, - - CONSTRAINT "User_pkey" PRIMARY KEY ("id") -); - --- CreateIndex -CREATE UNIQUE INDEX "Profile_userId_key" ON "Profile"("userId"); - --- CreateIndex -CREATE UNIQUE INDEX "User_email_key" ON "User"("email"); - --- AddForeignKey -ALTER TABLE "Post" ADD CONSTRAINT "Post_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "User"("id") ON DELETE NO ACTION ON UPDATE NO ACTION; - --- AddForeignKey -ALTER TABLE "Profile" ADD CONSTRAINT "Profile_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE NO ACTION ON UPDATE NO ACTION; -``` - - - - - -```sql file=prisma/migrations/0_init/migration.sql --- CreateTable -CREATE TABLE `Post` ( - `id` INTEGER NOT NULL AUTO_INCREMENT, - `title` VARCHAR(255) NOT NULL, - `createdAt` TIMESTAMP(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0), - `content` TEXT NULL, - `published` BOOLEAN NOT NULL DEFAULT false, - `authorId` INTEGER NOT NULL, - - INDEX `authorId`(`authorId`), - PRIMARY KEY (`id`) -) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; - --- CreateTable -CREATE TABLE `Profile` ( - `id` INTEGER NOT NULL AUTO_INCREMENT, - `bio` TEXT NULL, - `userId` INTEGER NOT NULL, - - UNIQUE INDEX `userId`(`userId`), - PRIMARY KEY (`id`) -) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; - --- CreateTable -CREATE TABLE `User` ( - `id` INTEGER NOT NULL AUTO_INCREMENT, - `name` VARCHAR(255) NULL, - `email` VARCHAR(255) NOT NULL, - - UNIQUE INDEX `email`(`email`), - PRIMARY KEY (`id`) -) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; - --- AddForeignKey -ALTER TABLE `Post` ADD CONSTRAINT `Post_ibfk_1` FOREIGN KEY (`authorId`) REFERENCES `User`(`id`) ON DELETE RESTRICT ON UPDATE RESTRICT; - --- AddForeignKey -ALTER TABLE `Profile` ADD CONSTRAINT `Profile_ibfk_1` FOREIGN KEY (`userId`) REFERENCES `User`(`id`) ON DELETE RESTRICT ON UPDATE RESTRICT; -``` - - - - - -```sql file=prisma/migrations/0_init/migration.sql -CREATE TABLE [dbo].[Post] ( - [id] INT NOT NULL IDENTITY(1,1), - [createdAt] DATETIME2 NOT NULL CONSTRAINT [Post_createdAt_df] DEFAULT CURRENT_TIMESTAMP, - [updatedAt] DATETIME2 NOT NULL, - [title] VARCHAR(255) NOT NULL, - [content] NVARCHAR(1000), - [published] BIT NOT NULL CONSTRAINT [Post_published_df] DEFAULT 0, - [authorId] INT NOT NULL, - CONSTRAINT [Post_pkey] PRIMARY KEY ([id]) -); - -CREATE TABLE [dbo].[Profile] ( - [id] INT NOT NULL IDENTITY(1,1), - [bio] NVARCHAR(1000), - [userId] INT NOT NULL, - CONSTRAINT [Profile_pkey] PRIMARY KEY ([id]), - CONSTRAINT [Profile_userId_key] UNIQUE ([userId]) -); - -CREATE TABLE [dbo].[User] ( - [id] INT NOT NULL IDENTITY(1,1), - [email] NVARCHAR(1000) NOT NULL, - [name] NVARCHAR(1000), - CONSTRAINT [User_pkey] PRIMARY KEY ([id]), - CONSTRAINT [User_email_key] UNIQUE ([email]) -); - -ALTER TABLE [dbo].[Post] ADD CONSTRAINT [Post_authorId_fkey] FOREIGN KEY ([authorId]) REFERENCES [dbo].[User]([id]) ON DELETE NO ACTION ON UPDATE CASCADE; - -ALTER TABLE [dbo].[Profile] ADD CONSTRAINT [Profile_userId_fkey] FOREIGN KEY ([userId]) REFERENCES [dbo].[User]([id]) ON DELETE NO ACTION ON UPDATE CASCADE; -``` - - - - - -```sql file=prisma/migrations/0_init/migration.sql -CREATE TABLE "User" ( - id INT8 PRIMARY KEY DEFAULT unique_rowid(), - name STRING(255), - email STRING(255) UNIQUE NOT NULL -); - -CREATE TABLE "Post" ( - id INT8 PRIMARY KEY DEFAULT unique_rowid(), - title STRING(255) UNIQUE NOT NULL, - "createdAt" TIMESTAMP NOT NULL DEFAULT now(), - content STRING, - published BOOLEAN NOT NULL DEFAULT false, - "authorId" INT8 NOT NULL, - FOREIGN KEY ("authorId") REFERENCES "User"(id) -); - -CREATE TABLE "Profile" ( - id INT8 PRIMARY KEY DEFAULT unique_rowid(), - bio STRING, - "userId" INT8 UNIQUE NOT NULL, - FOREIGN KEY ("userId") REFERENCES "User"(id) -); -``` - - - -Review the SQL migration file to ensure everything is correct. - -Next, mark the migration as applied using `prisma migrate resolve` with the `--applied` argument. - -```terminal -npx prisma migrate resolve --applied 0_init -``` - -The command will mark `0_init` as applied by adding it to the `_prisma_migrations` table. - -You now have a baseline for your current database schema. To make further changes to your database schema, you can update your Prisma schema and use `prisma migrate dev` to apply the changes to your database. - - - - - - - Introspection - - - - Install Prisma Client - - - - - - - - - - - - Introspection - - - - Install Prisma Client - - - - - - - - - - - - Introspection - - - - Install Prisma Client - - - - - - - - - - - - Introspection - - - - Install Prisma Client - - - - - - - - - - - - Introspection - - - - Install Prisma Client - - - - - - - - - - - - Introspection - - - - Install Prisma Client - - - - - - - - - - - - Introspection - - - - Install Prisma Client - - - - - - - - - - - - Introspection - - - - Install Prisma Client - - - - - diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/200-install-prisma-client-node-cockroachdb.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/200-install-prisma-client-node-cockroachdb.mdx new file mode 100644 index 0000000000..cc6f4e8815 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/200-install-prisma-client-node-cockroachdb.mdx @@ -0,0 +1,35 @@ +--- +title: 'Install Prisma Client' +metaTitle: 'Install Prisma Client in your exising project using JavaScript and CockroachDB' +metaDescription: 'Install and generate Prisma Client in your existing JavaScript and CockroachDB project' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/querying-the-database-node-cockroachdb +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/install-prisma-client- +--- + + + +## Install and generate Prisma Client + +To get started with Prisma Client, you need to install the `@prisma/client` package: + +```terminal copy +npm install @prisma/client +``` + +Notice that the [`@prisma/client` node module](/orm/prisma-client/setup-and-configuration/generating-prisma-client#the-prismaclient-npm-package) references a folder named `.prisma/client`. The `.prisma/client` folder contains your generated Prisma Client, and is modified each time you change the schema and run the following command: + +```terminal copy +npx prisma generate +``` + +This command reads your Prisma schema and generates your Prisma Client library: + +![Install and generate Prisma Client](/img/getting-started/prisma-client-install-and-generate.png) + +The `@prisma/client` node module references a folder named `.prisma/client`, which contains your unique, generated Prisma Client: + +![The .prisma and @prisma folders](/img/getting-started/prisma-client-node-module.png) diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/200-install-prisma-client-node-mysql.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/200-install-prisma-client-node-mysql.mdx new file mode 100644 index 0000000000..a00a229151 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/200-install-prisma-client-node-mysql.mdx @@ -0,0 +1,35 @@ +--- +title: 'Install Prisma Client' +metaTitle: 'Install Prisma Client in your exising project using JavaScript and MySQL' +metaDescription: 'Install and generate Prisma Client in your existing JavaScript and MySQL project' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/querying-the-database-node-mysql +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/install-prisma-client- +--- + + + +## Install and generate Prisma Client + +To get started with Prisma Client, you need to install the `@prisma/client` package: + +```terminal copy +npm install @prisma/client +``` + +Notice that the [`@prisma/client` node module](/orm/prisma-client/setup-and-configuration/generating-prisma-client#the-prismaclient-npm-package) references a folder named `.prisma/client`. The `.prisma/client` folder contains your generated Prisma Client, and is modified each time you change the schema and run the following command: + +```terminal copy +npx prisma generate +``` + +This command reads your Prisma schema and generates your Prisma Client library: + +![Install and generate Prisma Client](/img/getting-started/prisma-client-install-and-generate.png) + +The `@prisma/client` node module references a folder named `.prisma/client`, which contains your unique, generated Prisma Client: + +![The .prisma and @prisma folders](/img/getting-started/prisma-client-node-module.png) diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/200-install-prisma-client-node-planetscale.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/200-install-prisma-client-node-planetscale.mdx new file mode 100644 index 0000000000..bed1ebd570 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/200-install-prisma-client-node-planetscale.mdx @@ -0,0 +1,35 @@ +--- +title: 'Install Prisma Client' +metaTitle: 'Install Prisma Client in your exising project using JavaScript and PlanetScale' +metaDescription: 'Install and generate Prisma Client in your existing JavaScript and PlanetScale project' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/querying-the-database-node-planetscale +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/install-prisma-client- +--- + + + +## Install and generate Prisma Client + +To get started with Prisma Client, you need to install the `@prisma/client` package: + +```terminal copy +npm install @prisma/client +``` + +Notice that the [`@prisma/client` node module](/orm/prisma-client/setup-and-configuration/generating-prisma-client#the-prismaclient-npm-package) references a folder named `.prisma/client`. The `.prisma/client` folder contains your generated Prisma Client, and is modified each time you change the schema and run the following command: + +```terminal copy +npx prisma generate +``` + +This command reads your Prisma schema and generates your Prisma Client library: + +![Install and generate Prisma Client](/img/getting-started/prisma-client-install-and-generate.png) + +The `@prisma/client` node module references a folder named `.prisma/client`, which contains your unique, generated Prisma Client: + +![The .prisma and @prisma folders](/img/getting-started/prisma-client-node-module.png) diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/200-install-prisma-client-node-postgresql.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/200-install-prisma-client-node-postgresql.mdx new file mode 100644 index 0000000000..b208270d14 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/200-install-prisma-client-node-postgresql.mdx @@ -0,0 +1,35 @@ +--- +title: 'Install Prisma Client' +metaTitle: 'Install Prisma Client in your exising project using JavaScript and PostgreSQL' +metaDescription: 'Install and generate Prisma Client in your existing JavaScript and PlanetScale project' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/querying-the-database-node-postgresql +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/install-prisma-client- +--- + + + +## Install and generate Prisma Client + +To get started with Prisma Client, you need to install the `@prisma/client` package: + +```terminal copy +npm install @prisma/client +``` + +Notice that the [`@prisma/client` node module](/orm/prisma-client/setup-and-configuration/generating-prisma-client#the-prismaclient-npm-package) references a folder named `.prisma/client`. The `.prisma/client` folder contains your generated Prisma Client, and is modified each time you change the schema and run the following command: + +```terminal copy +npx prisma generate +``` + +This command reads your Prisma schema and generates your Prisma Client library: + +![Install and generate Prisma Client](/img/getting-started/prisma-client-install-and-generate.png) + +The `@prisma/client` node module references a folder named `.prisma/client`, which contains your unique, generated Prisma Client: + +![The .prisma and @prisma folders](/img/getting-started/prisma-client-node-module.png) diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/200-install-prisma-client-node-sqlserver.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/200-install-prisma-client-node-sqlserver.mdx new file mode 100644 index 0000000000..c042fdb63e --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/200-install-prisma-client-node-sqlserver.mdx @@ -0,0 +1,35 @@ +--- +title: 'Install Prisma Client' +metaTitle: 'Install Prisma Client in your exising project using JavaScript and SQL Server' +metaDescription: 'Install and generate Prisma Client in your existing JavaScript and SQL Server project' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/querying-the-database-node-sqlserver +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/install-prisma-client- +--- + + + +## Install and generate Prisma Client + +To get started with Prisma Client, you need to install the `@prisma/client` package: + +```terminal copy +npm install @prisma/client +``` + +Notice that the [`@prisma/client` node module](/orm/prisma-client/setup-and-configuration/generating-prisma-client#the-prismaclient-npm-package) references a folder named `.prisma/client`. The `.prisma/client` folder contains your generated Prisma Client, and is modified each time you change the schema and run the following command: + +```terminal copy +npx prisma generate +``` + +This command reads your Prisma schema and generates your Prisma Client library: + +![Install and generate Prisma Client](/img/getting-started/prisma-client-install-and-generate.png) + +The `@prisma/client` node module references a folder named `.prisma/client`, which contains your unique, generated Prisma Client: + +![The .prisma and @prisma folders](/img/getting-started/prisma-client-node-module.png) diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/200-install-prisma-client-typescript-cockroachdb.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/200-install-prisma-client-typescript-cockroachdb.mdx new file mode 100644 index 0000000000..04a49bdba5 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/200-install-prisma-client-typescript-cockroachdb.mdx @@ -0,0 +1,35 @@ +--- +title: 'Install Prisma Client' +metaTitle: 'Install Prisma Client in your exising project using TypeScript and CockroachDB' +metaDescription: 'Install and generate Prisma Client in your existing TypeScript and CockroachDB project' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/querying-the-database-typescript-cockroachdb +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/install-prisma-client- +--- + + + +## Install and generate Prisma Client + +To get started with Prisma Client, you need to install the `@prisma/client` package: + +```terminal copy +npm install @prisma/client +``` + +Notice that the [`@prisma/client` node module](/orm/prisma-client/setup-and-configuration/generating-prisma-client#the-prismaclient-npm-package) references a folder named `.prisma/client`. The `.prisma/client` folder contains your generated Prisma Client, and is modified each time you change the schema and run the following command: + +```terminal copy +npx prisma generate +``` + +This command reads your Prisma schema and generates your Prisma Client library: + +![Install and generate Prisma Client](/img/getting-started/prisma-client-install-and-generate.png) + +The `@prisma/client` node module references a folder named `.prisma/client`, which contains your unique, generated Prisma Client: + +![The .prisma and @prisma folders](/img/getting-started/prisma-client-node-module.png) diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/200-install-prisma-client-typescript-mysql.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/200-install-prisma-client-typescript-mysql.mdx new file mode 100644 index 0000000000..38065768b7 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/200-install-prisma-client-typescript-mysql.mdx @@ -0,0 +1,35 @@ +--- +title: 'Install Prisma Client' +metaTitle: 'Install Prisma Client in your exising project using TypeScript and MySQL' +metaDescription: 'Install and generate Prisma Client in your existing TypeScript and MySQL project' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/querying-the-database-typescript-mysql +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/install-prisma-client- +--- + + + +## Install and generate Prisma Client + +To get started with Prisma Client, you need to install the `@prisma/client` package: + +```terminal copy +npm install @prisma/client +``` + +Notice that the [`@prisma/client` node module](/orm/prisma-client/setup-and-configuration/generating-prisma-client#the-prismaclient-npm-package) references a folder named `.prisma/client`. The `.prisma/client` folder contains your generated Prisma Client, and is modified each time you change the schema and run the following command: + +```terminal copy +npx prisma generate +``` + +This command reads your Prisma schema and generates your Prisma Client library: + +![Install and generate Prisma Client](/img/getting-started/prisma-client-install-and-generate.png) + +The `@prisma/client` node module references a folder named `.prisma/client`, which contains your unique, generated Prisma Client: + +![The .prisma and @prisma folders](/img/getting-started/prisma-client-node-module.png) diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/200-install-prisma-client-typescript-planetscale.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/200-install-prisma-client-typescript-planetscale.mdx new file mode 100644 index 0000000000..c7e6485560 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/200-install-prisma-client-typescript-planetscale.mdx @@ -0,0 +1,35 @@ +--- +title: 'Install Prisma Client' +metaTitle: 'Install Prisma Client in your exising project using TypeScript and PlanetScale' +metaDescription: 'Install and generate Prisma Client in your existing TypeScript and PlanetScale project' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/querying-the-database-typescript-planetscale +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/install-prisma-client- +--- + + + +## Install and generate Prisma Client + +To get started with Prisma Client, you need to install the `@prisma/client` package: + +```terminal copy +npm install @prisma/client +``` + +Notice that the [`@prisma/client` node module](/orm/prisma-client/setup-and-configuration/generating-prisma-client#the-prismaclient-npm-package) references a folder named `.prisma/client`. The `.prisma/client` folder contains your generated Prisma Client, and is modified each time you change the schema and run the following command: + +```terminal copy +npx prisma generate +``` + +This command reads your Prisma schema and generates your Prisma Client library: + +![Install and generate Prisma Client](/img/getting-started/prisma-client-install-and-generate.png) + +The `@prisma/client` node module references a folder named `.prisma/client`, which contains your unique, generated Prisma Client: + +![The .prisma and @prisma folders](/img/getting-started/prisma-client-node-module.png) diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/200-install-prisma-client-typescript-postgresql.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/200-install-prisma-client-typescript-postgresql.mdx new file mode 100644 index 0000000000..7b4c764a7a --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/200-install-prisma-client-typescript-postgresql.mdx @@ -0,0 +1,34 @@ +--- +title: 'Install Prisma Client' +metaTitle: 'Install Prisma Client in your exising project using TypeScript and PostgreSQL' +metaDescription: 'Install and generate Prisma Client in your existing TypeScript and PostgreSQL project' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/querying-the-database-typescript-postgresql +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/install-prisma-client- +--- + + + +## Install and generate Prisma Client + +To get started with Prisma Client, you need to install the `@prisma/client` package: + +```terminal copy +npm install @prisma/client +``` + +Notice that the [`@prisma/client` node module](/orm/prisma-client/setup-and-configuration/generating-prisma-client#the-prismaclient-npm-package) references a folder named `.prisma/client`. The `.prisma/client` folder contains your generated Prisma Client, and is modified each time you change the schema and run the following command: + +```terminal copy +npx prisma generate +``` + +This command reads your Prisma schema and generates your Prisma Client library: + +![Install and generate Prisma Client](/img/getting-started/prisma-client-install-and-generate.png) + +The `@prisma/client` node module references a folder named `.prisma/client`, which contains your unique, generated Prisma Client: + +![The .prisma and @prisma folders](/img/getting-started/prisma-client-node-module.png) diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/200-install-prisma-client-typescript-sqlserver.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/200-install-prisma-client-typescript-sqlserver.mdx new file mode 100644 index 0000000000..34bd8af1f1 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/200-install-prisma-client-typescript-sqlserver.mdx @@ -0,0 +1,35 @@ +--- +title: 'Install Prisma Client' +metaTitle: 'Install Prisma Client in your exising project using TypeScript and SQL Server' +metaDescription: 'Install and generate Prisma Client in your existing TypeScript and SQL Server project' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/querying-the-database-typescript-sqlserver +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/install-prisma-client- +--- + + + +## Install and generate Prisma Client + +To get started with Prisma Client, you need to install the `@prisma/client` package: + +```terminal copy +npm install @prisma/client +``` + +Notice that the [`@prisma/client` node module](/orm/prisma-client/setup-and-configuration/generating-prisma-client#the-prismaclient-npm-package) references a folder named `.prisma/client`. The `.prisma/client` folder contains your generated Prisma Client, and is modified each time you change the schema and run the following command: + +```terminal copy +npx prisma generate +``` + +This command reads your Prisma schema and generates your Prisma Client library: + +![Install and generate Prisma Client](/img/getting-started/prisma-client-install-and-generate.png) + +The `@prisma/client` node module references a folder named `.prisma/client`, which contains your unique, generated Prisma Client: + +![The .prisma and @prisma folders](/img/getting-started/prisma-client-node-module.png) diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/200-install-prisma-client.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/200-install-prisma-client.mdx deleted file mode 100644 index 841bf540d8..0000000000 --- a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/200-install-prisma-client.mdx +++ /dev/null @@ -1,290 +0,0 @@ ---- -title: 'Install Prisma Client' -metaTitle: 'Install Prisma Client' -metaDescription: 'Install and generate Prisma Client in your project' -langSwitcher: ['typescript', 'node'] -dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] -toc: false ---- - -## Install and generate Prisma Client - -To get started with Prisma Client, you need to install the `@prisma/client` package: - -```terminal copy -npm install @prisma/client -``` - -Notice that the [`@prisma/client` node module](/orm/prisma-client/setup-and-configuration/generating-prisma-client#the-prismaclient-npm-package) references a folder named `.prisma/client`. The `.prisma/client` folder contains your generated Prisma Client, and is modified each time you change the schema and run the following command: - -```terminal copy -npx prisma generate -``` - -This command reads your Prisma schema and generates your Prisma Client library: - -![Install and generate Prisma Client](../../../images/prisma-client-install-and-generate.png) - -The `@prisma/client` node module references a folder named `.prisma/client`, which contains your unique, generated Prisma Client: - -![The .prisma and @prisma folders](./prisma-client-node-module.png) - - - - - - - Baseline your database - - - - Querying the database - - - - - - - - - - - - Baseline your database - - - - Querying the database - - - - - - - - - - - - Introspection - - - - Querying the database - - - - - - - - - - - - Baseline your database - - - - Querying the database - - - - - - - - - - - - Baseline your database - - - - Querying the database - - - - - - - - - - - - Baseline your database - - - - Querying the database - - - - - - - - - - - - Baseline your database - - - - Querying the database - - - - - - - - - - - - Introspection - - - - Querying the database - - - - - - - - - - - - Baseline your database - - - - Querying the database - - - - - - - - - - - - Baseline your database - - - - Querying the database - - - - - diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/250-querying-the-database-node-cockroachdb.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/250-querying-the-database-node-cockroachdb.mdx new file mode 100644 index 0000000000..2b19d987c6 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/250-querying-the-database-node-cockroachdb.mdx @@ -0,0 +1,121 @@ +--- +title: 'Querying the database' +metaTitle: 'Query your existing CockroachDB database with JavaScript and Prisma ORM' +metaDescription: 'Write data to and query the CockroachDB database with your JavaScript and Prisma ORM project' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/evolve-your-schema-node-cockroachdb +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/querying-the-database- +--- + + +## Write your first query with Prisma Client + +Now that you have generated Prisma Client, you can start writing queries to read and write data in your database. + +If you're building a REST API, you can use Prisma Client in your route handlers to read and write data in the database based on incoming HTTP requests. If you're building a GraphQL API, you can use Prisma Client in your resolvers to read and write data in the database based on incoming queries and mutations. + +For the purpose of this guide however, you'll just create a plain Node.js script to learn how to send queries to your database using Prisma Client. Once you have an understanding of how the API works, you can start integrating it into your actual application code (e.g. REST route handlers or GraphQL resolvers). + +Create a new file named `index.js` and add the following code to it: + +```js file=index.js showLineNumbers +const { PrismaClient } = require('@prisma/client') + +const prisma = new PrismaClient() + +async function main() { + // ... you will write your Prisma Client queries here +} + +main() + .then(async () => { + await prisma.$disconnect() + }) + .catch(async (e) => { + console.error(e) + await prisma.$disconnect() + process.exit(1) + }) +``` + +```js file=index.js +async function main() { + const allUsers = await prisma.user.findMany() + console.log(allUsers) +} +``` + +Now run the code with this command: + +```terminal copy +node index.js +``` + +If you created a database using the schema from the database introspection step, the query should print an empty array because there are no `User` records in the database yet. + +```no-copy +[] +``` + +If you introspected an existing database with records, the query should return an array of JavaScript objects. + +## Write data into the database + +The `findMany` query you used in the previous section only _reads_ data from the database. In this section, you'll learn how to write a query to _write_ new records into the `Post` and `User` tables. + +Adjust the `main` function to send a `create` query to the database: + +```js file=index.js showLineNumbers +async function main() { + await prisma.user.create({ + data: { + name: 'Alice', + email: 'alice@prisma.io', + posts: { + create: { title: 'Hello World' }, + }, + profile: { + create: { bio: 'I like turtles' }, + }, + }, + }) + + const allUsers = await prisma.user.findMany({ + include: { + posts: true, + profile: true, + }, + }) + console.dir(allUsers, { depth: null }) +} +``` +This code creates a new `User` record together with new `Post` and `Profile` records using a [nested write](/orm/prisma-client/queries/relation-queries#nested-writes) query. The `User` record is connected to the two other ones via the `Post.author` ↔ `User.posts` and `Profile.user` ↔ `User.profile` [relation fields](/orm/prisma-schema/data-model/relations#relation-fields) respectively. + +Notice that you're passing the [`include`](/orm/prisma-client/queries/select-fields#include-relations-and-select-relation-fields) option to `findMany` which tells Prisma Client to include the `posts` and `profile` relations on the returned `User` objects. + +Run the code with this command: + +```terminal copy +node index.js +``` + +Before moving on to the next section, you'll "publish" the `Post` record you just created using an `update` query. Adjust the `main` function as follows: + +```js file=index.js showLineNumbers +async function main() { + const post = await prisma.post.update({ + where: { title: 'Hello World' }, + data: { published: true }, + }) + console.log(post) +} +``` + +Now run the code using the same command as before: + +```terminal copy +node index.js +``` diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/250-querying-the-database-node-mysql.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/250-querying-the-database-node-mysql.mdx new file mode 100644 index 0000000000..b87931ef6b --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/250-querying-the-database-node-mysql.mdx @@ -0,0 +1,123 @@ +--- +title: 'Querying the database' +metaTitle: 'Query your existing MySQL database with JavaScript and Prisma ORM' +metaDescription: 'Write data to and query the MySQL database with your JavaScript and Prisma ORM project' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/evolve-your-schema-node-mysql +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/querying-the-database- +--- + + +## Write your first query with Prisma Client + +Now that you have generated Prisma Client, you can start writing queries to read and write data in your database. + +If you're building a REST API, you can use Prisma Client in your route handlers to read and write data in the database based on incoming HTTP requests. If you're building a GraphQL API, you can use Prisma Client in your resolvers to read and write data in the database based on incoming queries and mutations. + +For the purpose of this guide however, you'll just create a plain Node.js script to learn how to send queries to your database using Prisma Client. Once you have an understanding of how the API works, you can start integrating it into your actual application code (e.g. REST route handlers or GraphQL resolvers). + + +Create a new file named `index.js` and add the following code to it: + +```js file=index.js showLineNumbers +const { PrismaClient } = require('@prisma/client') + +const prisma = new PrismaClient() + +async function main() { + // ... you will write your Prisma Client queries here +} + +main() + .then(async () => { + await prisma.$disconnect() + }) + .catch(async (e) => { + console.error(e) + await prisma.$disconnect() + process.exit(1) + }) +``` + +```js file=index.js +async function main() { + const allUsers = await prisma.user.findMany() + console.log(allUsers) +} +``` + +Now run the code with this command: + +```terminal copy +node index.js +``` + +If you created a database using the schema from the database introspection step, the query should print an empty array because there are no `User` records in the database yet. + +```no-copy +[] +``` + +If you introspected an existing database with records, the query should return an array of JavaScript objects. + +## Write data into the database + +The `findMany` query you used in the previous section only _reads_ data from the database. In this section, you'll learn how to write a query to _write_ new records into the `Post` and `User` tables. + +Adjust the `main` function to send a `create` query to the database: + +```js file=index.js showLineNumbers +async function main() { + await prisma.user.create({ + data: { + name: 'Alice', + email: 'alice@prisma.io', + posts: { + create: { title: 'Hello World' }, + }, + profile: { + create: { bio: 'I like turtles' }, + }, + }, + }) + + const allUsers = await prisma.user.findMany({ + include: { + posts: true, + profile: true, + }, + }) + console.dir(allUsers, { depth: null }) +} +``` + +This code creates a new `User` record together with new `Post` and `Profile` records using a [nested write](/orm/prisma-client/queries/relation-queries#nested-writes) query. The `User` record is connected to the two other ones via the `Post.author` ↔ `User.posts` and `Profile.user` ↔ `User.profile` [relation fields](/orm/prisma-schema/data-model/relations#relation-fields) respectively. + +Notice that you're passing the [`include`](/orm/prisma-client/queries/select-fields#include-relations-and-select-relation-fields) option to `findMany` which tells Prisma Client to include the `posts` and `profile` relations on the returned `User` objects. + +Run the code with this command: + +```terminal copy +node index.js +``` + +Before moving on to the next section, you'll "publish" the `Post` record you just created using an `update` query. Adjust the `main` function as follows: + +```js file=index.js showLineNumbers +async function main() { + const post = await prisma.post.update({ + where: { id: 1 }, + data: { published: true }, + }) + console.log(post) +} +``` + +Now run the code using the same command as before: + +```terminal copy +node index.js +``` diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/250-querying-the-database-node-planetscale.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/250-querying-the-database-node-planetscale.mdx new file mode 100644 index 0000000000..629ffcdfd7 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/250-querying-the-database-node-planetscale.mdx @@ -0,0 +1,135 @@ +--- +title: 'Querying the database' +metaTitle: 'Query your existing PlanetScale database with JavaScript and Prisma ORM' +metaDescription: 'Write data to and query the PlanetScale database with your JavaScript and Prisma ORM project' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/evolve-your-schema-node-postgresql +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/querying-the-database- +--- + +## Write your first query with Prisma Client + +Now that you have generated Prisma Client, you can start writing queries to read and write data in your database. + +If you're building a REST API, you can use Prisma Client in your route handlers to read and write data in the database based on incoming HTTP requests. If you're building a GraphQL API, you can use Prisma Client in your resolvers to read and write data in the database based on incoming queries and mutations. + +For the purpose of this guide however, you'll just create a plain Node.js script to learn how to send queries to your database using Prisma Client. Once you have an understanding of how the API works, you can start integrating it into your actual application code (e.g. REST route handlers or GraphQL resolvers). + +Create a new file named `index.js` and add the following code to it: + +```js file=index.js showLineNumbers +const { PrismaClient } = require('@prisma/client') + +const prisma = new PrismaClient() + +async function main() { + // ... you will write your Prisma Client queries here +} + +main() + .then(async () => { + await prisma.$disconnect() + }) + .catch(async (e) => { + console.error(e) + await prisma.$disconnect() + process.exit(1) + }) +``` + +Here's a quick overview of the different parts of the code snippet: + +1. Import the `PrismaClient` constructor from the `@prisma/client` node module +1. Instantiate `PrismaClient` +1. Define an `async` function named `main` to send queries to the database +1. Call the `main` function +1. Close the database connections when the script terminates + +Depending on what your models look like, the Prisma Client API will look different as well. For example, if you have a `User` model, your `PrismaClient` instance exposes a property called `user` on which you can call [CRUD](/orm/prisma-client/queries/crud) methods like `findMany`, `create` or `update`. The property is named after the model, but the first letter is lowercased (so for the `Post` model it's called `post`, for `Profile` it's called `profile`). + +The following examples are all based on the models in the Prisma schema. + +Inside the `main` function, add the following query to read all `User` records from the database and print the result: + +```js file=index.js showLineNumbers +async function main() { + const allUsers = await prisma.user.findMany() + console.log(allUsers) +} +``` + +Now run the code with this command: + +```terminal copy +node index.js +``` + +If you created a database using the schema from the database introspection step, the query should print an empty array because there are no `User` records in the database yet. + +```no-copy +[] +``` + +If you introspected an existing database with records, the query should return an array of JavaScript objects. + +## Write data into the database + +The `findMany` query you used in the previous section only _reads_ data from the database. In this section, you'll learn how to write a query to _write_ new records into the `Post` and `User` tables. + +Adjust the `main` function to send a `create` query to the database: + +```js file=index.js showLineNumbers +async function main() { + await prisma.user.create({ + data: { + name: 'Alice', + email: 'alice@prisma.io', + posts: { + create: { title: 'Hello World' }, + }, + profile: { + create: { bio: 'I like turtles' }, + }, + }, + }) + + const allUsers = await prisma.user.findMany({ + include: { + posts: true, + profile: true, + }, + }) + console.dir(allUsers, { depth: null }) +} +``` + +This code creates a new `User` record together with new `Post` and `Profile` records using a [nested write](/orm/prisma-client/queries/relation-queries#nested-writes) query. The `User` record is connected to the two other ones via the `Post.author` ↔ `User.posts` and `Profile.user` ↔ `User.profile` [relation fields](/orm/prisma-schema/data-model/relations#relation-fields) respectively. + +Notice that you're passing the [`include`](/orm/prisma-client/queries/select-fields#include-relations-and-select-relation-fields) option to `findMany` which tells Prisma Client to include the `posts` and `profile` relations on the returned `User` objects. + +Run the code with this command: + +```terminal copy +node index.js +``` + +Before moving on to the next section, you'll "publish" the `Post` record you just created using an `update` query. Adjust the `main` function as follows: + +```js file=index.js +async function main() { + const post = await prisma.post.update({ + where: { id: 1 }, + data: { published: true }, + }) + console.log(post) +} +``` + +Now run the code using the same command as before: + +```terminal copy +node index.js +``` diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/250-querying-the-database-node-postgresql.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/250-querying-the-database-node-postgresql.mdx new file mode 100644 index 0000000000..1cea242bb4 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/250-querying-the-database-node-postgresql.mdx @@ -0,0 +1,122 @@ +--- +title: 'Querying the database' +metaTitle: 'Query your existing PostgreSQL database with JavaScript and Prisma ORM' +metaDescription: 'Write data to and query the PostgreSQL database with your JavaScript and Prisma ORM project' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/evolve-your-schema-node-postgresql +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/querying-the-database- +--- + + +## Write your first query with Prisma Client + +Now that you have generated Prisma Client, you can start writing queries to read and write data in your database. + +If you're building a REST API, you can use Prisma Client in your route handlers to read and write data in the database based on incoming HTTP requests. If you're building a GraphQL API, you can use Prisma Client in your resolvers to read and write data in the database based on incoming queries and mutations. + +For the purpose of this guide however, you'll just create a plain Node.js script to learn how to send queries to your database using Prisma Client. Once you have an understanding of how the API works, you can start integrating it into your actual application code (e.g. REST route handlers or GraphQL resolvers). + +Create a new file named `index.js` and add the following code to it: + +```js file=index.js showLineNumbers +const { PrismaClient } = require('@prisma/client') + +const prisma = new PrismaClient() + +async function main() { + // ... you will write your Prisma Client queries here +} + +main() + .then(async () => { + await prisma.$disconnect() + }) + .catch(async (e) => { + console.error(e) + await prisma.$disconnect() + process.exit(1) + }) +``` + +```js file=index.js showLineNumbers +async function main() { + const allUsers = await prisma.user.findMany() + console.log(allUsers) +} +``` + +Now run the code with this command: + +```terminal copy +node index.js +``` + +If you created a database using the schema from the database introspection step, the query should print an empty array because there are no `User` records in the database yet. + +```no-copy +[] +``` + +If you introspected an existing database with records, the query should return an array of JavaScript objects. + +## Write data into the database + +The `findMany` query you used in the previous section only _reads_ data from the database. In this section, you'll learn how to write a query to _write_ new records into the `Post` and `User` tables. + +Adjust the `main` function to send a `create` query to the database: + +```js file=index.js showLineNumbers +async function main() { + await prisma.user.create({ + data: { + name: 'Alice', + email: 'alice@prisma.io', + posts: { + create: { title: 'Hello World' }, + }, + profile: { + create: { bio: 'I like turtles' }, + }, + }, + }) + + const allUsers = await prisma.user.findMany({ + include: { + posts: true, + profile: true, + }, + }) + console.dir(allUsers, { depth: null }) +} +``` + +This code creates a new `User` record together with new `Post` and `Profile` records using a [nested write](/orm/prisma-client/queries/relation-queries#nested-writes) query. The `User` record is connected to the two other ones via the `Post.author` ↔ `User.posts` and `Profile.user` ↔ `User.profile` [relation fields](/orm/prisma-schema/data-model/relations#relation-fields) respectively. + +Notice that you're passing the [`include`](/orm/prisma-client/queries/select-fields#include-relations-and-select-relation-fields) option to `findMany` which tells Prisma Client to include the `posts` and `profile` relations on the returned `User` objects. + +Run the code with this command: + +```terminal copy +node index.js +``` + +Before moving on to the next section, you'll "publish" the `Post` record you just created using an `update` query. Adjust the `main` function as follows: + +```js file=index.js +async function main() { + const post = await prisma.post.update({ + where: { id: 1 }, + data: { published: true }, + }) + console.log(post) +} +``` + +Now run the code using the same command as before: + +```terminal copy +node index.js +``` diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/250-querying-the-database-node-sqlserver.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/250-querying-the-database-node-sqlserver.mdx new file mode 100644 index 0000000000..96a0e713b4 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/250-querying-the-database-node-sqlserver.mdx @@ -0,0 +1,130 @@ +--- +title: 'Querying the database' +metaTitle: 'Query your existing PostgreSQL database with JavaScript and Prisma ORM' +metaDescription: 'Write data to and query the PostgreSQL database with your JavaScript and Prisma ORM project' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/evolve-your-schema-node-sqlserver +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/querying-the-database- +--- + + +## Write your first query with Prisma Client + +Now that you have generated Prisma Client, you can start writing queries to read and write data in your database. + +If you're building a REST API, you can use Prisma Client in your route handlers to read and write data in the database based on incoming HTTP requests. If you're building a GraphQL API, you can use Prisma Client in your resolvers to read and write data in the database based on incoming queries and mutations. + +For the purpose of this guide however, you'll just create a plain Node.js script to learn how to send queries to your database using Prisma Client. Once you have an understanding of how the API works, you can start integrating it into your actual application code (e.g. REST route handlers or GraphQL resolvers). + +Create a new file named `index.js` and add the following code to it: + +```js file=index.js showLineNumbers +const { PrismaClient } = require('@prisma/client') + +const prisma = new PrismaClient() + +async function main() { + // ... you will write your Prisma Client queries here +} + +main() + .then(async () => { + await prisma.$disconnect() + }) + .catch(async (e) => { + console.error(e) + await prisma.$disconnect() + process.exit(1) + }) +``` + +Here's a quick overview of the different parts of the code snippet: + +1. Import the `PrismaClient` constructor from the `@prisma/client` node module +1. Instantiate `PrismaClient` +1. Define an `async` function named `main` to send queries to the database +1. Call the `main` function +1. Close the database connections when the script terminates + +Depending on what your models look like, the Prisma Client API will look different as well. For example, if you have a `User` model, your `PrismaClient` instance exposes a property called `user` on which you can call [CRUD](/orm/prisma-client/queries/crud) methods like `findMany`, `create` or `update`. The property is named after the model, but the first letter is lowercased (so for the `Post` model it's called `post`, for `Profile` it's called `profile`). + +The following examples are all based on the models in the Prisma schema. + +Inside the `main` function, add the following query to read all `User` records from the database and print the result: + +```js file=index.js showLineNumbers +async function main() { + const allUsers = await prisma.user.findMany() + console.log(allUsers) +} +``` + +Now run the code with this command: + +```terminal copy +node index.js +``` + +If you created a database using the schema from the database introspection step, the query should print an empty array because there are no `User` records in the database yet. + +```no-copy +[] +``` + +If you introspected an existing database with records, the query should return an array of JavaScript objects. + +## Write data into the database + +The `findMany` query you used in the previous section only _reads_ data from the database. In this section, you'll learn how to write a query to _write_ new records into the `Post` and `User` tables. + +Adjust the `main` function to send a `create` query to the database: + +```js file=index.js showLineNumbers +async function main() { + await prisma.user.create({ + data: { + name: 'Alice', + email: 'alice@prisma.io', + posts: { + create: { title: 'Hello World' }, + }, + profile: { + create: { bio: 'I like turtles' }, + }, + }, + }) + + const allUsers = await prisma.user.findMany({ + include: { + posts: true, + profile: true, + }, + }) + console.dir(allUsers, { depth: null }) +} +``` + +This code creates a new `User` record together with new `Post` and `Profile` records using a [nested write](/orm/prisma-client/queries/relation-queries#nested-writes) query. The `User` record is connected to the two other ones via the `Post.author` ↔ `User.posts` and `Profile.user` ↔ `User.profile` [relation fields](/orm/prisma-schema/data-model/relations#relation-fields) respectively. + +Notice that you're passing the [`include`](/orm/prisma-client/queries/select-fields#include-relations-and-select-relation-fields) option to `findMany` which tells Prisma Client to include the `posts` and `profile` relations on the returned `User` objects. + +Run the code with this command: + +```terminal copy +node index.js +``` + +Before moving on to the next section, you'll "publish" the `Post` record you just created using an `update` query. Adjust the `main` function as follows: + +```js file=index.js +async function main() { + const post = await prisma.post.update({ + where: { id: 1 }, + data: { published: true }, + }) + console.log(post) +} +``` diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/250-querying-the-database-typescript-cockroachdb.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/250-querying-the-database-typescript-cockroachdb.mdx new file mode 100644 index 0000000000..7ac26df900 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/250-querying-the-database-typescript-cockroachdb.mdx @@ -0,0 +1,137 @@ +--- +title: 'Querying the database' +metaTitle: 'Query your existing CockroachDB database with TypeScript and Prisma ORM' +metaDescription: 'Write data to and query the CockroachDB database with your TypeScript and Prisma ORM project' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/evolve-your-schema-typescript-cockroachdb +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/querying-the-database- +--- + + +## Write your first query with Prisma Client + +Now that you have generated Prisma Client, you can start writing queries to read and write data in your database. + +If you're building a REST API, you can use Prisma Client in your route handlers to read and write data in the database based on incoming HTTP requests. If you're building a GraphQL API, you can use Prisma Client in your resolvers to read and write data in the database based on incoming queries and mutations. + +For the purpose of this guide however, you'll just create a plain Node.js script to learn how to send queries to your database using Prisma Client. Once you have an understanding of how the API works, you can start integrating it into your actual application code (e.g. REST route handlers or GraphQL resolvers). + +Create a new file named `index.ts` and add the following code to it: + +```ts file=index.ts showLineNumbers +import { PrismaClient } from '@prisma/client' + +const prisma = new PrismaClient() + +async function main() { + // ... you will write your Prisma Client queries here +} + +main() + .then(async () => { + await prisma.$disconnect() + }) + .catch(async (e) => { + console.error(e) + await prisma.$disconnect() + process.exit(1) + }) +``` + +Here's a quick overview of the different parts of the code snippet: + +1. Import the `PrismaClient` constructor from the `@prisma/client` node module +1. Instantiate `PrismaClient` +1. Define an `async` function named `main` to send queries to the database +1. Call the `main` function +1. Close the database connections when the script terminates + +Depending on what your models look like, the Prisma Client API will look different as well. For example, if you have a `User` model, your `PrismaClient` instance exposes a property called `user` on which you can call [CRUD](/orm/prisma-client/queries/crud) methods like `findMany`, `create` or `update`. The property is named after the model, but the first letter is lowercased (so for the `Post` model it's called `post`, for `Profile` it's called `profile`). + +The following examples are all based on the models in the Prisma schema. + +Inside the `main` function, add the following query to read all `User` records from the database and print the result: + +```ts file=index.ts showLineNumbers +async function main() { + const allUsers = await prisma.user.findMany() + console.log(allUsers) +} +``` + +Now run the code with your current TypeScript setup. If you're using `ts-node`, you can run it like this: + +```terminal copy +npx ts-node index.ts +``` + +If you created a database using the schema from the database introspection step, the query should print an empty array because there are no `User` records in the database yet. + +```no-copy +[] +``` + +If you introspected an existing database with records, the query should return an array of JavaScript objects. + +## Write data into the database + +The `findMany` query you used in the previous section only _reads_ data from the database. In this section, you'll learn how to write a query to _write_ new records into the `Post` and `User` tables. + +Adjust the `main` function to send a `create` query to the database: + +```ts file=index.ts showLineNumbers +async function main() { + await prisma.user.create({ + data: { + name: 'Alice', + email: 'alice@prisma.io', + posts: { + create: { title: 'Hello World' }, + }, + profile: { + create: { bio: 'I like turtles' }, + }, + }, + }) + + const allUsers = await prisma.user.findMany({ + include: { + posts: true, + profile: true, + }, + }) + console.dir(allUsers, { depth: null }) +} +``` + +This code creates a new `User` record together with new `Post` and `Profile` records using a [nested write](/orm/prisma-client/queries/relation-queries#nested-writes) query. The `User` record is connected to the two other ones via the `Post.author` ↔ `User.posts` and `Profile.user` ↔ `User.profile` [relation fields](/orm/prisma-schema/data-model/relations#relation-fields) respectively. + +Notice that you're passing the [`include`](/orm/prisma-client/queries/select-fields#include-relations-and-select-relation-fields) option to `findMany` which tells Prisma Client to include the `posts` and `profile` relations on the returned `User` objects. + +Run the code with your current TypeScript setup. If you're using `ts-node`, you can run it like this: + +```terminal copy +npx ts-node index.ts +``` + +Before moving on to the next section, you'll "publish" the `Post` record you just created using an `update` query. Adjust the `main` function as follows: + +```ts file=index.ts showLineNumbers +async function main() { + const post = await prisma.post.update({ + where: { title: 'Hello World' }, + data: { published: true }, + }) + console.log(post) +} +``` + +Run the code with your current TypeScript setup. If you're using `ts-node`, you can run it like this: + +```terminal copy +npx ts-node index.ts +``` + diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/250-querying-the-database-typescript-mysql.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/250-querying-the-database-typescript-mysql.mdx new file mode 100644 index 0000000000..cd810ca4f7 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/250-querying-the-database-typescript-mysql.mdx @@ -0,0 +1,136 @@ +--- +title: 'Querying the database' +metaTitle: 'Query your existing MySQL database with TypeScript and Prisma ORM' +metaDescription: 'Write data to and query the MySQL database with your TypeScript and Prisma ORM project' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/evolve-your-schema-typescript-mysql +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/querying-the-database- +--- + + +## Write your first query with Prisma Client + +Now that you have generated Prisma Client, you can start writing queries to read and write data in your database. + +If you're building a REST API, you can use Prisma Client in your route handlers to read and write data in the database based on incoming HTTP requests. If you're building a GraphQL API, you can use Prisma Client in your resolvers to read and write data in the database based on incoming queries and mutations. + +For the purpose of this guide however, you'll just create a plain Node.js script to learn how to send queries to your database using Prisma Client. Once you have an understanding of how the API works, you can start integrating it into your actual application code (e.g. REST route handlers or GraphQL resolvers). + +Create a new file named `index.ts` and add the following code to it: + +```ts file=index.ts showLineNumbers +import { PrismaClient } from '@prisma/client' + +const prisma = new PrismaClient() + +async function main() { + // ... you will write your Prisma Client queries here +} + +main() + .then(async () => { + await prisma.$disconnect() + }) + .catch(async (e) => { + console.error(e) + await prisma.$disconnect() + process.exit(1) + }) +``` + +Here's a quick overview of the different parts of the code snippet: + +1. Import the `PrismaClient` constructor from the `@prisma/client` node module +1. Instantiate `PrismaClient` +1. Define an `async` function named `main` to send queries to the database +1. Call the `main` function +1. Close the database connections when the script terminates + +Depending on what your models look like, the Prisma Client API will look different as well. For example, if you have a `User` model, your `PrismaClient` instance exposes a property called `user` on which you can call [CRUD](/orm/prisma-client/queries/crud) methods like `findMany`, `create` or `update`. The property is named after the model, but the first letter is lowercased (so for the `Post` model it's called `post`, for `Profile` it's called `profile`). + +The following examples are all based on the models in the Prisma schema. + +Inside the `main` function, add the following query to read all `User` records from the database and print the result: + +```ts file=index.ts showLineNumbers +async function main() { + const allUsers = await prisma.user.findMany() + console.log(allUsers) +} +``` + +Now run the code with your current TypeScript setup. If you're using `ts-node`, you can run it like this: + +```terminal copy +npx ts-node index.ts +``` + +If you created a database using the schema from the database introspection step, the query should print an empty array because there are no `User` records in the database yet. + +```no-copy +[] +``` + +If you introspected an existing database with records, the query should return an array of JavaScript objects. + +## Write data into the database + +The `findMany` query you used in the previous section only _reads_ data from the database. In this section, you'll learn how to write a query to _write_ new records into the `Post` and `User` tables. + +Adjust the `main` function to send a `create` query to the database: + +```ts file=index.ts showLineNumbers +async function main() { + await prisma.user.create({ + data: { + name: 'Alice', + email: 'alice@prisma.io', + posts: { + create: { title: 'Hello World' }, + }, + profile: { + create: { bio: 'I like turtles' }, + }, + }, + }) + + const allUsers = await prisma.user.findMany({ + include: { + posts: true, + profile: true, + }, + }) + console.dir(allUsers, { depth: null }) +} +``` + +This code creates a new `User` record together with new `Post` and `Profile` records using a [nested write](/orm/prisma-client/queries/relation-queries#nested-writes) query. The `User` record is connected to the two other ones via the `Post.author` ↔ `User.posts` and `Profile.user` ↔ `User.profile` [relation fields](/orm/prisma-schema/data-model/relations#relation-fields) respectively. + +Notice that you're passing the [`include`](/orm/prisma-client/queries/select-fields#include-relations-and-select-relation-fields) option to `findMany` which tells Prisma Client to include the `posts` and `profile` relations on the returned `User` objects. + +Run the code with your current TypeScript setup. If you're using `ts-node`, you can run it like this: + +```terminal copy +npx ts-node index.ts +``` + +Before moving on to the next section, you'll "publish" the `Post` record you just created using an `update` query. Adjust the `main` function as follows: + +```ts file=index.ts showLineNumbers +async function main() { + const post = await prisma.post.update({ + where: { id: 1 }, + data: { published: true }, + }) + console.log(post) +} +``` + +Run the code with your current TypeScript setup. If you're using `ts-node`, you can run it like this: + +```terminal copy +npx ts-node index.ts +``` diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/250-querying-the-database-typescript-planetscale.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/250-querying-the-database-typescript-planetscale.mdx new file mode 100644 index 0000000000..85c31e1e3a --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/250-querying-the-database-typescript-planetscale.mdx @@ -0,0 +1,137 @@ +--- +title: 'Querying the database' +metaTitle: 'Query your existing PlanetScale database with TypeScript and Prisma ORM' +metaDescription: 'Write data to and query the PlanetScale database with your TypeScript and Prisma ORM project' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/evolve-your-schema-typescript-postgresql +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/querying-the-database- +--- + + +## Write your first query with Prisma Client + +Now that you have generated Prisma Client, you can start writing queries to read and write data in your database. + +If you're building a REST API, you can use Prisma Client in your route handlers to read and write data in the database based on incoming HTTP requests. If you're building a GraphQL API, you can use Prisma Client in your resolvers to read and write data in the database based on incoming queries and mutations. + +For the purpose of this guide however, you'll just create a plain Node.js script to learn how to send queries to your database using Prisma Client. Once you have an understanding of how the API works, you can start integrating it into your actual application code (e.g. REST route handlers or GraphQL resolvers). + +Create a new file named `index.ts` and add the following code to it: + +```ts file=index.ts showLineNumbers +import { PrismaClient } from '@prisma/client' + +const prisma = new PrismaClient() + +async function main() { + // ... you will write your Prisma Client queries here +} + +main() + .then(async () => { + await prisma.$disconnect() + }) + .catch(async (e) => { + console.error(e) + await prisma.$disconnect() + process.exit(1) + }) +``` + +Here's a quick overview of the different parts of the code snippet: + +1. Import the `PrismaClient` constructor from the `@prisma/client` node module +1. Instantiate `PrismaClient` +1. Define an `async` function named `main` to send queries to the database +1. Call the `main` function +1. Close the database connections when the script terminates + +Depending on what your models look like, the Prisma Client API will look different as well. For example, if you have a `User` model, your `PrismaClient` instance exposes a property called `user` on which you can call [CRUD](/orm/prisma-client/queries/crud) methods like `findMany`, `create` or `update`. The property is named after the model, but the first letter is lowercased (so for the `Post` model it's called `post`, for `Profile` it's called `profile`). + +The following examples are all based on the models in the Prisma schema. + +Inside the `main` function, add the following query to read all `User` records from the database and print the result: + +```ts file=index.ts showLineNumbers +async function main() { + const allUsers = await prisma.user.findMany() + console.log(allUsers) +} +``` + +Now run the code with your current TypeScript setup. If you're using `ts-node`, you can run it like this: + +```terminal copy +npx ts-node index.ts +``` + + +If you created a database using the schema from the database introspection step, the query should print an empty array because there are no `User` records in the database yet. + +```no-copy +[] +``` + +If you introspected an existing database with records, the query should return an array of JavaScript objects. + +## Write data into the database + +The `findMany` query you used in the previous section only _reads_ data from the database. In this section, you'll learn how to write a query to _write_ new records into the `Post` and `User` tables. + +Adjust the `main` function to send a `create` query to the database: + +```ts file=index.ts showLineNumbers +async function main() { + await prisma.user.create({ + data: { + name: 'Alice', + email: 'alice@prisma.io', + posts: { + create: { title: 'Hello World' }, + }, + profile: { + create: { bio: 'I like turtles' }, + }, + }, + }) + + const allUsers = await prisma.user.findMany({ + include: { + posts: true, + profile: true, + }, + }) + console.dir(allUsers, { depth: null }) +} +``` + +This code creates a new `User` record together with new `Post` and `Profile` records using a [nested write](/orm/prisma-client/queries/relation-queries#nested-writes) query. The `User` record is connected to the two other ones via the `Post.author` ↔ `User.posts` and `Profile.user` ↔ `User.profile` [relation fields](/orm/prisma-schema/data-model/relations#relation-fields) respectively. + +Notice that you're passing the [`include`](/orm/prisma-client/queries/select-fields#include-relations-and-select-relation-fields) option to `findMany` which tells Prisma Client to include the `posts` and `profile` relations on the returned `User` objects. + +Run the code with your current TypeScript setup. If you're using `ts-node`, you can run it like this: + +```terminal copy +npx ts-node index.ts +``` + +Before moving on to the next section, you'll "publish" the `Post` record you just created using an `update` query. Adjust the `main` function as follows: + +```ts file=index.ts showLineNumbers +async function main() { + const post = await prisma.post.update({ + where: { id: 1 }, + data: { published: true }, + }) + console.log(post) +} +``` + +Run the code with your current TypeScript setup. If you're using `ts-node`, you can run it like this: + +```terminal copy +npx ts-node index.ts +``` diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/250-querying-the-database-typescript-postgresql.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/250-querying-the-database-typescript-postgresql.mdx new file mode 100644 index 0000000000..061fca598a --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/250-querying-the-database-typescript-postgresql.mdx @@ -0,0 +1,135 @@ +--- +title: 'Querying the database' +metaTitle: 'Query your existing PostgreSQL database with TypeScript and Prisma ORM' +metaDescription: 'Write data to and query the PostgreSQL database with your TypeScript and Prisma ORM project' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/evolve-your-schema-typescript-postgresql +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/querying-the-database- +--- + + +## Write your first query with Prisma Client + +Now that you have generated Prisma Client, you can start writing queries to read and write data in your database. + +If you're building a REST API, you can use Prisma Client in your route handlers to read and write data in the database based on incoming HTTP requests. If you're building a GraphQL API, you can use Prisma Client in your resolvers to read and write data in the database based on incoming queries and mutations. + +For the purpose of this guide however, you'll just create a plain Node.js script to learn how to send queries to your database using Prisma Client. Once you have an understanding of how the API works, you can start integrating it into your actual application code (e.g. REST route handlers or GraphQL resolvers). + +Create a new file named `index.ts` and add the following code to it: + +```ts file=index.ts showLineNumbers +import { PrismaClient } from '@prisma/client' + +const prisma = new PrismaClient() + +async function main() { + // ... you will write your Prisma Client queries here +} + +main() + .then(async () => { + await prisma.$disconnect() + }) + .catch(async (e) => { + console.error(e) + await prisma.$disconnect() + process.exit(1) + }) +``` + +Here's a quick overview of the different parts of the code snippet: + +1. Import the `PrismaClient` constructor from the `@prisma/client` node module +1. Instantiate `PrismaClient` +1. Define an `async` function named `main` to send queries to the database +1. Call the `main` function +1. Close the database connections when the script terminates + +Depending on what your models look like, the Prisma Client API will look different as well. For example, if you have a `User` model, your `PrismaClient` instance exposes a property called `user` on which you can call [CRUD](/orm/prisma-client/queries/crud) methods like `findMany`, `create` or `update`. The property is named after the model, but the first letter is lowercased (so for the `Post` model it's called `post`, for `Profile` it's called `profile`). + +The following examples are all based on the models in the Prisma schema. + +Inside the `main` function, add the following query to read all `User` records from the database and print the result: + +```ts file=index.ts showLineNumbers +async function main() { + const allUsers = await prisma.user.findMany() + console.log(allUsers) +} +``` + +Now run the code with your current TypeScript setup. If you're using `ts-node`, you can run it like this: + +```terminal copy +npx ts-node index.ts +``` + +If you created a database using the schema from the database introspection step, the query should print an empty array because there are no `User` records in the database yet. + +```no-copy +[] +``` + +If you introspected an existing database with records, the query should return an array of JavaScript objects. + +## Write data into the database + +The `findMany` query you used in the previous section only _reads_ data from the database. In this section, you'll learn how to write a query to _write_ new records into the `Post` and `User` tables. + +Adjust the `main` function to send a `create` query to the database: + +```ts file=index.ts showLineNumbers +async function main() { + await prisma.user.create({ + data: { + name: 'Alice', + email: 'alice@prisma.io', + posts: { + create: { title: 'Hello World' }, + }, + profile: { + create: { bio: 'I like turtles' }, + }, + }, + }) + + const allUsers = await prisma.user.findMany({ + include: { + posts: true, + profile: true, + }, + }) + console.dir(allUsers, { depth: null }) +} +``` + +This code creates a new `User` record together with new `Post` and `Profile` records using a [nested write](/orm/prisma-client/queries/relation-queries#nested-writes) query. The `User` record is connected to the two other ones via the `Post.author` ↔ `User.posts` and `Profile.user` ↔ `User.profile` [relation fields](/orm/prisma-schema/data-model/relations#relation-fields) respectively. + +Notice that you're passing the [`include`](/orm/prisma-client/queries/select-fields#include-relations-and-select-relation-fields) option to `findMany` which tells Prisma Client to include the `posts` and `profile` relations on the returned `User` objects. + +Run the code with your current TypeScript setup. If you're using `ts-node`, you can run it like this: + +```terminal copy +npx ts-node index.ts +``` + +Before moving on to the next section, you'll "publish" the `Post` record you just created using an `update` query. Adjust the `main` function as follows: + +```ts file=index.ts showLineNumbers +async function main() { + const post = await prisma.post.update({ + where: { id: 1 }, + data: { published: true }, + }) + console.log(post) +} +``` + +Run the code with your current TypeScript setup. If you're using `ts-node`, you can run it like this: + +```terminal copy +npx ts-node index.ts +``` diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/250-querying-the-database-typescript-sqlserver.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/250-querying-the-database-typescript-sqlserver.mdx new file mode 100644 index 0000000000..684ed5341e --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/250-querying-the-database-typescript-sqlserver.mdx @@ -0,0 +1,136 @@ +--- +title: 'Querying the database' +metaTitle: 'Query your existing SQL Server database with TypeScript and Prisma ORM' +metaDescription: 'Write data to and query the SQL Server database with your TypeScript and Prisma ORM project' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/evolve-your-schema-typescript-sqlserver +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/querying-the-database- +--- + + +## Write your first query with Prisma Client + +Now that you have generated Prisma Client, you can start writing queries to read and write data in your database. + +If you're building a REST API, you can use Prisma Client in your route handlers to read and write data in the database based on incoming HTTP requests. If you're building a GraphQL API, you can use Prisma Client in your resolvers to read and write data in the database based on incoming queries and mutations. + +For the purpose of this guide however, you'll just create a plain Node.js script to learn how to send queries to your database using Prisma Client. Once you have an understanding of how the API works, you can start integrating it into your actual application code (e.g. REST route handlers or GraphQL resolvers). + +Create a new file named `index.ts` and add the following code to it: + +```ts file=index.ts showLineNumbers +import { PrismaClient } from '@prisma/client' + +const prisma = new PrismaClient() + +async function main() { + // ... you will write your Prisma Client queries here +} + +main() + .then(async () => { + await prisma.$disconnect() + }) + .catch(async (e) => { + console.error(e) + await prisma.$disconnect() + process.exit(1) + }) +``` + +Here's a quick overview of the different parts of the code snippet: + +1. Import the `PrismaClient` constructor from the `@prisma/client` node module +1. Instantiate `PrismaClient` +1. Define an `async` function named `main` to send queries to the database +1. Call the `main` function +1. Close the database connections when the script terminates + +Depending on what your models look like, the Prisma Client API will look different as well. For example, if you have a `User` model, your `PrismaClient` instance exposes a property called `user` on which you can call [CRUD](/orm/prisma-client/queries/crud) methods like `findMany`, `create` or `update`. The property is named after the model, but the first letter is lowercased (so for the `Post` model it's called `post`, for `Profile` it's called `profile`). + +The following examples are all based on the models in the Prisma schema. + +Inside the `main` function, add the following query to read all `User` records from the database and print the result: + +```ts file=index.ts showLineNumbers +async function main() { + const allUsers = await prisma.user.findMany() + console.log(allUsers) +} +``` + +Now run the code with your current TypeScript setup. If you're using `ts-node`, you can run it like this: + +```terminal copy +npx ts-node index.ts +``` + +If you created a database using the schema from the database introspection step, the query should print an empty array because there are no `User` records in the database yet. + +```no-copy +[] +``` + +If you introspected an existing database with records, the query should return an array of JavaScript objects. + +## Write data into the database + +The `findMany` query you used in the previous section only _reads_ data from the database. In this section, you'll learn how to write a query to _write_ new records into the `Post` and `User` tables. + +Adjust the `main` function to send a `create` query to the database: + +```ts file=index.ts showLineNumbers +async function main() { + await prisma.user.create({ + data: { + name: 'Alice', + email: 'alice@prisma.io', + posts: { + create: { title: 'Hello World' }, + }, + profile: { + create: { bio: 'I like turtles' }, + }, + }, + }) + + const allUsers = await prisma.user.findMany({ + include: { + posts: true, + profile: true, + }, + }) + console.dir(allUsers, { depth: null }) +} +``` + +This code creates a new `User` record together with new `Post` and `Profile` records using a [nested write](/orm/prisma-client/queries/relation-queries#nested-writes) query. The `User` record is connected to the two other ones via the `Post.author` ↔ `User.posts` and `Profile.user` ↔ `User.profile` [relation fields](/orm/prisma-schema/data-model/relations#relation-fields) respectively. + +Notice that you're passing the [`include`](/orm/prisma-client/queries/select-fields#include-relations-and-select-relation-fields) option to `findMany` which tells Prisma Client to include the `posts` and `profile` relations on the returned `User` objects. + +Run the code with your current TypeScript setup. If you're using `ts-node`, you can run it like this: + +```terminal copy +npx ts-node index.ts +``` + +Before moving on to the next section, you'll "publish" the `Post` record you just created using an `update` query. Adjust the `main` function as follows: + +```ts file=index.ts showLineNumbers +async function main() { + const post = await prisma.post.update({ + where: { id: 1 }, + data: { published: true }, + }) + console.log(post) +} +``` + +Run the code with your current TypeScript setup. If you're using `ts-node`, you can run it like this: + +```terminal copy +npx ts-node index.ts +``` diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/250-querying-the-database.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/250-querying-the-database.mdx deleted file mode 100644 index 96c378cdef..0000000000 --- a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/250-querying-the-database.mdx +++ /dev/null @@ -1,641 +0,0 @@ ---- -title: 'Querying the database' -metaTitle: 'Querying the database' -metaDescription: 'Write data to and query the database' -langSwitcher: ['typescript', 'node'] -dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] -toc: false ---- - -## Write your first query with Prisma Client - -Now that you have generated Prisma Client, you can start writing queries to read and write data in your database. - -If you're building a REST API, you can use Prisma Client in your route handlers to read and write data in the database based on incoming HTTP requests. If you're building a GraphQL API, you can use Prisma Client in your resolvers to read and write data in the database based on incoming queries and mutations. - -For the purpose of this guide however, you'll just create a plain Node.js script to learn how to send queries to your database using Prisma Client. Once you have an understanding of how the API works, you can start integrating it into your actual application code (e.g. REST route handlers or GraphQL resolvers). - - - -Create a new file named `index.ts` and add the following code to it: - -```ts file=index.ts -import { PrismaClient } from '@prisma/client' - -const prisma = new PrismaClient() - -async function main() { - // ... you will write your Prisma Client queries here -} - -main() - .then(async () => { - await prisma.$disconnect() - }) - .catch(async (e) => { - console.error(e) - await prisma.$disconnect() - process.exit(1) - }) -``` - - - - - -Create a new file named `index.js` and add the following code to it: - -```js file=index.js -const { PrismaClient } = require('@prisma/client') - -const prisma = new PrismaClient() - -async function main() { - // ... you will write your Prisma Client queries here -} - -main() - .then(async () => { - await prisma.$disconnect() - }) - .catch(async (e) => { - console.error(e) - await prisma.$disconnect() - process.exit(1) - }) -``` - - - -Here's a quick overview of the different parts of the code snippet: - -1. Import the `PrismaClient` constructor from the `@prisma/client` node module -1. Instantiate `PrismaClient` -1. Define an `async` function named `main` to send queries to the database -1. Call the `main` function -1. Close the database connections when the script terminates - -Depending on what your models look like, the Prisma Client API will look different as well. For example, if you have a `User` model, your `PrismaClient` instance exposes a property called `user` on which you can call [CRUD](/orm/prisma-client/queries/crud) methods like `findMany`, `create` or `update`. The property is named after the model, but the first letter is lowercased (so for the `Post` model it's called `post`, for `Profile` it's called `profile`). - -The following examples are all based on the models in the Prisma schema. - -Inside the `main` function, add the following query to read all `User` records from the database and print the result: - - - -```ts file=index.ts -async function main() { - const allUsers = await prisma.user.findMany() - console.log(allUsers) -} -``` - - - - - -```js file=index.js -async function main() { - const allUsers = await prisma.user.findMany() - console.log(allUsers) -} -``` - - - - - -Now run the code with your current TypeScript setup. If you're using `ts-node`, you can run it like this: - -```terminal copy -npx ts-node index.ts -``` - - - - - -Now run the code with this command: - -```terminal copy -node index.js -``` - - - -If you created a database using the schema from the database introspection step, the query should print an empty array because there are no `User` records in the database yet. - -```no-copy -[] -``` - -If you introspected an existing database with records, the query should return an array of JavaScript objects. - -## Write data into the database - -The `findMany` query you used in the previous section only _reads_ data from the database. In this section, you'll learn how to write a query to _write_ new records into the `Post` and `User` tables. - -Adjust the `main` function to send a `create` query to the database: - - - -```ts file=index.ts -async function main() { - await prisma.user.create({ - data: { - name: 'Alice', - email: 'alice@prisma.io', - posts: { - create: { title: 'Hello World' }, - }, - profile: { - create: { bio: 'I like turtles' }, - }, - }, - }) - - const allUsers = await prisma.user.findMany({ - include: { - posts: true, - profile: true, - }, - }) - console.dir(allUsers, { depth: null }) -} -``` - - - - - -```js file=index.js -async function main() { - await prisma.user.create({ - data: { - name: 'Alice', - email: 'alice@prisma.io', - posts: { - create: { title: 'Hello World' }, - }, - profile: { - create: { bio: 'I like turtles' }, - }, - }, - }) - - const allUsers = await prisma.user.findMany({ - include: { - posts: true, - profile: true, - }, - }) - console.dir(allUsers, { depth: null }) -} -``` - - - -This code creates a new `User` record together with new `Post` and `Profile` records using a [nested write](/orm/prisma-client/queries/relation-queries#nested-writes) query. The `User` record is connected to the two other ones via the `Post.author` ↔ `User.posts` and `Profile.user` ↔ `User.profile` [relation fields](/orm/prisma-schema/data-model/relations#relation-fields) respectively. - -Notice that you're passing the [`include`](/orm/prisma-client/queries/select-fields#include-relations-and-select-relation-fields) option to `findMany` which tells Prisma Client to include the `posts` and `profile` relations on the returned `User` objects. - - - -Run the code with your current TypeScript setup. If you're using `ts-node`, you can run it like this: - -```terminal copy -npx ts-node index.ts -``` - - - - - -Run the code with this command: - -```terminal copy -node index.js -``` - - - -Before moving on to the next section, you'll "publish" the `Post` record you just created using an `update` query. Adjust the `main` function as follows: - - - -```ts file=index.ts -async function main() { - const post = await prisma.post.update({ - where: { id: 1 }, - data: { published: true }, - }) - console.log(post) -} -``` - - - - - -```js file=index.js -async function main() { - const post = await prisma.post.update({ - where: { id: 1 }, - data: { published: true }, - }) - console.log(post) -} -``` - - - - - -```ts file=index.ts -async function main() { - const post = await prisma.post.update({ - where: { id: 1 }, - data: { published: true }, - }) - console.log(post) -} -``` - - - - - -```js file=index.js -async function main() { - const post = await prisma.post.update({ - where: { id: 1 }, - data: { published: true }, - }) - console.log(post) -} -``` - - - - - -```ts file=index.ts -async function main() { - const post = await prisma.post.update({ - where: { id: 1 }, - data: { published: true }, - }) - console.log(post) -} -``` - - - - - -```js file=index.js -async function main() { - const post = await prisma.post.update({ - where: { id: 1 }, - data: { published: true }, - }) - console.log(post) -} -``` - - - - - -```ts file=index.ts -async function main() { - const post = await prisma.post.update({ - where: { id: 1 }, - data: { published: true }, - }) - console.log(post) -} -``` - - - - - -```js file=index.js -async function main() { - const post = await prisma.post.update({ - where: { id: 1 }, - data: { published: true }, - }) - console.log(post) -} -``` - - - - - -```ts file=index.ts -async function main() { - const post = await prisma.post.update({ - where: { title: 'Hello World' }, - data: { published: true }, - }) - console.log(post) -} -``` - - - - - -```js file=index.js -async function main() { - const post = await prisma.post.update({ - where: { title: 'Hello World' }, - data: { published: true }, - }) - console.log(post) -} -``` - - - - - -Run the code with your current TypeScript setup. If you're using `ts-node`, you can run it like this: - -```terminal copy -npx ts-node index.ts -``` - - - - - -Now run the code using the same command as before: - -```terminal copy -node index.js -``` - - - - - - - - - Install Prisma Client - - - - Evolve your schema - - - - - - - - - - - - Install Prisma Client - - - - Evolve your schema - - - - - - - - - - - - Install Prisma Client - - - Next Steps - - - - - - - - - - - - Install Prisma Client - - - - Evolve your schema - - - - - - - - - - - - Install Prisma Client - - - - Evolve your schema - - - - - - - - - - - - Install Prisma Client - - - - Evolve your schema - - - - - - - - - - - - Install Prisma Client - - - - Evolve your schema - - - - - - - - - - - - Install Prisma Client - - - - Next Steps - - - - - - - - - - - - Install Prisma Client - - - - Evolve your schema - - - - - - - - - - - - Install Prisma Client - - - - Evolve your schema - - - - - diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/275-evolve-your-schema-node-cockroachdb.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/275-evolve-your-schema-node-cockroachdb.mdx new file mode 100644 index 0000000000..2b1801391e --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/275-evolve-your-schema-node-cockroachdb.mdx @@ -0,0 +1,104 @@ +--- +title: 'Evolve your schema' +metaTitle: 'Evolve your Prisma schema with Prisma Migrate : JavaScript-CockroachDB' +metaDescription: 'Evolve your Prisma schema with Prisma Migrate inside of your JavaScript and CockroachDB project' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/next-steps +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/evolve-your-schema- +--- + +## Add a `Tag` model to your schema + +In this section, you will evolve your Prisma schema and then generate and apply the migration to your database with [`prisma migrate dev`](/orm/reference/prisma-cli-reference#migrate-dev). + +For the purpose of this guide, we'll make the following changes to the Prisma schema: + +1. Create a new model called `Tag` with the following fields: + - `id`: an auto-incrementing integer that will be the primary key for the model + - `name`: a non-null `String` + - `posts`: an implicit many-to-many relation field that links to the `Post` model +2. Update the `Post` model with a `tags` field with an implicit many-to-many relation field that links to the `Tag` model + +Once you've made the changes to your schema, your schema should resemble the one below: + +```prisma file=prisma/schema.prisma highlight=9,27-31;edit showLineNumbers +model Post { + id Int @id @default(autoincrement()) + title String @db.VarChar(255) + createdAt DateTime @default(now()) @db.Timestamp(6) + content String? + published Boolean @default(false) + authorId Int + user User @relation(fields: [authorId], references: [id]) + //edit-next-line + tags Tag[] +} + +model Profile { + id Int @id @default(autoincrement()) + bio String? + userId Int @unique + user User @relation(fields: [userId], references: [id]) +} + +model User { + id Int @id @default(autoincrement()) + name String? @db.VarChar(255) + email String @unique @db.VarChar(255) + post Post[] + profile Profile? +} + +//edit-start +model Tag { + id Int @id @default(autoincrement()) + name String + posts Post[] +} +//edit-end +``` + +To apply your Prisma schema changes to your database, use the `prisma migrate dev` CLI command: + +```terminal copy +npx prisma migrate dev --name tags-model +``` + +This command will: + +1. Create a new SQL migration file for the migration +1. Apply the generated SQL migration to the database +1. Regenerate Prisma Client + +The following migration will be generated and saved in your `prisma/migrations` folder: + +```sql file=prisma/migrations/TIMESTAMP_tags_model.sql showLineNumbers + -- CreateTable +CREATE TABLE "Tag" ( + "id" SERIAL NOT NULL, + "name" VARCHAR(255) NOT NULL, + + CONSTRAINT "Tag_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "_PostToTag" ( + "A" INTEGER NOT NULL, + "B" INTEGER NOT NULL +); + +-- CreateIndex +CREATE UNIQUE INDEX "_PostToTag_AB_unique" ON "_PostToTag"("A", "B"); + +-- CreateIndex +CREATE INDEX "_PostToTag_B_index" ON "_PostToTag"("B"); + +-- AddForeignKey +ALTER TABLE "_PostToTag" ADD CONSTRAINT "_PostToTag_A_fkey" FOREIGN KEY ("A") REFERENCES "Post"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "_PostToTag" ADD CONSTRAINT "_PostToTag_B_fkey" FOREIGN KEY ("B") REFERENCES "Tag"("id") ON DELETE CASCADE ON UPDATE CASCADE; +``` diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/275-evolve-your-schema-node-mysql.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/275-evolve-your-schema-node-mysql.mdx new file mode 100644 index 0000000000..28cddfb280 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/275-evolve-your-schema-node-mysql.mdx @@ -0,0 +1,106 @@ +--- +title: 'Evolve your schema' +metaTitle: 'Evolve your Prisma schema with Prisma Migrate : JavaScript-MySQL' +metaDescription: 'Evolve your Prisma schema with Prisma Migrate inside of your JavaScript and MySQL project' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/next-steps +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/evolve-your-schema- +--- + +## Add a `Tag` model to your schema + +In this section, you will evolve your Prisma schema and then generate and apply the migration to your database with [`prisma migrate dev`](/orm/reference/prisma-cli-reference#migrate-dev). + +For the purpose of this guide, we'll make the following changes to the Prisma schema: + +1. Create a new model called `Tag` with the following fields: + - `id`: an auto-incrementing integer that will be the primary key for the model + - `name`: a non-null `String` + - `posts`: an implicit many-to-many relation field that links to the `Post` model +2. Update the `Post` model with a `tags` field with an implicit many-to-many relation field that links to the `Tag` model + +Once you've made the changes to your schema, your schema should resemble the one below: + +```prisma file=prisma/schema.prisma highlight=9,27-31;edit showLineNumbers +model Post { + id Int @id @default(autoincrement()) + title String @db.VarChar(255) + createdAt DateTime @default(now()) @db.Timestamp(6) + content String? + published Boolean @default(false) + authorId Int + user User @relation(fields: [authorId], references: [id]) + //edit-next-line + tags Tag[] +} + +model Profile { + id Int @id @default(autoincrement()) + bio String? + userId Int @unique + user User @relation(fields: [userId], references: [id]) +} + +model User { + id Int @id @default(autoincrement()) + name String? @db.VarChar(255) + email String @unique @db.VarChar(255) + post Post[] + profile Profile? +} + +//edit-start +model Tag { + id Int @id @default(autoincrement()) + name String + posts Post[] +} +//edit-end +``` + +To apply your Prisma schema changes to your database, use the `prisma migrate dev` CLI command: + +```terminal copy +npx prisma migrate dev --name tags-model +``` + +This command will: + +1. Create a new SQL migration file for the migration +1. Apply the generated SQL migration to the database +1. Regenerate Prisma Client + +The following migration will be generated and saved in your `prisma/migrations` folder: + +```sql file=prisma/migrations/TIMESTAMP_tags_model.sql showLineNumbers +-- CreateTable +CREATE TABLE Tag ( + id SERIAL NOT NULL, + name VARCHAR(255) NOT NULL, + + CONSTRAINT Tag_pkey PRIMARY KEY (id) +); + +-- CreateTable +CREATE TABLE _PostToTag ( + A INTEGER NOT NULL, + B INTEGER NOT NULL +); + +-- CreateIndex +CREATE UNIQUE INDEX _PostToTag_AB_unique ON _PostToTag(A, B); + +-- CreateIndex +CREATE INDEX _PostToTag_B_index ON _PostToTag(B); + +-- AddForeignKey +ALTER TABLE _PostToTag ADD CONSTRAINT _PostToTag_A_fkey FOREIGN KEY (A) REFERENCES Post(id) ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE _PostToTag ADD CONSTRAINT _PostToTag_B_fkey FOREIGN KEY (B) REFERENCES Tag(id) ON DELETE CASCADE ON UPDATE CASCADE; +``` + +Congratulations, you just evolved your database with Prisma Migrate 🚀 diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/275-evolve-your-schema-node-postgresql.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/275-evolve-your-schema-node-postgresql.mdx new file mode 100644 index 0000000000..c5b3ace825 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/275-evolve-your-schema-node-postgresql.mdx @@ -0,0 +1,105 @@ +--- +title: 'Evolve your schema' +metaTitle: 'Evolve your Prisma schema with Prisma Migrate : JavaScript-PostgreSQL' +metaDescription: 'Evolve your Prisma schema with Prisma Migrate inside of your JavaScript and PostgreSQL project' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/next-steps +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/evolve-your-schema- +--- + +## Add a `Tag` model to your schema + +In this section, you will evolve your Prisma schema and then generate and apply the migration to your database with [`prisma migrate dev`](/orm/reference/prisma-cli-reference#migrate-dev). + +For the purpose of this guide, we'll make the following changes to the Prisma schema: + +1. Create a new model called `Tag` with the following fields: + - `id`: an auto-incrementing integer that will be the primary key for the model + - `name`: a non-null `String` + - `posts`: an implicit many-to-many relation field that links to the `Post` model +2. Update the `Post` model with a `tags` field with an implicit many-to-many relation field that links to the `Tag` model + +Once you've made the changes to your schema, your schema should resemble the one below: + +```prisma file=prisma/schema.prisma highlight=9,27-31;edit showLineNumbers +model Post { + id Int @id @default(autoincrement()) + title String @db.VarChar(255) + createdAt DateTime @default(now()) @db.Timestamp(6) + content String? + published Boolean @default(false) + authorId Int + user User @relation(fields: [authorId], references: [id]) + //edit-next-line + tags Tag[] +} + +model Profile { + id Int @id @default(autoincrement()) + bio String? + userId Int @unique + user User @relation(fields: [userId], references: [id]) +} + +model User { + id Int @id @default(autoincrement()) + name String? @db.VarChar(255) + email String @unique @db.VarChar(255) + post Post[] + profile Profile? +} +//edit-start +model Tag { + id Int @id @default(autoincrement()) + name String + posts Post[] +} +//edit-end +``` + +To apply your Prisma schema changes to your database, use the `prisma migrate dev` CLI command: + +```terminal copy +npx prisma migrate dev --name tags-model +``` + +This command will: + +1. Create a new SQL migration file for the migration +1. Apply the generated SQL migration to the database +1. Regenerate Prisma Client + +The following migration will be generated and saved in your `prisma/migrations` folder: + +```sql file=prisma/migrations/TIMESTAMP_tags_model.sql showLineNumbers + -- CreateTable +CREATE TABLE "Tag" ( + "id" SERIAL NOT NULL, + "name" VARCHAR(255) NOT NULL, + + CONSTRAINT "Tag_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "_PostToTag" ( + "A" INTEGER NOT NULL, + "B" INTEGER NOT NULL +); + +-- CreateIndex +CREATE UNIQUE INDEX "_PostToTag_AB_unique" ON "_PostToTag"("A", "B"); + +-- CreateIndex +CREATE INDEX "_PostToTag_B_index" ON "_PostToTag"("B"); + +-- AddForeignKey +ALTER TABLE "_PostToTag" ADD CONSTRAINT "_PostToTag_A_fkey" FOREIGN KEY ("A") REFERENCES "Post"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "_PostToTag" ADD CONSTRAINT "_PostToTag_B_fkey" FOREIGN KEY ("B") REFERENCES "Tag"("id") ON DELETE CASCADE ON UPDATE CASCADE; +``` + +Congratulations, you just evolved your database with Prisma Migrate 🚀 diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/275-evolve-your-schema-node-sqlserver.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/275-evolve-your-schema-node-sqlserver.mdx new file mode 100644 index 0000000000..6a4e26fdd8 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/275-evolve-your-schema-node-sqlserver.mdx @@ -0,0 +1,106 @@ +--- +title: 'Evolve your schema' +metaTitle: 'Evolve your Prisma schema with Prisma Migrate : JavaScript-sqlserver' +metaDescription: 'Evolve your Prisma schema with Prisma Migrate inside of your JavaScript and SQL Server project' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/next-steps +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/evolve-your-schema- +--- + +## Add a `Tag` model to your schema + +In this section, you will evolve your Prisma schema and then generate and apply the migration to your database with [`prisma migrate dev`](/orm/reference/prisma-cli-reference#migrate-dev). + +For the purpose of this guide, we'll make the following changes to the Prisma schema: + +1. Create a new model called `Tag` with the following fields: + - `id`: an auto-incrementing integer that will be the primary key for the model + - `name`: a non-null `String` + - `posts`: an implicit many-to-many relation field that links to the `Post` model +2. Update the `Post` model with a `tags` field with an implicit many-to-many relation field that links to the `Tag` model + +Once you've made the changes to your schema, your schema should resemble the one below: + +```prisma file=prisma/schema.prisma highlight=9,27-31;edit showLineNumbers +model Post { + id Int @id @default(autoincrement()) + title String @db.VarChar(255) + createdAt DateTime @default(now()) @db.Timestamp(6) + content String? + published Boolean @default(false) + authorId Int + user User @relation(fields: [authorId], references: [id]) + //edit-next-line + tags Tag[] +} + +model Profile { + id Int @id @default(autoincrement()) + bio String? + userId Int @unique + user User @relation(fields: [userId], references: [id]) +} + +model User { + id Int @id @default(autoincrement()) + name String? @db.VarChar(255) + email String @unique @db.VarChar(255) + post Post[] + profile Profile? +} + +//edit-start +model Tag { + id Int @id @default(autoincrement()) + name String + posts Post[] +} +//edit-end +``` + +To apply your Prisma schema changes to your database, use the `prisma migrate dev` CLI command: + +```terminal copy +npx prisma migrate dev --name tags-model +``` + +This command will: + +1. Create a new SQL migration file for the migration +1. Apply the generated SQL migration to the database +1. Regenerate Prisma Client + +The following migration will be generated and saved in your `prisma/migrations` folder: + +```sql file=prisma/migrations/TIMESTAMP_tags_model.sql showLineNumbers + -- CreateTable +CREATE TABLE [dbo].[Tag] ( + [id] SERIAL NOT NULL, + [name] VARCHAR(255) NOT NULL, + + CONSTRAINT [Tag_pkey] PRIMARY KEY ([id]) +); + +-- CreateTable +CREATE TABLE [dbo].[_PostToTag] ( + [A] INTEGER NOT NULL, + [B] INTEGER NOT NULL +); + +-- CreateIndex +CREATE UNIQUE INDEX [_PostToTag_AB_unique] ON _PostToTag([A], [B]); + +-- CreateIndex +CREATE INDEX [_PostToTag_B_index] ON [_PostToTag]([B]); + +-- AddForeignKey +ALTER TABLE [dbo].[_PostToTag] ADD CONSTRAINT [_PostToTag_A_fkey] FOREIGN KEY ([A]) REFERENCES [dbo].[Post]([id]) ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE [dbo].[_PostToTag] ADD CONSTRAINT [_PostToTag_B_fkey] FOREIGN KEY ([B]) REFERENCES [dbo].[Tag]([id]) ON DELETE CASCADE ON UPDATE CASCADE; +``` + +Congratulations diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/275-evolve-your-schema-typescript-cockroachdb.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/275-evolve-your-schema-typescript-cockroachdb.mdx new file mode 100644 index 0000000000..046ce50805 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/275-evolve-your-schema-typescript-cockroachdb.mdx @@ -0,0 +1,107 @@ +--- +title: 'Evolve your schema' +metaTitle: 'Evolve your Prisma schema with Prisma Migrate : TypeScript-cockroachdb' +metaDescription: 'Evolve your Prisma schema with Prisma Migrate inside of your TypeScript and CockroachDB project' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/next-steps +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/evolve-your-schema- +--- + +## Add a `Tag` model to your schema + +In this section, you will evolve your Prisma schema and then generate and apply the migration to your database with [`prisma migrate dev`](/orm/reference/prisma-cli-reference#migrate-dev). + +For the purpose of this guide, we'll make the following changes to the Prisma schema: + +1. Create a new model called `Tag` with the following fields: + - `id`: an auto-incrementing integer that will be the primary key for the model + - `name`: a non-null `String` + - `posts`: an implicit many-to-many relation field that links to the `Post` model +2. Update the `Post` model with a `tags` field with an implicit many-to-many relation field that links to the `Tag` model + +Once you've made the changes to your schema, your schema should resemble the one below: + +```prisma file=prisma/schema.prisma highlight=9,27-31;edit showLineNumbers +model Post { + id Int @id @default(autoincrement()) + title String @db.VarChar(255) + createdAt DateTime @default(now()) @db.Timestamp(6) + content String? + published Boolean @default(false) + authorId Int + user User @relation(fields: [authorId], references: [id]) + //edit-next-line + tags Tag[] +} + +model Profile { + id Int @id @default(autoincrement()) + bio String? + userId Int @unique + user User @relation(fields: [userId], references: [id]) +} + +model User { + id Int @id @default(autoincrement()) + name String? @db.VarChar(255) + email String @unique @db.VarChar(255) + post Post[] + profile Profile? +} + +//edit-start +model Tag { + id Int @id @default(autoincrement()) + name String + posts Post[] +} +//edit-end +``` + +To apply your Prisma schema changes to your database, use the `prisma migrate dev` CLI command: + +```terminal copy +npx prisma migrate dev --name tags-model +``` + +This command will: + +1. Create a new SQL migration file for the migration +1. Apply the generated SQL migration to the database +1. Regenerate Prisma Client + +The following migration will be generated and saved in your `prisma/migrations` folder: + +```sql file=prisma/migrations/TIMESTAMP_tags_model.sql showLineNumbers + -- CreateTable +CREATE TABLE "Tag" ( + "id" SERIAL NOT NULL, + "name" VARCHAR(255) NOT NULL, + + CONSTRAINT "Tag_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "_PostToTag" ( + "A" INTEGER NOT NULL, + "B" INTEGER NOT NULL +); + +-- CreateIndex +CREATE UNIQUE INDEX "_PostToTag_AB_unique" ON "_PostToTag"("A", "B"); + +-- CreateIndex +CREATE INDEX "_PostToTag_B_index" ON "_PostToTag"("B"); + +-- AddForeignKey +ALTER TABLE "_PostToTag" ADD CONSTRAINT "_PostToTag_A_fkey" FOREIGN KEY ("A") REFERENCES "Post"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "_PostToTag" ADD CONSTRAINT "_PostToTag_B_fkey" FOREIGN KEY ("B") REFERENCES "Tag"("id") ON DELETE CASCADE ON UPDATE CASCADE; +``` + +Congratulations, you just evolved your database with Prisma Migrate 🚀 + diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/275-evolve-your-schema-typescript-mysql.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/275-evolve-your-schema-typescript-mysql.mdx new file mode 100644 index 0000000000..3cbbca3e09 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/275-evolve-your-schema-typescript-mysql.mdx @@ -0,0 +1,106 @@ +--- +title: 'Evolve your schema' +metaTitle: 'Evolve your Prisma schema with Prisma Migrate : TypeScript-mysql' +metaDescription: 'Evolve your Prisma schema with Prisma Migrate inside of your TypeScript and MySQL project' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/next-steps +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/evolve-your-schema- +--- + +## Add a `Tag` model to your schema + +In this section, you will evolve your Prisma schema and then generate and apply the migration to your database with [`prisma migrate dev`](/orm/reference/prisma-cli-reference#migrate-dev). + +For the purpose of this guide, we'll make the following changes to the Prisma schema: + +1. Create a new model called `Tag` with the following fields: + - `id`: an auto-incrementing integer that will be the primary key for the model + - `name`: a non-null `String` + - `posts`: an implicit many-to-many relation field that links to the `Post` model +2. Update the `Post` model with a `tags` field with an implicit many-to-many relation field that links to the `Tag` model + +Once you've made the changes to your schema, your schema should resemble the one below: + +```prisma file=prisma/schema.prisma highlight=9,27-31;edit showLineNumbers +model Post { + id Int @id @default(autoincrement()) + title String @db.VarChar(255) + createdAt DateTime @default(now()) @db.Timestamp(6) + content String? + published Boolean @default(false) + authorId Int + user User @relation(fields: [authorId], references: [id]) + //edit-next-line + tags Tag[] +} + +model Profile { + id Int @id @default(autoincrement()) + bio String? + userId Int @unique + user User @relation(fields: [userId], references: [id]) +} + +model User { + id Int @id @default(autoincrement()) + name String? @db.VarChar(255) + email String @unique @db.VarChar(255) + post Post[] + profile Profile? +} + +//edit-start +model Tag { + id Int @id @default(autoincrement()) + name String + posts Post[] +} +//edit-end +``` + +To apply your Prisma schema changes to your database, use the `prisma migrate dev` CLI command: + +```terminal copy +npx prisma migrate dev --name tags-model +``` + +This command will: + +1. Create a new SQL migration file for the migration +1. Apply the generated SQL migration to the database +1. Regenerate Prisma Client + +The following migration will be generated and saved in your `prisma/migrations` folder: + +```sql file=prisma/migrations/TIMESTAMP_tags_model.sql showLineNumbers +-- CreateTable +CREATE TABLE Tag ( + id SERIAL NOT NULL, + name VARCHAR(255) NOT NULL, + + CONSTRAINT Tag_pkey PRIMARY KEY (id) +); + +-- CreateTable +CREATE TABLE _PostToTag ( + A INTEGER NOT NULL, + B INTEGER NOT NULL +); + +-- CreateIndex +CREATE UNIQUE INDEX _PostToTag_AB_unique ON _PostToTag(A, B); + +-- CreateIndex +CREATE INDEX _PostToTag_B_index ON _PostToTag(B); + +-- AddForeignKey +ALTER TABLE _PostToTag ADD CONSTRAINT _PostToTag_A_fkey FOREIGN KEY (A) REFERENCES Post(id) ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE _PostToTag ADD CONSTRAINT _PostToTag_B_fkey FOREIGN KEY (B) REFERENCES Tag(id) ON DELETE CASCADE ON UPDATE CASCADE; +``` + +Congratulations, you just evolved your database with Prisma Migrate 🚀 diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/275-evolve-your-schema-typescript-postgresql.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/275-evolve-your-schema-typescript-postgresql.mdx new file mode 100644 index 0000000000..092e2d7ed3 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/275-evolve-your-schema-typescript-postgresql.mdx @@ -0,0 +1,107 @@ +--- +title: 'Evolve your schema' +metaTitle: 'Evolve your Prisma schema with Prisma Migrate : TypeScript-postgresql' +metaDescription: 'Evolve your Prisma schema with Prisma Migrate inside of your TypeScript and PostgreSQL project' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'cockroachdb'] +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/next-steps +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/evolve-your-schema- +--- + +## Add a `Tag` model to your schema + +In this section, you will evolve your Prisma schema and then generate and apply the migration to your database with [`prisma migrate dev`](/orm/reference/prisma-cli-reference#migrate-dev). + +For the purpose of this guide, we'll make the following changes to the Prisma schema: + +1. Create a new model called `Tag` with the following fields: + - `id`: an auto-incrementing integer that will be the primary key for the model + - `name`: a non-null `String` + - `posts`: an implicit many-to-many relation field that links to the `Post` model +2. Update the `Post` model with a `tags` field with an implicit many-to-many relation field that links to the `Tag` model + +Once you've made the changes to your schema, your schema should resemble the one below: + +```prisma file=prisma/schema.prisma highlight=9,27-31;edit showLineNumbers +model Post { + id Int @id @default(autoincrement()) + title String @db.VarChar(255) + createdAt DateTime @default(now()) @db.Timestamp(6) + content String? + published Boolean @default(false) + authorId Int + user User @relation(fields: [authorId], references: [id]) + //edit-next-line + tags Tag[] +} + +model Profile { + id Int @id @default(autoincrement()) + bio String? + userId Int @unique + user User @relation(fields: [userId], references: [id]) +} + +model User { + id Int @id @default(autoincrement()) + name String? @db.VarChar(255) + email String @unique @db.VarChar(255) + post Post[] + profile Profile? +} + +//edit-start +model Tag { + id Int @id @default(autoincrement()) + name String + posts Post[] +} +//edit-end +``` + +To apply your Prisma schema changes to your database, use the `prisma migrate dev` CLI command: + +```terminal copy +npx prisma migrate dev --name tags-model +``` + +This command will: + +1. Create a new SQL migration file for the migration +1. Apply the generated SQL migration to the database +1. Regenerate Prisma Client + +The following migration will be generated and saved in your `prisma/migrations` folder: + +```sql file=prisma/migrations/TIMESTAMP_tags_model.sql showLineNumbers + -- CreateTable +CREATE TABLE "Tag" ( + "id" SERIAL NOT NULL, + "name" VARCHAR(255) NOT NULL, + + CONSTRAINT "Tag_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "_PostToTag" ( + "A" INTEGER NOT NULL, + "B" INTEGER NOT NULL +); + +-- CreateIndex +CREATE UNIQUE INDEX "_PostToTag_AB_unique" ON "_PostToTag"("A", "B"); + +-- CreateIndex +CREATE INDEX "_PostToTag_B_index" ON "_PostToTag"("B"); + +-- AddForeignKey +ALTER TABLE "_PostToTag" ADD CONSTRAINT "_PostToTag_A_fkey" FOREIGN KEY ("A") REFERENCES "Post"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "_PostToTag" ADD CONSTRAINT "_PostToTag_B_fkey" FOREIGN KEY ("B") REFERENCES "Tag"("id") ON DELETE CASCADE ON UPDATE CASCADE; +``` + + + +Congratulations, you just evolved your database with Prisma Migrate 🚀 diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/275-evolve-your-schema-typescript-sqlserver.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/275-evolve-your-schema-typescript-sqlserver.mdx new file mode 100644 index 0000000000..f16481f2b9 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/275-evolve-your-schema-typescript-sqlserver.mdx @@ -0,0 +1,106 @@ +--- +title: 'Evolve your schema' +metaTitle: 'Evolve your Prisma schema with Prisma Migrate : TypeScript-sql-server' +metaDescription: 'Evolve your Prisma schema with Prisma Migrate inside of your TypeScript and SQL Server project' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'cockroachdb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/relational-databases/next-steps +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/relational-databases/evolve-your-schema- +--- + +## Add a `Tag` model to your schema + +In this section, you will evolve your Prisma schema and then generate and apply the migration to your database with [`prisma migrate dev`](/orm/reference/prisma-cli-reference#migrate-dev). + +For the purpose of this guide, we'll make the following changes to the Prisma schema: + +1. Create a new model called `Tag` with the following fields: + - `id`: an auto-incrementing integer that will be the primary key for the model + - `name`: a non-null `String` + - `posts`: an implicit many-to-many relation field that links to the `Post` model +2. Update the `Post` model with a `tags` field with an implicit many-to-many relation field that links to the `Tag` model + +Once you've made the changes to your schema, your schema should resemble the one below: + +```prisma file=prisma/schema.prisma highlight=9,27-31;edit showLineNumbers +model Post { + id Int @id @default(autoincrement()) + title String @db.VarChar(255) + createdAt DateTime @default(now()) @db.Timestamp(6) + content String? + published Boolean @default(false) + authorId Int + user User @relation(fields: [authorId], references: [id]) + //edit-next-line + tags Tag[] +} + +model Profile { + id Int @id @default(autoincrement()) + bio String? + userId Int @unique + user User @relation(fields: [userId], references: [id]) +} + +model User { + id Int @id @default(autoincrement()) + name String? @db.VarChar(255) + email String @unique @db.VarChar(255) + post Post[] + profile Profile? +} + +//edit-start +model Tag { + id Int @id @default(autoincrement()) + name String + posts Post[] +} +//edit-end +``` + +To apply your Prisma schema changes to your database, use the `prisma migrate dev` CLI command: + +```terminal copy +npx prisma migrate dev --name tags-model +``` + +This command will: + +1. Create a new SQL migration file for the migration +1. Apply the generated SQL migration to the database +1. Regenerate Prisma Client + +The following migration will be generated and saved in your `prisma/migrations` folder: + +```sql file=prisma/migrations/TIMESTAMP_tags_model.sql showLineNumbers + -- CreateTable +CREATE TABLE [dbo].[Tag] ( + [id] SERIAL NOT NULL, + [name] VARCHAR(255) NOT NULL, + + CONSTRAINT [Tag_pkey] PRIMARY KEY ([id]) +); + +-- CreateTable +CREATE TABLE [dbo].[_PostToTag] ( + [A] INTEGER NOT NULL, + [B] INTEGER NOT NULL +); + +-- CreateIndex +CREATE UNIQUE INDEX [_PostToTag_AB_unique] ON _PostToTag([A], [B]); + +-- CreateIndex +CREATE INDEX [_PostToTag_B_index] ON [_PostToTag]([B]); + +-- AddForeignKey +ALTER TABLE [dbo].[_PostToTag] ADD CONSTRAINT [_PostToTag_A_fkey] FOREIGN KEY ([A]) REFERENCES [dbo].[Post]([id]) ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE [dbo].[_PostToTag] ADD CONSTRAINT [_PostToTag_B_fkey] FOREIGN KEY ([B]) REFERENCES [dbo].[Tag]([id]) ON DELETE CASCADE ON UPDATE CASCADE; +``` + +Congratulations, you just evolved your database with Prisma Migrate 🚀 diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/275-evolve-your-schema.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/275-evolve-your-schema.mdx deleted file mode 100644 index 79d450cc4e..0000000000 --- a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/275-evolve-your-schema.mdx +++ /dev/null @@ -1,402 +0,0 @@ ---- -title: 'Evolve your schema' -metaTitle: 'Evolve your Prisma schema with Prisma Migrate' -metaDescription: 'Evolve your Prisma schema with Prisma Migrate' -langSwitcher: ['typescript', 'node'] -dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'cockroachdb'] -toc: false ---- - -## Add a `Tag` model to your schema - -In this section, you will evolve your Prisma schema and then generate and apply the migration to your database with [`prisma migrate dev`](/orm/reference/prisma-cli-reference#migrate-dev). - -For the purpose of this guide, we'll make the following changes to the Prisma schema: - -1. Create a new model called `Tag` with the following fields: - - `id`: an auto-incrementing integer that will be the primary key for the model - - `name`: a non-null `String` - - `posts`: an implicit many-to-many relation field that links to the `Post` model -2. Update the `Post` model with a `tags` field with an implicit many-to-many relation field that links to the `Tag` model - -Once you've made the changes to your schema, your schema should resemble the one below: - -```prisma file=prisma/schema.prisma highlight=9,27-31;edit -model Post { - id Int @id @default(autoincrement()) - title String @db.VarChar(255) - createdAt DateTime @default(now()) @db.Timestamp(6) - content String? - published Boolean @default(false) - authorId Int - user User @relation(fields: [authorId], references: [id]) - tags Tag[] -} - -model Profile { - id Int @id @default(autoincrement()) - bio String? - userId Int @unique - user User @relation(fields: [userId], references: [id]) -} - -model User { - id Int @id @default(autoincrement()) - name String? @db.VarChar(255) - email String @unique @db.VarChar(255) - post Post[] - profile Profile? -} - -model Tag { - id Int @id @default(autoincrement()) - name String - posts Post[] -} -``` - -To apply your Prisma schema changes to your database, use the `prisma migrate dev` CLI command: - -```terminal copy -npx prisma migrate dev --name tags-model -``` - -This command will: - -1. Create a new SQL migration file for the migration -1. Apply the generated SQL migration to the database -1. Regenerate Prisma Client - -The following migration will be generated and saved in your `prisma/migrations` folder: - - - -```sql file=prisma/migrations/TIMESTAMP_tags_model.sql - -- CreateTable -CREATE TABLE "Tag" ( - "id" SERIAL NOT NULL, - "name" VARCHAR(255) NOT NULL, - - CONSTRAINT "Tag_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "_PostToTag" ( - "A" INTEGER NOT NULL, - "B" INTEGER NOT NULL -); - --- CreateIndex -CREATE UNIQUE INDEX "_PostToTag_AB_unique" ON "_PostToTag"("A", "B"); - --- CreateIndex -CREATE INDEX "_PostToTag_B_index" ON "_PostToTag"("B"); - --- AddForeignKey -ALTER TABLE "_PostToTag" ADD CONSTRAINT "_PostToTag_A_fkey" FOREIGN KEY ("A") REFERENCES "Post"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "_PostToTag" ADD CONSTRAINT "_PostToTag_B_fkey" FOREIGN KEY ("B") REFERENCES "Tag"("id") ON DELETE CASCADE ON UPDATE CASCADE; -``` - - - - - -```sql file=prisma/migrations/TIMESTAMP_tags_model.sql - -- CreateTable -CREATE TABLE "Tag" ( - "id" SERIAL NOT NULL, - "name" VARCHAR(255) NOT NULL, - - CONSTRAINT "Tag_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "_PostToTag" ( - "A" INTEGER NOT NULL, - "B" INTEGER NOT NULL -); - --- CreateIndex -CREATE UNIQUE INDEX "_PostToTag_AB_unique" ON "_PostToTag"("A", "B"); - --- CreateIndex -CREATE INDEX "_PostToTag_B_index" ON "_PostToTag"("B"); - --- AddForeignKey -ALTER TABLE "_PostToTag" ADD CONSTRAINT "_PostToTag_A_fkey" FOREIGN KEY ("A") REFERENCES "Post"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "_PostToTag" ADD CONSTRAINT "_PostToTag_B_fkey" FOREIGN KEY ("B") REFERENCES "Tag"("id") ON DELETE CASCADE ON UPDATE CASCADE; -``` - - - - - -```sql file=prisma/migrations/TIMESTAMP_tags_model.sql - -- CreateTable -CREATE TABLE [dbo].[Tag] ( - [id] SERIAL NOT NULL, - [name] VARCHAR(255) NOT NULL, - - CONSTRAINT [Tag_pkey] PRIMARY KEY ([id]) -); - --- CreateTable -CREATE TABLE [dbo].[_PostToTag] ( - [A] INTEGER NOT NULL, - [B] INTEGER NOT NULL -); - --- CreateIndex -CREATE UNIQUE INDEX [_PostToTag_AB_unique] ON _PostToTag([A], [B]); - --- CreateIndex -CREATE INDEX [_PostToTag_B_index] ON [_PostToTag]([B]); - --- AddForeignKey -ALTER TABLE [dbo].[_PostToTag] ADD CONSTRAINT [_PostToTag_A_fkey] FOREIGN KEY ([A]) REFERENCES [dbo].[Post]([id]) ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE [dbo].[_PostToTag] ADD CONSTRAINT [_PostToTag_B_fkey] FOREIGN KEY ([B]) REFERENCES [dbo].[Tag]([id]) ON DELETE CASCADE ON UPDATE CASCADE; -``` - - - - - -```sql file=prisma/migrations/TIMESTAMP_tags_model.sql --- CreateTable -CREATE TABLE Tag ( - id SERIAL NOT NULL, - name VARCHAR(255) NOT NULL, - - CONSTRAINT Tag_pkey PRIMARY KEY (id) -); - --- CreateTable -CREATE TABLE _PostToTag ( - A INTEGER NOT NULL, - B INTEGER NOT NULL -); - --- CreateIndex -CREATE UNIQUE INDEX _PostToTag_AB_unique ON _PostToTag(A, B); - --- CreateIndex -CREATE INDEX _PostToTag_B_index ON _PostToTag(B); - --- AddForeignKey -ALTER TABLE _PostToTag ADD CONSTRAINT _PostToTag_A_fkey FOREIGN KEY (A) REFERENCES Post(id) ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE _PostToTag ADD CONSTRAINT _PostToTag_B_fkey FOREIGN KEY (B) REFERENCES Tag(id) ON DELETE CASCADE ON UPDATE CASCADE; -``` - - - -Congratulations, you just evolved your database with Prisma Migrate 🚀 - - - - - - Querying the database - - - - Next steps - - - - - - - - - - - - Querying the database - - - - Next steps - - - - - - - - - - - - Querying the database - - - - Next steps - - - - - - - - - - - - Querying the database - - - - Next steps - - - - - - - - - - - - Querying the database - - - - Next steps - - - - - - - - - - - - Querying the database - - - - Next steps - - - - - - - - - - - - Querying the database - - - - Next steps - - - - - - - - - - - - Querying the database - - - - Next steps - - - - - diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/300-next-steps.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/300-next-steps.mdx index b7648593bc..722c8ca59b 100644 --- a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/300-next-steps.mdx +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/300-next-steps.mdx @@ -1,27 +1,24 @@ --- title: 'Next steps' -metaTitle: 'Next steps' -metaDescription: 'Next steps to take now that you have successfully added Prisma to your project' -langSwitcher: ['typescript', 'node'] -dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] -toc: false +metaTitle: 'Next steps after adding Prisma ORM to your existing project' +metaDescription: 'Next steps to take now that you have successfully added Prisma ORM to your relational database project' +hide_table_of_contents: true --- - -## Next steps - + This section lists a number of potential next steps you can now take from here. Feel free to explore these or read the [Introduction](/orm/overview/introduction/what-is-prisma) page to get a high-level overview of Prisma ORM. ### Continue exploring the Prisma Client API You can send a variety of queries with the Prisma Client API. Check out the [API reference](/orm/prisma-client) and use your existing database setup from this guide to try them out. - +:::tip You can use your editor's auto-completion feature to learn about the different API calls and the arguments it takes. Auto-completion is commonly invoked by hitting CTRL+SPACE on your keyboard. - +::: -
Expand for more Prisma Client API examples +
+Expand for more Prisma Client API examples Here are a few suggestions for a number of more queries you can send with Prisma Client: @@ -85,15 +82,15 @@ To evolve the app, you need to follow the same flow of the tutorial: 1. Optionally re-configure your Prisma Client API 1. Re-generate Prisma Client -![Introspect workflow](../../../images/prisma-evolve-app-workflow.png) +![Introspect workflow](/img/getting-started/prisma-evolve-app-workflow.png) ### Try a Prisma ORM example The [`prisma-examples`](https://github.com/prisma/prisma-examples/) repository contains a number of ready-to-run examples: -, ]}> + - + | Demo | Stack | Description | | :------------------------------------------------------------------------------------------------------------------ | :----------- | --------------------------------------------------------------------------------------------------- | @@ -103,9 +100,9 @@ The [`prisma-examples`](https://github.com/prisma/prisma-examples/) repository c | [`rest-express`](https://github.com/prisma/prisma-examples/tree/latest/typescript/rest-express) | Backend only | Simple REST API with Express.JS | | [`grpc`](https://github.com/prisma/prisma-examples/tree/latest/typescript/grpc) | Backend only | Simple gRPC API | - + - + | Demo | Stack | Description | | :---------------------------------------------------------------------------------------------------------------- | :----------- | :-------------------------------------------------------------------------------------------------- | @@ -114,6 +111,6 @@ The [`prisma-examples`](https://github.com/prisma/prisma-examples/) repository c | [`rest-express`](https://github.com/prisma/prisma-examples/tree/latest/javascript/rest-express) | Backend only | Simple REST API with Express.JS | | [`grpc`](https://github.com/prisma/prisma-examples/tree/latest/javascript/grpc) | Backend only | Simple gRPC API | - + diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/index.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/index.mdx deleted file mode 100644 index 15847b80a3..0000000000 --- a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/index.mdx +++ /dev/null @@ -1,276 +0,0 @@ ---- -title: 'Relational databases' -metaTitle: 'Add Prisma to an existing project that uses a relational database (15 min)' -metaDescription: 'Learn how to add Prisma to an existing Node.js or TypeScript project by connecting it to your relational database and generating a Prisma Client for database access.' -duration: '15 min' -toc: false -langSwitcher: ['typescript', 'node'] -dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] ---- - - - -Learn how to add Prisma ORM to an existing Node.js or TypeScript project by connecting it to your database and generating a Prisma Client for database access. The following tutorial introduces you to the [Prisma CLI](/orm/tools/prisma-cli), [Prisma Client](/orm/prisma-client), and [Prisma Introspection](/orm/prisma-schema/introspection). - - - - - -
- -If you're migrating to Prisma ORM from another ORM, see our [Migrate from TypeORM](/orm/more/migrating-to-prisma/migrate-from-typeorm) or [Migrate from Sequelize](/orm/more/migrating-to-prisma/migrate-from-sequelize) migration guides. - -
-
- -## Prerequisites - -In order to successfully complete this guide, you need: - - - -- an existing Node.js project with a `package.json` -- [Node.js](https://nodejs.org/en/) installed on your machine -- a [PostgreSQL](https://www.postgresql.org/) database server running and a database with at least one table - - - - - -- an existing Node.js project with a `package.json` -- [Node.js](https://nodejs.org/en/) installed on your machine -- a [MySQL](https://www.mysql.com/) database server running and a database with at least one table - - - - - -- an existing Node.js project with a `package.json` -- [Node.js](https://nodejs.org/en/) installed on your machine -- a [PlanetScale](https://www.planetscale.com/) database server running and a database with at least one table - - - - - -- [Node.js](https://nodejs.org/en/) installed on your machine -- A [Microsoft SQL Server](https://docs.microsoft.com/en-us/sql/?view=sql-server-ver15) database - - [Microsoft SQL Server on Linux for Docker](/orm/overview/databases/sql-server/sql-server-docker) - - [Microsoft SQL Server on Windows (local)](/orm/overview/databases/sql-server/sql-server-local) - - - - - -- an existing Node.js project with a `package.json` -- [Node.js](https://nodejs.org/en/) installed on your machine -- a [CockroachDB](https://www.cockroachlabs.com) database server running and a database with at least one table - - - -> See [System requirements](/orm/reference/system-requirements) for exact version requirements. - -Make sure you have your database [connection URL](/orm/reference/connection-urls) (that includes your authentication credentials) at hand! If you don't have a database server running and just want to explore Prisma ORM, check out the [Quickstart](/getting-started/quickstart). - -## Set up Prisma ORM - -As a first step, navigate into your project directory that contains the `package.json` file. - -Next, add the Prisma CLI as a development dependency to your project: - -```terminal copy -npm install prisma --save-dev -``` - -You can now invoke the Prisma CLI by prefixing it with `npx`: - -```terminal -npx prisma -``` - - - -See [installation instructions](/orm/tools/prisma-cli#installation) to learn how to install Prisma ORM using a different package manager. - - - -Next, set up your Prisma ORM project by creating your [Prisma schema](/orm/prisma-schema) file template with the following command: - -```terminal copy -npx prisma init -``` - -This command does two things: - -- creates a new directory called `prisma` that contains a file called `schema.prisma`, which contains the Prisma schema with your database connection variable and schema models -- creates the [`.env` file](/orm/more/development-environment/environment-variables/env-files) in the root directory of the project, which is used for defining environment variables (such as your database connection) - - - - - - - Connect your database - - - - - - - - - - - - Connect your database - - - - - - - - - - - - Connect your database - - - - - - - - - - - - Connect your database - - - - - - - - - - - - Connect your database - - - - - - - - - - - - Connect your database - - - - - - - - - - - - Connect your database - - - - - - - - - - - - Connect your database - - - - - - - - - - - - Connect your database - - - - - - - - - - - - Connect your database - - - - - diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/index.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb-node-mongodb.mdx similarity index 74% rename from content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/index.mdx rename to content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb-node-mongodb.mdx index 8a7a155ff5..bb61328754 100644 --- a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/index.mdx +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb-node-mongodb.mdx @@ -1,11 +1,14 @@ --- title: 'MongoDB' -metaTitle: 'Add Prisma to an existing MongoDB project (15 min)' -metaDescription: 'Learn how to add Prisma to an existing Node.js or TypeScript project by connecting it to your MongoDB database and generating a Prisma Client for database access.' -duration: '15 min' +metaTitle: 'Add Prisma ORM to an existing MongoDB project using JavaScript (15 min)' +metaDescription: 'Learn how to add Prisma ORM to an existing Node.js project by connecting it to your MongoDB database and generating a Prisma Client for database access.' toc: false langSwitcher: ['typescript', 'node'] +hide_table_of_contents: true dbSwitcher: ['mongodb'] +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/mongodb/connect-your-database-node-mongodb +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/mongodb- --- @@ -14,14 +17,11 @@ Learn how to add Prisma ORM to an existing Node.js or TypeScript project by conn - - -
+ If you're migrating to Prisma ORM from Mongoose, see our [Migrate from Mongoose guide](/orm/more/migrating-to-prisma/migrate-from-mongoose). -
-
+ ## Prerequisites @@ -66,37 +66,3 @@ This command does two things: - creates a new directory called `prisma` that contains a file called `schema.prisma`, which contains the Prisma schema with your database connection variable and schema models - creates the [`.env` file](/orm/more/development-environment/environment-variables/env-files) in the root directory of the project, which is used for defining environment variables (such as your database connection) - - - - - - - Connect your database - - - - - - - - - - - - Connect your database - - - - - diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb-typescript-mongodb.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb-typescript-mongodb.mdx new file mode 100644 index 0000000000..ca7f73095d --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb-typescript-mongodb.mdx @@ -0,0 +1,69 @@ +--- +title: 'MongoDB' +metaTitle: 'Add Prisma ORM to an existing MongoDB project using TypeScript (15 min)' +metaDescription: 'Learn how to add Prisma ORM to an existing TypeScript project by connecting it to your MongoDB database and generating a Prisma Client for database access.' +hide_table_of_contents: true +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['mongodb'] +sidebar_custom_props: { badge: '15 min' } +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/mongodb/connect-your-database-typescript-mongodb +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/mongodb- +--- + + + +Learn how to add Prisma ORM to an existing Node.js or TypeScript project by connecting it to your database and generating a Prisma Client for database access. The following tutorial introduces you to [Prisma CLI](/orm/tools/prisma-cli), [Prisma Client](/orm/prisma-client), and [Prisma Introspection](/orm/prisma-schema/introspection). + + + + + +If you're migrating to Prisma ORM from Mongoose, see our [Migrate from Mongoose guide](/orm/more/migrating-to-prisma/migrate-from-mongoose). + + + +## Prerequisites + +In order to successfully complete this guide, you need: + +- [Node.js](https://nodejs.org/en/) installed on your machine +- Access to a MongoDB 4.2+ server with a replica set deployment. We recommend using [MongoDB Atlas](https://www.mongodb.com/cloud/atlas). + + + + The MongoDB database connector uses transactions to support nested writes. Transactions **requires** a [replica set](https://docs.mongodb.com/manual/tutorial/deploy-replica-set/) deployment. The easiest way to deploy a replica set is with [Atlas](https://docs.atlas.mongodb.com/getting-started/). It's free to get started. + + + +Make sure you have your database [connection URL](/orm/reference/connection-urls) (that includes your authentication credentials) at hand! If you don't have a database server running and just want to explore Prisma ORM, check out the [Quickstart](/getting-started/quickstart). + +> See [System requirements](/orm/reference/system-requirements) for exact version requirements. + +## Set up Prisma ORM + +As a first step, navigate into it your project directory that contains the `package.json` file. + +Next, add the Prisma CLI as a development dependency to your project: + +```terminal copy +npm install prisma --save-dev +``` + +You can now invoke the Prisma CLI by prefixing it with `npx`: + +```terminal +npx prisma +``` + +Next, set up your Prisma ORM project by creating your [Prisma schema](/orm/prisma-schema) file template with the following command: + +```terminal copy +npx prisma init +``` + +This command does two things: + +- creates a new directory called `prisma` that contains a file called `schema.prisma`, which contains the Prisma schema with your database connection variable and schema models +- creates the [`.env` file](/orm/more/development-environment/environment-variables/env-files) in the root directory of the project, which is used for defining environment variables (such as your database connection) + diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/100-connect-your-database.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/100-connect-your-database-node-mongodb.mdx similarity index 63% rename from content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/100-connect-your-database.mdx rename to content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/100-connect-your-database-node-mongodb.mdx index 5e976dcd74..395ce265a8 100644 --- a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/100-connect-your-database.mdx +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/100-connect-your-database-node-mongodb.mdx @@ -1,17 +1,21 @@ --- -title: 'Connect your database' -metaTitle: 'Connect your database' -metaDescription: 'Connect your database to your project' +title: 'Connect your database (MongoDB)' +metaTitle: 'Connect your MongoDB database' +metaDescription: 'Connect your MongoDB database to your existing Node.js projet' langSwitcher: ['typescript', 'node'] +sidebar_class_name: hidden-sidebar +hide_table_of_contents: true dbSwitcher: ['mongodb'] toc: false +pagination_next: getting-started/setup-prisma/add-to-existing-project/mongodb/introspection-node-mongodb +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/mongodb/connect-your-database- --- - + ## Connecting your database To connect your database, you need to set the `url` field of the `datasource` block in your Prisma schema to your database [connection URL](/orm/reference/connection-urls): -```prisma file=prisma/schema.prisma +```prisma file=prisma/schema.prisma showLineNumbers datasource db { provider = "mongodb" url = env("DATABASE_URL") @@ -20,7 +24,7 @@ datasource db { In this case, the `url` is [set via an environment variable](/orm/more/development-environment/environment-variables) which is defined in `.env`: -```bash file=.env +```bash file=.env showLineNumbers DATABASE_URL="mongodb+srv://test:test@cluster0.ns1yp.mongodb.net/myFirstDatabase" ``` @@ -41,55 +45,3 @@ Here's a short explanation of each component: - `DATABASE`: The name of the database > If you see the following error: `Error in connector: SCRAM failure: Authentication failed.`, you can specify the source database for the authentication by [adding](https://github.com/prisma/prisma/discussions/9994#discussioncomment-1562283) `?authSource=admin` to the end of the connection string. - - - - - - - Installation - - - - Introspection - - - - - - - - - - - - Installation - - - - Introspection - - - - - diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/100-connect-your-database-typescript-mongodb.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/100-connect-your-database-typescript-mongodb.mdx new file mode 100644 index 0000000000..1516aea09a --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/100-connect-your-database-typescript-mongodb.mdx @@ -0,0 +1,46 @@ +--- +title: 'Connect your database (MongoDB)' +metaTitle: 'Connect your MongoDB database using TypeScript' +metaDescription: 'Connect your MongoDB database to your existing TypeScript project' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['mongodb'] +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/add-to-existing-project/mongodb/introspection-typescript-mongodb +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/mongodb/connect-your-database- +--- + +## Connecting your database + +To connect your database, you need to set the `url` field of the `datasource` block in your Prisma schema to your database [connection URL](/orm/reference/connection-urls): + +```prisma file=prisma/schema.prisma showLineNumbers +datasource db { + provider = "mongodb" + url = env("DATABASE_URL") +} +``` + +In this case, the `url` is [set via an environment variable](/orm/more/development-environment/environment-variables) which is defined in `.env`: + +```bash file=.env showLineNumbers +DATABASE_URL="mongodb+srv://test:test@cluster0.ns1yp.mongodb.net/myFirstDatabase" +``` + +You now need to adjust the connection URL to point to your own database. + +The [format of the connection URL](/orm/reference/connection-urls) for your database depends on the database you use. For MongoDB, it looks as follows (the parts spelled all-uppercased are _placeholders_ for your specific connection details): + +```no-lines +mongodb://USERNAME:PASSWORD@HOST:PORT/DATABASE +``` + +Here's a short explanation of each component: + +- `USERNAME`: The name of your database user +- `PASSWORD`: The password for your database user +- `HOST`: The host where a [`mongod`](https://docs.mongodb.com/manual/reference/program/mongod/#mongodb-binary-bin.mongod) (or [`mongos`](https://docs.mongodb.com/manual/reference/program/mongos/#mongodb-binary-bin.mongos)) instance is running +- `PORT`: The port where your database server is running (typically `27017` for MongoDB) +- `DATABASE`: The name of the database + +> If you see the following error: `Error in connector: SCRAM failure: Authentication failed.`, you can specify the source database for the authentication by [adding](https://github.com/prisma/prisma/discussions/9994#discussioncomment-1562283) `?authSource=admin` to the end of the connection string. + diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/125-introspection.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/125-introspection-node-mongodb.mdx similarity index 67% rename from content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/125-introspection.mdx rename to content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/125-introspection-node-mongodb.mdx index 9472d84e5e..69eff1aabc 100644 --- a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/125-introspection.mdx +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/125-introspection-node-mongodb.mdx @@ -1,12 +1,15 @@ --- title: 'Introspection' -metaTitle: 'Introspection' -metaDescription: 'Introspection your database with Prisma' +metaTitle: 'Introspection: MongoDB and JavaScript' +metaDescription: 'Introspect your MongoDB database with Prisma ORM' langSwitcher: ['typescript', 'node'] dbSwitcher: ['mongodb'] -toc: false +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/mongodb/install-prisma-client-node-mongodb +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/mongodb/introspection- --- - + # Introspection Prisma ORM introspects a MongoDB schema by sampling the data stored in the given database and inferring the schema of that data. @@ -17,15 +20,15 @@ For the purposes of illustrating introspection, this guide will help you setup a To see this in action, first create a `blog` database with 2 collections: `User` and `Post`. We recommend [MongoDB Compass](https://www.mongodb.com/products/compass) for setting this up: -![Create a blog database using Compass](./1-create-database.jpg) +![Create a blog database using Compass](/img/getting-started/1-create-database.jpg) First, add a user to our `User` collection: -![Create a user within the User collection](./2-create-user.jpg) +![Create a user within the User collection](/img/getting-started/2-create-user.jpg) Next, add some posts to our `Post` collection. It's important that the ObjectID in `userId` matches the user you created above. -![Create some posts within the Post collection](./3-create-posts.jpg) +![Create some posts within the Post collection](/img/getting-started/3-create-posts.jpg) ## Initializing Prisma ORM @@ -41,7 +44,7 @@ npx prisma init Initializing Prisma ORM will create a `prisma/schema.prisma` file. Edit this file to use MongoDB: -```prisma file=prisma/schema.prisma +```prisma file=prisma/schema.prisma showLineNumbers datasource db { provider = "mongodb" url = env("DATABASE_URL") @@ -64,7 +67,7 @@ npx prisma db pull This command introspects our database and writes the inferred schema into your `prisma/schema.prisma` file: -```prisma file=prisma/schema.prisma +```prisma file=prisma/schema.prisma showLineNumbers datasource db { provider = "mongodb" url = env("DATABASE_URL") @@ -90,7 +93,7 @@ model User { To be able to join data using Prisma Client, you can add the [`@relation`](/orm/reference/prisma-schema-reference#relation) attributes to our models: -```prisma file=prisma/schema.prisma highlight=14;add|20;add +```prisma file=prisma/schema.prisma highlight=14;add|20;add showLineNumbers datasource db { provider = "mongodb" url = env("DATABASE_URL") @@ -104,72 +107,23 @@ model Post { id String @id @default(auto()) @map("_id") @db.ObjectId title String userId String @db.ObjectId + //add-next-line user User @relation(fields: [userId], references: [id]) } model User { id String @id @default(auto()) @map("_id") @db.ObjectId email String + //add-next-line posts Post[] } ``` - +:::tip We're actively working on MongoDB introspection. Provide feedback for this feature in [this issue](https://github.com/prisma/prisma/issues/8241). - +::: And with that, you're ready to generate Prisma Client. - - - - - - Connect to your Database - - - - Install Prisma Client - - - - - - - - - - - - Connect to your Database - - - - Install Prisma Client - - - - - diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/125-introspection-typescript-mongodb.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/125-introspection-typescript-mongodb.mdx new file mode 100644 index 0000000000..67b5728a60 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/125-introspection-typescript-mongodb.mdx @@ -0,0 +1,127 @@ +--- +title: 'Introspection' +metaTitle: 'Introspection: MongoDB and TypeScript' +metaDescription: 'Introspection your MongoDB database with Prisma ORM' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['mongodb'] +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/add-to-existing-project/mongodb/install-prisma-client-typescript-mongodb +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/mongodb/introspection- +--- + +# Introspection + +Prisma ORM introspects a MongoDB schema by sampling the data stored in the given database and inferring the schema of that data. + +For the purposes of illustrating introspection, this guide will help you setup a MongoDB from scratch. But if you have a MongoDB database already, feel free to jump to [Initializing Prisma ORM](#initializing-prisma-orm) in your project. + +## Setting up your Database + +To see this in action, first create a `blog` database with 2 collections: `User` and `Post`. We recommend [MongoDB Compass](https://www.mongodb.com/products/compass) for setting this up: + +![Create a blog database using Compass](/img/getting-started/1-create-database.jpg) + +First, add a user to our `User` collection: + +![Create a user within the User collection](/img/getting-started/2-create-user.jpg) + +Next, add some posts to our `Post` collection. It's important that the ObjectID in `userId` matches the user you created above. + +![Create some posts within the Post collection](/img/getting-started/3-create-posts.jpg) + +## Initializing Prisma ORM + +Now that you have a MongoDB database, the next step is to create a new project and initialize Prisma ORM: + +```terminal copy +mkdir blog +cd blog +npm init -y +npm install -D prisma +npx prisma init +``` + +Initializing Prisma ORM will create a `prisma/schema.prisma` file. Edit this file to use MongoDB: + +```prisma file=prisma/schema.prisma showLineNumbers +datasource db { + provider = "mongodb" + url = env("DATABASE_URL") +} + +generator client { + provider = "prisma-client-js" +} +``` + +Next you'll need to adjust your `.env` file to point the `DATABASE_URL` to your MongoDB database + +## Introspecting MongoDB with Prisma ORM + +You're now ready to introspect. Run the following command to introspect your database: + +```terminal copy +npx prisma db pull +``` + +This command introspects our database and writes the inferred schema into your `prisma/schema.prisma` file: + +```prisma file=prisma/schema.prisma showLineNumbers +datasource db { + provider = "mongodb" + url = env("DATABASE_URL") +} + +generator client { + provider = "prisma-client-js" +} + +model Post { + id String @id @default(auto()) @map("_id") @db.ObjectId + title String + userId String @db.ObjectId +} + +model User { + id String @id @default(auto()) @map("_id") @db.ObjectId + email String +} +``` + +## Tweaking the Schema + +To be able to join data using Prisma Client, you can add the [`@relation`](/orm/reference/prisma-schema-reference#relation) attributes to our models: + +```prisma file=prisma/schema.prisma highlight=14;add|20;add showLineNumbers +datasource db { + provider = "mongodb" + url = env("DATABASE_URL") +} + +generator client { + provider = "prisma-client-js" +} + +model Post { + id String @id @default(auto()) @map("_id") @db.ObjectId + title String + userId String @db.ObjectId + //add-next-line + user User @relation(fields: [userId], references: [id]) +} + +model User { + id String @id @default(auto()) @map("_id") @db.ObjectId + email String + //add-next-line + posts Post[] +} +``` + +:::tip + +We're actively working on MongoDB introspection. Provide feedback for this feature in [this issue](https://github.com/prisma/prisma/issues/8241). + +::: + +And with that, you're ready to generate Prisma Client. diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/200-install-prisma-client-node-mongodb.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/200-install-prisma-client-node-mongodb.mdx new file mode 100644 index 0000000000..ae2d81fd68 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/200-install-prisma-client-node-mongodb.mdx @@ -0,0 +1,26 @@ +--- +title: 'Install Prisma Client' +metaTitle: 'Install Prisma Client in your existing project: JavaScript and MongoDB' +metaDescription: 'Install and generate Prisma Client in your existing project using a MongoDB database and Javascript.' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['mongodb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/mongodb/querying-the-database-node-mongodb +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/mongodb/install-prisma-client- +--- + +## Install and generate Prisma Client + +To get started with Prisma Client, you need to install the `@prisma/client` package: + +```terminal copy +npm install @prisma/client +``` + +The install command invokes `prisma generate` for you which reads your Prisma schema and generates a version of Prisma Client that is _tailored_ to your models. + +![Install and generate Prisma Client](/img/getting-started/prisma-client-install-and-generate.png) + +Whenever you make changes to your Prisma schema in the future, you manually need to invoke `prisma generate` in order to accommodate the changes in your Prisma Client API. + diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/200-install-prisma-client-typescript-mongodb.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/200-install-prisma-client-typescript-mongodb.mdx new file mode 100644 index 0000000000..4dfc87e7e9 --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/200-install-prisma-client-typescript-mongodb.mdx @@ -0,0 +1,24 @@ +--- +title: 'Install Prisma Client' +metaTitle: 'Install Prisma Client in your existing project: TypeScript and MongoDB' +metaDescription: 'Install and generate Prisma Client in your existing project using a MongoDB database and TypeScript.' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['mongodb'] +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/add-to-existing-project/mongodb/querying-the-database-typescript-mongodb +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/mongodb/install-prisma-client- +--- + +## Install and generate Prisma Client + +To get started with Prisma Client, you need to install the `@prisma/client` package: + +```terminal copy +npm install @prisma/client +``` + +The install command invokes `prisma generate` for you which reads your Prisma schema and generates a version of Prisma Client that is _tailored_ to your models. + +![Install and generate Prisma Client](/img/getting-started/prisma-client-install-and-generate.png) + +Whenever you make changes to your Prisma schema in the future, you manually need to invoke `prisma generate` in order to accommodate the changes in your Prisma Client API. diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/200-install-prisma-client.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/200-install-prisma-client.mdx deleted file mode 100644 index 71d7eed971..0000000000 --- a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/200-install-prisma-client.mdx +++ /dev/null @@ -1,74 +0,0 @@ ---- -title: 'Install Prisma Client' -metaTitle: 'Install Prisma Client' -metaDescription: 'Install and generate Prisma Client in your project' -langSwitcher: ['typescript', 'node'] -dbSwitcher: ['mongodb'] -toc: false ---- - -## Install and generate Prisma Client - -To get started with Prisma Client, you need to install the `@prisma/client` package: - -```terminal copy -npm install @prisma/client -``` - -The install command invokes `prisma generate` for you which reads your Prisma schema and generates a version of Prisma Client that is _tailored_ to your models. - -![Install and generate Prisma Client](../../../images/prisma-client-install-and-generate.png) - -Whenever you make changes to your Prisma schema in the future, you manually need to invoke `prisma generate` in order to accommodate the changes in your Prisma Client API. - - - - - - - Introspection - - - - Querying the database - - - - - - - - - - - - Introspection - - - - Querying the database - - - - - diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/250-querying-the-database-node-mongodb.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/250-querying-the-database-node-mongodb.mdx new file mode 100644 index 0000000000..7602e8104e --- /dev/null +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/250-querying-the-database-node-mongodb.mdx @@ -0,0 +1,218 @@ +--- +title: 'Querying the database' +metaTitle: 'Querying the database in your existing project: MongoDB and JavaScript' +metaDescription: 'Write data to and query your MongoDB database in your existing project.' +langSwitcher: ['typescript', 'node'] +dbSwitcher: ['mongodb'] +hide_table_of_contents: true +sidebar_class_name: hidden-sidebar +pagination_next: getting-started/setup-prisma/add-to-existing-project/mongodb/next-steps +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/mongodb/querying-the-database- +--- + +## Write your first query with Prisma Client + +Now that you have generated Prisma Client, you can start writing queries to read and write data in your database. For the purpose of this guide, you'll use a plain Node.js script to explore some basic features of Prisma Client. + +If you're building a REST API, you can use Prisma Client in your route handlers to read and write data in the database based on incoming HTTP requests. If you're building a GraphQL API, you can use Prisma Client in your resolvers to read and write data in the database based on incoming queries and mutations. + +For the purpose of this guide however, you'll just create a plain Node.js script to learn how to send queries to your database using Prisma Client. Once you have an understanding of how the API works, you can start integrating it into your actual application code (e.g. REST route handlers or GraphQL resolvers). + +Create a new file named `index.js` and add the following code to it: + +```js file=index.js copy +const { PrismaClient } = require('@prisma/client') + +const prisma = new PrismaClient() + +async function main() { + // ... you will write your Prisma Client queries here +} + +main() + .then(async () => { + await prisma.$disconnect() + }) + .catch(async (e) => { + console.error(e) + await prisma.$disconnect() + process.exit(1) + }) +``` + +Here's a quick overview of the different parts of the code snippet: + +1. Import the `PrismaClient` constructor from the `@prisma/client` node module +1. Instantiate `PrismaClient` +1. Define an `async` function named `main` to send queries to the database +1. Connect to the database +1. Call the `main` function +1. Close the database connections when the script terminates + +Inside the `main` function, add the following query to read all `User` records from the database and print the result: + +```js file=index.js showLineNumbers +async function main() { +- // ... you will write your Prisma Client queries here +//add-start ++ const allUsers = await prisma.user.findMany() ++ console.log(allUsers) +//add-end +} +``` + +Now run the code with this command: + +```terminal copy +node index.js +``` + +If you introspected an existing database with records, the query should return an array of JavaScript objects. + +## Write data into the database + +The `findMany` query you used in the previous section only _reads_ data from the database (although it was still empty). In this section, you'll learn how to write a query to _write_ new records into the `Post`, `User` and `Comment` tables. + +Adjust the `main` function to send a `create` query to the database: + +```js file=index.js copy showLineNumbers +async function main() { + await prisma.user.create({ + data: { + name: 'Rich', + email: 'hello@prisma.com', + posts: { + create: { + title: 'My first post', + body: 'Lots of really interesting stuff', + slug: 'my-first-post', + }, + }, + }, + }) + + const allUsers = await prisma.user.findMany({ + include: { + posts: true, + }, + }) + console.dir(allUsers, { depth: null }) +} +``` + +This code creates a new `User` record together with a new `Post` using a [nested write](/orm/prisma-client/queries/relation-queries#nested-writes) query. The `User` record is connected to the other one via the `Post.author` ↔ `User.posts` [relation fields](/orm/prisma-schema/data-model/relations#relation-fields) respectively. + +Notice that you're passing the [`include`](/orm/prisma-client/queries/select-fields#include-relations-and-select-relation-fields) option to `findMany` which tells Prisma Client to include the `posts` relations on the returned `User` objects. + +Run the code with this command: + +```terminal copy +node index.js +``` + +The output should look similar to this: + +```json no-lines +[ + { + id: '60cc9b0e001e3bfd00a6eddf', + email: 'hello@prisma.com', + name: 'Rich', + posts: [ + { + id: '60cc9bad005059d6007f45dd', + slug: 'my-first-post', + title: 'My first post', + body: 'Lots of really interesting stuff', + userId: '60cc9b0e001e3bfd00a6eddf', + }, + ], + }, +] +``` + +The query added new records to the `User` and the `Post` collections: + + + +The `id` field in the Prisma schema maps to `_id` in the underlying MongoDB database. + + + +**User** collection + +| **\_id** | **email** | **name** | +| :------------------------- | :------------------- | :------- | +| `60cc9b0e001e3bfd00a6eddf` | `"hello@prisma.com"` | `"Rich"` | + +**Post** collection + +| **\_id** | **createdAt** | **title** | **content** | **published** | **authorId** | +| :------------------------- | :------------------------- | :---------------- | :--------------------------------- | :------------ | :------------------------- | +| `60cc9bad005059d6007f45dd` | `2020-03-21T16:45:01.246Z` | `"My first post"` | `Lots of really interesting stuff` | `false` | `60cc9b0e001e3bfd00a6eddf` | + +> **Note**: The unique identifier in the `authorId` document field on `Post` reference the `_id` document field in the `User` collection, meaning the `_id` value `60cc9b0e001e3bfd00a6eddf` column therefore refers to the first (and only) `User` record in the database. + +Before moving on to the next section, you'll add a couple of comments to the `Post` record you just created using an `update` query. Adjust the `main` function as follows: + +```js file=index.js copy +async function main() { + await prisma.post.update({ + where: { + slug: 'my-first-post', + }, + data: { + comments: { + createMany: { + data: [ + { comment: 'Great post!' }, + { comment: "Can't wait to read more!" }, + ], + }, + }, + }, + }) + const posts = await prisma.post.findMany({ + include: { + comments: true, + }, + }) + + console.dir(posts, { depth: Infinity }) +} +``` + +Now run the code using the same command as before: + +```terminal copy +node index.js +``` + +You will see the following output: + +```json no-lines +[ + { + id: '60cc9bad005059d6007f45dd', + slug: 'my-first-post', + title: 'My first post', + body: 'Lots of really interesting stuff', + userId: '60cc9b0e001e3bfd00a6eddf', + comments: [ + { + id: '60cca420008a21d800578793', + postId: '60cca40300af8bf000f6ca99', + comment: 'Great post!', + }, + { + id: '60cca420008a21d800578794', + postId: '60cca40300af8bf000f6ca99', + comment: "Can't wait to try this!", + }, + ], + }, +] +``` + +Fantastic, you just wrote new data into your database for the first time using Prisma Client 🚀 + diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/250-querying-the-database.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/250-querying-the-database-typescript-mongodb.mdx similarity index 66% rename from content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/250-querying-the-database.mdx rename to content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/250-querying-the-database-typescript-mongodb.mdx index 06769be5d7..bef04f8cf6 100644 --- a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/250-querying-the-database.mdx +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/250-querying-the-database-typescript-mongodb.mdx @@ -1,12 +1,14 @@ --- title: 'Querying the database' -metaTitle: 'Querying the database' -metaDescription: 'Write data to and query the database' +metaTitle: 'Querying the database in your existing project: MongoDB and TypeScript' +metaDescription: 'Write data to and query your MongoDB database' langSwitcher: ['typescript', 'node'] dbSwitcher: ['mongodb'] -toc: false +hide_table_of_contents: true +pagination_next: getting-started/setup-prisma/add-to-existing-project/mongodb/next-steps +slugSwitch: /getting-started/setup-prisma/add-to-existing-project/mongodb/querying-the-database- --- - + ## Write your first query with Prisma Client Now that you have generated Prisma Client, you can start writing queries to read and write data in your database. For the purpose of this guide, you'll use a plain Node.js script to explore some basic features of Prisma Client. @@ -15,8 +17,6 @@ If you're building a REST API, you can use Prisma Client in your route handlers For the purpose of this guide however, you'll just create a plain Node.js script to learn how to send queries to your database using Prisma Client. Once you have an understanding of how the API works, you can start integrating it into your actual application code (e.g. REST route handlers or GraphQL resolvers). - - Create a new file named `index.ts` and add the following code to it: ```js file=index.ts copy @@ -39,34 +39,6 @@ main() }) ``` - - - - -Create a new file named `index.js` and add the following code to it: - -```js file=index.js copy -const { PrismaClient } = require('@prisma/client') - -const prisma = new PrismaClient() - -async function main() { - // ... you will write your Prisma Client queries here -} - -main() - .then(async () => { - await prisma.$disconnect() - }) - .catch(async (e) => { - console.error(e) - await prisma.$disconnect() - process.exit(1) - }) -``` - - - Here's a quick overview of the different parts of the code snippet: 1. Import the `PrismaClient` constructor from the `@prisma/client` node module @@ -78,48 +50,22 @@ Here's a quick overview of the different parts of the code snippet: Inside the `main` function, add the following query to read all `User` records from the database and print the result: - - -```ts file=index.ts +```ts file=index.ts showLineNumbers async function main() { // ... you will write your Prisma Client queries here +//add-start + const allUsers = await prisma.user.findMany() + console.log(allUsers) +//add-end } ``` - - - - -```js file=index.js -async function main() { -- // ... you will write your Prisma Client queries here -+ const allUsers = await prisma.user.findMany() -+ console.log(allUsers) -} -``` - - - Now run the code with this command: - - ```terminal copy npx ts-node index.ts ``` - - - - -```terminal copy -node index.js -``` - - - If you introspected an existing database with records, the query should return an array of JavaScript objects. ## Write data into the database @@ -128,9 +74,7 @@ The `findMany` query you used in the previous section only _reads_ data from the Adjust the `main` function to send a `create` query to the database: - - -```ts file=index.ts copy +```ts file=index.ts copy showLineNumbers async function main() { await prisma.user.create({ data: { @@ -155,62 +99,19 @@ async function main() { } ``` - - - - -```js file=index.js copy -async function main() { - await prisma.user.create({ - data: { - name: 'Rich', - email: 'hello@prisma.com', - posts: { - create: { - title: 'My first post', - body: 'Lots of really interesting stuff', - slug: 'my-first-post', - }, - }, - }, - }) - - const allUsers = await prisma.user.findMany({ - include: { - posts: true, - }, - }) - console.dir(allUsers, { depth: null }) -} -``` - - - This code creates a new `User` record together with a new `Post` using a [nested write](/orm/prisma-client/queries/relation-queries#nested-writes) query. The `User` record is connected to the other one via the `Post.author` ↔ `User.posts` [relation fields](/orm/prisma-schema/data-model/relations#relation-fields) respectively. Notice that you're passing the [`include`](/orm/prisma-client/queries/select-fields#include-relations-and-select-relation-fields) option to `findMany` which tells Prisma Client to include the `posts` relations on the returned `User` objects. Run the code with this command: - - ```terminal copy npx ts-node index.ts ``` - - - - -```terminal copy -node index.js -``` - - - The output should look similar to this: -```json5 no-lines +```json no-lines [ { id: '60cc9b0e001e3bfd00a6eddf', @@ -229,11 +130,9 @@ The output should look similar to this: ] ``` - - Also note that `allUsers` is _statically typed_ thanks to [Prisma Client's generated types](/orm/prisma-client/type-safety/operating-against-partial-structures-of-model-types). You can observe the type by hovering over the `allUsers` variable in your editor. It should be typed as follows: -```ts no-lines +```ts no-lines showLineNumbers const allUsers: (User & { posts: Post[] })[] @@ -247,8 +146,6 @@ export type Post = { } ``` - - The query added new records to the `User` and the `Post` collections: @@ -273,40 +170,7 @@ The `id` field in the Prisma schema maps to `_id` in the underlying MongoDB data Before moving on to the next section, you'll add a couple of comments to the `Post` record you just created using an `update` query. Adjust the `main` function as follows: - - -```ts file=index.ts copy -async function main() { - await prisma.post.update({ - where: { - slug: 'my-first-post', - }, - data: { - comments: { - createMany: { - data: [ - { comment: 'Great post!' }, - { comment: "Can't wait to read more!" }, - ], - }, - }, - }, - }) - const posts = await prisma.post.findMany({ - include: { - comments: true, - }, - }) - - console.dir(posts, { depth: Infinity }) -} -``` - - - - - -```js file=index.js copy +```ts file=index.ts copy showLineNumbers async function main() { await prisma.post.update({ where: { @@ -333,31 +197,15 @@ async function main() { } ``` - - - - Now run the code using the same command as before: ```terminal copy npx ts-node index.ts ``` - - - - -Now run the code using the same command as before: - -```terminal copy -node index.js -``` - - - You will see the following output: -```json5 no-lines +```json no-lines [ { id: '60cc9bad005059d6007f45dd', @@ -382,50 +230,3 @@ You will see the following output: ``` Fantastic, you just wrote new data into your database for the first time using Prisma Client 🚀 - - - - - - - Install Prisma Client - - - - Next Steps - - - - - - - - - - - - Install Prisma Client - - - - Next Steps - - - - - diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/300-next-steps.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/300-next-steps.mdx index a83c897122..4c5036407a 100644 --- a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/300-next-steps.mdx +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/300-next-steps.mdx @@ -1,27 +1,24 @@ --- title: 'Next steps' -metaTitle: 'Next steps' -metaDescription: 'Next steps to take now that you have successfully added Prisma to your project' -langSwitcher: ['typescript', 'node'] -dbSwitcher: ['mongodb'] -toc: false +metaTitle: 'Next steps after adding Prisma ORM to an existing project using MongoDB' +metaDescription: 'Next steps to take now that you have successfully added Prisma ORM to your existing Node.js or TypeScript project.' +hide_table_of_contents: true --- - -## Next steps - + This section lists a number of potential next steps you can now take from here. Feel free to explore these or read the [Introduction](/orm/overview/introduction/what-is-prisma) page to get a high-level overview of Prisma ORM. ### Continue exploring the Prisma Client API You can send a variety of queries with the Prisma Client API. Check out the [API reference](/orm/prisma-client) and use your existing database setup from this guide to try them out. - +:::tip You can use your editor's auto-completion feature to learn about the different API calls and the arguments it takes. Auto-completion is commonly invoked by hitting CTRL+SPACE on your keyboard. - +::: -
Expand for more Prisma Client API examples +
+Expand for more Prisma Client API examples Here are a few suggestions for a number of more queries you can send with Prisma Client: @@ -79,9 +76,9 @@ Prisma Studio is a visual editor for the data in your database. Run `npx prisma The [`prisma-examples`](https://github.com/prisma/prisma-examples/) repository contains a number of ready-to-run examples: -, ]}> + - + | Demo | Stack | Description | | :------------------------------------------------------------------------------------------------------------------ | :----------- | --------------------------------------------------------------------------------------------------- | @@ -91,9 +88,9 @@ The [`prisma-examples`](https://github.com/prisma/prisma-examples/) repository c | [`rest-express`](https://github.com/prisma/prisma-examples/tree/latest/typescript/rest-express) | Backend only | Simple REST API with Express.JS | | [`grpc`](https://github.com/prisma/prisma-examples/tree/latest/typescript/grpc) | Backend only | Simple gRPC API | - + - + | Demo | Stack | Description | | :---------------------------------------------------------------------------------------------------------------- | :----------- | :-------------------------------------------------------------------------------------------------- | @@ -102,6 +99,6 @@ The [`prisma-examples`](https://github.com/prisma/prisma-examples/) repository c | [`rest-express`](https://github.com/prisma/prisma-examples/tree/latest/javascript/rest-express) | Backend only | Simple REST API with Express.JS | | [`grpc`](https://github.com/prisma/prisma-examples/tree/latest/javascript/grpc) | Backend only | Simple gRPC API | - + diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/prisma-client-node-module.png b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/prisma-client-node-module.png deleted file mode 100644 index 2fc66ee7f5..0000000000 Binary files a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/prisma-client-node-module.png and /dev/null differ diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/index.mdx b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/index.mdx index 791ece2e24..9c4e8dbf39 100644 --- a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/index.mdx +++ b/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/index.mdx @@ -1,8 +1,8 @@ --- title: 'Add to existing project' -metaTitle: 'Add Prisma to an existing project' -metaDescription: 'Learn how to add Prisma to an existing Node.js or TypeScript project by connecting it to your database of choice and generating a Prisma Client for database access.' -toc: false +metaTitle: 'Add Prisma ORM to an existing project' +metaDescription: 'Learn how to add Prisma ORM to an existing Node.js or TypeScript project by connecting it to your database of choice and generating a Prisma Client for database access.' +hide_table_of_contents: true --- diff --git a/content/100-getting-started/02-setup-prisma/index.mdx b/content/100-getting-started/02-setup-prisma/index.mdx index 37748d1816..c1827534ef 100644 --- a/content/100-getting-started/02-setup-prisma/index.mdx +++ b/content/100-getting-started/02-setup-prisma/index.mdx @@ -2,7 +2,7 @@ title: 'Set up Prisma ORM' metaTitle: 'Set up Prisma ORM' metaDescription: 'Get started with Prisma ORM and your favorite database. Learn about data modeling, migrations and querying.' -toc: false +hide_table_of_contents: true staticLink: true --- diff --git a/content/100-getting-started/index.mdx b/content/100-getting-started/index.mdx index 097a3cb937..d761ef292b 100644 --- a/content/100-getting-started/index.mdx +++ b/content/100-getting-started/index.mdx @@ -2,10 +2,25 @@ title: 'Get Started' metaTitle: 'Get started with Prisma' metaDescription: 'Build data-driven applications with ease using Prisma ORM, add connection pooling or global caching with Prisma Accelerate or subscribe to database changes in real-time with Prisma Pulse.' -hideTitle: true +hide_title: true tocDepth: 1 +sidebar_position: 0 +sidebar_class_name: firstTitle +pagination_next: 'getting-started/quickstart' --- +import { + Bolt, + BorderBox, + BoxTitle, + Database, + Grid, + LinkCard, + List, + SignalStream, + SquareLogo, +} from '@site/src/components/GettingStarted'; + @@ -39,7 +54,7 @@ _These options don't require you to have your own database running._ icon="fa-solid fa-rabbit-running" title="Quickstart" desc="Set up Prisma ORM from scratch with a SQLite database in 5 minutes." - link="/docs/getting-started/quickstart" + link="/getting-started/quickstart" /> - - -

- Set up Prisma ORM from scratch with your favorite database and - learn basic workflows like data modeling, querying, and migrations. -

- - } - tech="Postgres SQL" - /> - } - tech="MySQL" - /> - } - tech="SQLServer" - /> - } - tech="PlanetScale" - /> - } - tech="Cockroach DB" - /> - } - tech="Mongo DB" - /> - -
-
- - -

- Get started with Prisma ORM and your existing database by - introspecting your database schema and learn how to query your database. -

- - } - tech="Postgres SQL" - /> - } - tech="MySQL" - /> - } - tech="SQL Server" - /> - } - tech="PlanetScale" - /> - } - tech="Cockroach DB" - /> - } - tech="Mongo DB" - /> - -
-
+ + +

+ Set up Prisma ORM from scratch with your favorite database and + learn basic workflows like data modeling, querying, and migrations. +

+ + + + + + + + +
+ +

+ Get started with Prisma ORM and your existing database by + introspecting your database schema and learn how to query your database. +

+ + + + + + + + +
## Prisma Accelerate @@ -145,7 +156,7 @@ Make your app faster by scaling your database connections and caching database r icon="fa-solid fa-arrow-right" title="Get started" desc="Add Accelerate to your app to use global database caching & connection pooling." - link="/docs/accelerate/getting-started" + link="/accelerate/getting-started" /> diff --git a/content/200-orm/050-overview/100-introduction/100-what-is-prisma.mdx b/content/200-orm/050-overview/100-introduction/100-what-is-prisma.mdx index 2ea9fcd4da..177fa3a90a 100644 --- a/content/200-orm/050-overview/100-introduction/100-what-is-prisma.mdx +++ b/content/200-orm/050-overview/100-introduction/100-what-is-prisma.mdx @@ -4,8 +4,6 @@ metaTitle: 'What is Prisma ORM? (Overview)' metaDescription: "This page gives a high-level overview of what Prisma ORM is and how it works. It's a great starting point for Prisma newcomers!" --- -## What is Prisma ORM? - Prisma ORM is an [open-source](https://github.com/prisma/prisma) next-generation ORM. It consists of the following parts: - **Prisma Client**: Auto-generated and type-safe query builder for Node.js & TypeScript @@ -20,7 +18,7 @@ Prisma ORM is an [open-source](https://github.com/prisma/prisma) next-generation Prisma Client can be used in _any_ Node.js (supported versions) or TypeScript backend application (including serverless applications and microservices). This can be a [REST API](/orm/overview/prisma-in-your-stack/rest), a [GraphQL API](/orm/overview/prisma-in-your-stack/graphql), a gRPC API, or anything else that needs a database. -
+
-### Restrict +### `Restrict` - `onDelete: Restrict` Prevents the deletion if any referencing records exist. - `onUpdate: Restrict` Prevents the identifier of a referenced record from being changed. #### Example usage -```prisma file=schema.prisma highlight=4;add +```prisma file=schema.prisma highlight=4;add showLineNumbers model Post { id Int @id @default(autoincrement()) title String + //add-next-line author User @relation(fields: [authorId], references: [id], onDelete: Restrict, onUpdate: Restrict) authorId Int } @@ -257,7 +262,7 @@ The `Restrict` action is **not** available on [Microsoft SQL Server](/orm/overvi -### NoAction +### `NoAction` The `NoAction` action is similar to `Restrict`, the difference between the two is dependent on the database being used: @@ -275,10 +280,11 @@ If you are [managing relations in Prisma Client](/orm/prisma-schema/data-model/r #### Example usage -```prisma file=schema.prisma highlight=4;add +```prisma file=schema.prisma highlight=4;add showLineNumbers model Post { id Int @id @default(autoincrement()) title String + //add-next-line author User @relation(fields: [authorId], references: [id], onDelete: NoAction, onUpdate: NoAction) authorId Int } @@ -293,7 +299,7 @@ model User { `User`'s with posts **cannot** be deleted. The `User`'s `id` **cannot** be changed. -### SetNull +### `SetNull` - `onDelete: SetNull` The scalar field of the referencing object will be set to `NULL`. @@ -301,10 +307,11 @@ model User { `SetNull` will only work on optional relations. On required relations, a runtime error will be thrown since the scalar fields cannot be null. -```prisma file=schema.prisma highlight=4;add +```prisma file=schema.prisma highlight=4;add showLineNumbers model Post { id Int @id @default(autoincrement()) title String + //add-next-line author User? @relation(fields: [authorId], references: [id], onDelete: SetNull, onUpdate: SetNull) authorId Int? } @@ -321,7 +328,7 @@ When deleting a `User`, the `authorId` will be set to `NULL` for all its authore When changing a `User`'s `id`, the `authorId` will be set to `NULL` for all its authored posts. -### SetDefault +### `SetDefault` - `onDelete: SetDefault` The scalar field of the referencing object will be set to the fields default value. @@ -329,12 +336,14 @@ When changing a `User`'s `id`, the `authorId` will be set to `NULL` for all its These require setting a default for the relation scalar field with [`@default`](/orm/reference/prisma-schema-reference#default). If no defaults are provided for any of the scalar fields, a runtime error will be thrown. -```prisma file=schema.prisma highlight=4,5;add +```prisma file=schema.prisma highlight=4,5;add showLineNumbers model Post { id Int @id @default(autoincrement()) title String + //add-start authorUsername String? @default("anonymous") author User? @relation(fields: [authorUsername], references: [username], onDelete: SetDefault, onUpdate: SetDefault) + //add-end } model User { @@ -371,7 +380,7 @@ When you run an Introspection, Prisma ORM compares all the foreign keys in the d After introspecting, you can review the non-default clauses in your schema. The most important clause to review is `onDelete`, which defaults to `Cascade` in 2.25.0 and earlier. - + If you are using either the [`delete()`](/orm/prisma-client/queries/crud#delete-a-single-record) or [`deleteMany()`](/orm/prisma-client/queries/crud#delete-all-records) methods, **[cascading deletes](#how-to-use-cascading-deletes) will now be performed** as the `referentialActions` preview feature **removed the safety net in Prisma Client that previously prevented cascading deletes at runtime**. Be sure to check your code and make any adjustments accordingly. @@ -389,10 +398,11 @@ The following example would result in a cascading delete, if the `User` is delet #### A blog schema example -```prisma highlight=4;add +```prisma highlight=4;add showLineNumbers model Post { id Int @id @default(autoincrement()) title String + //add-next-line author User @relation(fields: [authorId], references: [id], onDelete: Cascade) authorId Int } @@ -434,7 +444,7 @@ The following example uses the below blog schema with a one-to-many relationship This means that if a user has a post, that user (and their posts) **cannot** be deleted. -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model Post { id Int @id @default(autoincrement()) title String @@ -450,7 +460,7 @@ model User { Prior to upgrading and enabling the referential actions **preview feature**, the error code you would receive when trying to delete a user which has posts would be `P2014` and it's message: -> "The change you are trying to make would violate the required relation '{relation_name}' between the {model_a_name} and {model_b_name} models." +> "The change you are trying to make would violate the required relation '\{relation_name}' between the \{model_a_name\} and \{model_b_name\} models." ```ts import { PrismaClient } from '@prisma/client' @@ -478,7 +488,7 @@ main() To make sure you are checking for the correct errors in your code, modify your check to look for `P2003`, which will deliver the message: -> "Foreign key constraint failed on the field: {field_name}" +> "Foreign key constraint failed on the field: \{field_name\}" ```ts highlight=14;delete|15;add import { PrismaClient } from '@prisma/client' diff --git a/content/200-orm/100-prisma-schema/20-data-model/20-relations/420-relation-mode.mdx b/content/200-orm/100-prisma-schema/20-data-model/20-relations/420-relation-mode.mdx index f0d8b5e4f9..c680618391 100644 --- a/content/200-orm/100-prisma-schema/20-data-model/20-relations/420-relation-mode.mdx +++ b/content/200-orm/100-prisma-schema/20-data-model/20-relations/420-relation-mode.mdx @@ -9,16 +9,19 @@ tocDepth: 3 In Prisma schema, relations between records are defined with the [`@relation`](/orm/reference/prisma-schema-reference#relation) attribute. For example, in the following schema there is a one-to-many relation between the `User` and `Post` models: -```prisma file=schema.prisma highlight=4,5,10;normal +```prisma file=schema.prisma highlight=4,5,10;normal showLineNumbers model Post { id Int @id @default(autoincrement()) title String + //highlight-start author User @relation(fields: [authorId], references: [id], onDelete: Cascade, onUpdate: Cascade) authorId Int + //highlight-end } model User { id Int @id @default(autoincrement()) + //highlight-next-line posts Post[] } ``` @@ -53,10 +56,12 @@ CREATE TABLE "User" ( ); -- AddForeignKey +//highlight-start ALTER TABLE "Post" ADD CONSTRAINT "Post_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; +//highlight-end ``` In this case, the foreign key constraint on the `authorId` column of the `Post` table references the `id` column of the `User` table, and guarantees that a post must have an author that exists. If you update or delete a user then the `ON DELETE` and `ON UPDATE` referential actions specify the `CASCADE` option, which will also delete or update all posts belonging to the user. @@ -75,10 +80,11 @@ Some databases, such as MongoDB or [PlanetScale](/orm/overview/databases/planets To set the relation mode, add the `relationMode` field in the `datasource` block: -```prisma file=schema.prisma highlight=4,9;add +```prisma file=schema.prisma highlight=4,9;add showLineNumbers datasource db { provider = "mysql" url = env("DATABASE_URL") + //add-next-line relationMode = "prisma" } ``` @@ -102,7 +108,7 @@ If you switch between relation modes, Prisma ORM will add or remove foreign keys -## Handle relations in your relational database with the foreignKeys relation mode +## Handle relations in your relational database with the `foreignKeys` relation mode The `foreignKeys` relation mode handles relations in your relational database with foreign keys. This is the default option when you use a relational database connector (PostgreSQL, MySQL, SQLite, SQL Server, CockroachDB). @@ -126,11 +132,11 @@ For more information, see the [referential actions](/orm/prisma-schema/data-mode When you introspect a relational database with the `db pull` command with the `foreignKeys` relation mode enabled, a `@relation` attribute will be added to your Prisma schema for relations where foreign keys exist. -### Prisma Migrate and db push +### Prisma Migrate and `db push` When you apply changes to your Prisma schema with Prisma Migrate or `db push` with the `foreignKeys` relation mode enabled, foreign keys will be created in your database for all `@relation` attributes in your schema. -## Emulate relations in Prisma ORM with the prisma relation mode +## Emulate relations in Prisma ORM with the `prisma` relation mode The `prisma` relation mode emulates some foreign key constraints and referential actions for each Prisma Client query to maintain referential integrity, using some additional database queries and logic. @@ -187,7 +193,7 @@ Example: When you introspect a database with the `db pull` command with the `prisma` relation mode enabled, relations will not be automatically added to your schema. You will instead need to add any relations manually with the `@relation` attribute. This only needs to be done once – next time you introspect your database, Prisma ORM will keep your added `@relation` attributes. -### Prisma Migrate and db push +### Prisma Migrate and `db push` When you apply changes to your Prisma schema with Prisma Migrate or `db push` with the `prisma` relation mode enabled, Prisma ORM will not use foreign keys in your database. @@ -201,7 +207,7 @@ The `prisma` relation mode does not use foreign keys, so no indexes are created If you do not add the index manually, queries might require full table scans. This can be slow, and also expensive on database providers that bill per accessed row. To help avoid this, Prisma ORM warns you when your schema contains fields that are used in a `@relation` that does not have an index defined. For example, take the following schema with a relation between the `User` and `Post` models: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers datasource db { provider = "mysql" url = env("DATABASE_URL") @@ -228,25 +234,26 @@ With `relationMode = "prisma"`, no foreign keys are used, so relation fields wil To fix this, add an index to your `Post` model: -```prisma file=schema.prisma highlight=6;add +```prisma file=schema.prisma highlight=6;add showLineNumbers model Post { id Int @id userId Int user User @relation(fields: [userId], references: [id]) + //add-next-line @@index([userId]) } ``` If you use the [Prisma VS Code extension](https://marketplace.visualstudio.com/items?itemName=Prisma.prisma) (or our [language server in another editor](/orm/more/development-environment/editor-setup)), the warning is augmented with a Quick Fix that adds the required index for you: -![The Quick Fix pop-up for adding an index on a relation scalar field in VS Code](quick-fix-index.png) +![The Quick Fix pop-up for adding an index on a relation scalar field in VS Code](./quick-fix-index.png) ## Switch between relation modes It is only possible to switch between relation modes when you use a relational database connector (PostgreSQL, MySQL, SQLite, SQL Server, CockroachDB). -### Switch from foreignKeys to prisma +### Switch from `foreignKeys` to `prisma` The default relation mode if you use a relational database and do not include the `relationMode` field in your `datasource` block is `foreignKeys`. To switch to the `prisma` relation mode, add the `relationMode` field with a value of `prisma`, or update the `relationMode` field value to `prisma` if it already exists. @@ -254,6 +261,6 @@ When you switch the relation mode from `foreignKeys` to `prisma`, after you firs If you keep the same database, you can then continue to work as normal. If you switch to a database that does not support foreign keys at all, your existing migration history contains SQL DDL that creates foreign keys, which might trigger errors if you ever have to rerun these migrations. In this case, we recommend that you delete the `migrations` directory. (If you use PlanetScale, which does not support foreign keys, we generally recommend that you [use `db push` rather than Prisma Migrate](/orm/overview/databases/planetscale#differences-to-consider).) -### Switch from prisma to foreignKeys +### Switch from `prisma` to `foreignKeys` To switch from the `prisma` relation mode to the `foreignKeys` relation mode, update the `relationMode` field value from `prisma` to `foreignKeys`. To do this, the database must support foreign keys. When you apply changes to your schema with Prisma Migrate or `db push` for the first time after you switch relation modes, Prisma ORM will create foreign keys for all relations in the next migration. diff --git a/content/200-orm/100-prisma-schema/20-data-model/20-relations/500-troubleshooting-relations.mdx b/content/200-orm/100-prisma-schema/20-data-model/20-relations/500-troubleshooting-relations.mdx index 6fb1760839..9056c9dbc6 100644 --- a/content/200-orm/100-prisma-schema/20-data-model/20-relations/500-troubleshooting-relations.mdx +++ b/content/200-orm/100-prisma-schema/20-data-model/20-relations/500-troubleshooting-relations.mdx @@ -19,8 +19,10 @@ In the following implicit many-to-many self-relation, the lexicographic order of model Animal { id Int @id @default(autoincrement()) name String + //highlight-start a_eats Animal[] @relation(name: "FoodChain") b_eatenBy Animal[] @relation(name: "FoodChain") + //highlight-end } ``` @@ -79,8 +81,10 @@ Now change the order of the relation fields: model Animal { id Int @id @default(autoincrement()) name String + //highlight-start b_eats Animal[] @relation(name: "FoodChain") a_eatenBy Animal[] @relation(name: "FoodChain") + //highlight-end } ``` @@ -139,9 +143,9 @@ If you rename relation fields in an implicit many-to-many self-relations, make s ## How to use a relation table with a many-to-many relationship -There are a couple of ways to define a m-n relationship, implicitly or explicitly. Implicitly means letting Prisma ORM handle the relation table (JOIN table) under the hood, all you have to do is define an array/list for the non scalar types on each model, see [implicit many-to-many relations](many-to-many-relations#implicit-many-to-many-relations). +There are a couple of ways to define a m-n relationship, implicitly or explicitly. Implicitly means letting Prisma ORM handle the relation table (JOIN table) under the hood, all you have to do is define an array/list for the non scalar types on each model, see [implicit many-to-many relations](/orm/prisma-schema/data-model/relations/many-to-many-relations#implicit-many-to-many-relations). -Where you might run into trouble is when creating an [explicit m-n relationship](many-to-many-relations#explicit-many-to-many-relations), that is, to create and handle the relation table yourself. **It can be overlooked that Prisma ORM requires both sides of the relation to be present**. +Where you might run into trouble is when creating an [explicit m-n relationship](/orm/prisma-schema/data-model/relations/many-to-many-relations#explicit-many-to-many-relations), that is, to create and handle the relation table yourself. **It can be overlooked that Prisma ORM requires both sides of the relation to be present**. Take the following example, here a relation table is created to act as the JOIN between the `Post` and `Category` tables. This will not work however as the relation table (`PostCategories`) must form a 1-to-many relationship with the other two models respectively. @@ -181,7 +185,9 @@ This is because the relation model forms a 1-to-many relationship with the other model Post { id Int @id @default(autoincrement()) title String + //delete-next-line categories Category[] + //add-next-line postCategories PostCategories[] } @@ -197,12 +203,14 @@ model PostCategories { model Category { id Int @id @default(autoincrement()) name String + //delete-next-line posts Post[] + //add-next-line postCategories PostCategories[] } ``` -## Using the @relation attribute with a many-to-many relationship +## Using the `@relation` attribute with a many-to-many relationship It might seem logical to add a `@relation("Post")` annotation to a relation field on your model when composing an implicit many-to-many relationship. @@ -232,14 +240,18 @@ The following example is the correct way to define an implicit many-to-many rela model Post { id Int @id @default(autoincrement()) title String + //delete-next-line categories Category[] @relation("Category") + //add-next-line categories Category[] } model Category { id Int @id @default(autoincrement()) name String + //delete-next-line posts Post[] @relation("Post") + //add-next-line posts Post[] } ``` diff --git a/content/200-orm/100-prisma-schema/20-data-model/20-relations/index.mdx b/content/200-orm/100-prisma-schema/20-data-model/20-relations/index.mdx index 550743b1b8..4cda916ef6 100644 --- a/content/200-orm/100-prisma-schema/20-data-model/20-relations/index.mdx +++ b/content/200-orm/100-prisma-schema/20-data-model/20-relations/index.mdx @@ -11,39 +11,45 @@ A relation is a _connection_ between two models in the Prisma schema. For exampl The following Prisma schema defines a one-to-many relation between the `User` and `Post` models. The fields involved in defining the relation are highlighted: -, ]}> - + + ```prisma highlight=3,8,9;normal model User { id Int @id @default(autoincrement()) + //highlight-next-line posts Post[] } model Post { id Int @id @default(autoincrement()) + //highlight-start author User @relation(fields: [authorId], references: [id]) authorId Int // relation scalar field (used in the `@relation` attribute above) + //highlight-end } ``` - - + + ```prisma highlight=3,8,9;normal model User { id String @id @default(auto()) @map("_id") @db.ObjectId + //highlight-next-line posts Post[] } model Post { id String @id @default(auto()) @map("_id") @db.ObjectId + //highlight-start author User @relation(fields: [authorId], references: [id]) authorId String @db.ObjectId // relation scalar field (used in the `@relation` attribute above) + //highlight-end } ``` - + At a Prisma ORM level, the `User` / `Post` relation is made up of: @@ -125,12 +131,14 @@ If your model's ID is an `ObjectId` (represented by a `String` field), you must ```prisma highlight=3,9;normal model User { id String @id @default(auto()) @map("_id") @db.ObjectId + //highlight-next-line posts Post[] } model Post { id String @id @default(auto()) @map("_id") @db.ObjectId author User @relation(fields: [authorId], references: [id]) + //highlight-next-line authorId String @db.ObjectId // relation scalar field (used in the `@relation` attribute above) } ``` @@ -171,6 +179,7 @@ const getAuthor = await prisma.user.findUnique({ id: "20", }, include: { + //highlight-next-line | posts: true, // All posts where authorId == 20 }, }); @@ -211,9 +220,9 @@ In this query, the current value of `authorID` does not matter. The query change There are three different types (or [cardinalities]()) of relations in Prisma ORM: -- [One-to-one](one-to-one-relations) (also called 1-1 relations) -- [One-to-many](one-to-many-relations) (also called 1-n relations) -- [Many-to-many](many-to-many-relations) (also called m-n relations) +- [One-to-one](/orm/prisma-schema/data-model/relations/one-to-one-relations) (also called 1-1 relations) +- [One-to-many](/orm/prisma-schema/data-model/relations/one-to-many-relations) (also called 1-n relations) +- [Many-to-many](/orm/prisma-schema/data-model/relations/many-to-many-relations) (also called m-n relations) The following Prisma schema includes every type of relation: @@ -221,8 +230,8 @@ The following Prisma schema includes every type of relation: - one-to-many: `User` ↔ `Post` - many-to-many: `Post` ↔ `Category` -, ]}> - + + ```prisma model User { @@ -250,8 +259,8 @@ model Category { } ``` - - + + ```prisma model User { @@ -281,7 +290,7 @@ model Category { } ``` - + @@ -296,11 +305,11 @@ This example uses [implicit many-to-many relations](/orm/prisma-schema/data-mode -Notice that the syntax is slightly different between relational databases and MongoDB - particularly for [many-to-many relations](many-to-many-relations). +Notice that the syntax is slightly different between relational databases and MongoDB - particularly for [many-to-many relations](/orm/prisma-schema/data-model/relations/many-to-many-relations). For relational databases, the following entity relationship diagram represents the database that corresponds to the sample Prisma schema: -![The sample schema as an entity relationship diagram](sample-schema.png) +![The sample schema as an entity relationship diagram](./sample-schema.png) For MongoDB, Prisma ORM uses a [normalized data model design](https://docs.mongodb.com/manual/core/data-model-design/), which means that documents reference each other by ID in a similar way to relational databases. See [the MongoDB section](#mongodb) for more details. @@ -322,16 +331,17 @@ The implicit many-to-many relation still manifests in a relation table in the un If you use an implicit many-to-many relation instead of an explicit one, it makes the [Prisma Client API](/orm/prisma-client) simpler (because, for example, you have one fewer level of nesting inside of [nested writes](/orm/prisma-client/queries/relation-queries#nested-writes)). -If you're not using Prisma Migrate but obtain your data model from [introspection](/orm/prisma-schema/introspection), you can still make use of implicit many-to-many relations by following Prisma ORM's [conventions for relation tables](many-to-many-relations#conventions-for-relation-tables-in-implicit-m-n-relations). +If you're not using Prisma Migrate but obtain your data model from [introspection](/orm/prisma-schema/introspection), you can still make use of implicit many-to-many relations by following Prisma ORM's [conventions for relation tables](/orm/prisma-schema/data-model/relations/many-to-many-relations#conventions-for-relation-tables-in-implicit-m-n-relations). ## Relation fields -, ]}> Relation [fields](/orm/prisma-schema/data-model/models#defining-fields) are fields on a Prisma [model](/orm/prisma-schema/data-model/models#defining-models) that do _not_ have a [scalar type](/orm/prisma-schema/data-model/models#scalar-fields). Instead, their type is another model. Every relation must have exactly two relation fields, one on each model. In the case of one-to-one and one-to-many relations, an additional _relation scalar field_ is required which gets linked by one of the two relation fields in the `@relation` attribute. This relation scalar is the direct representation of the _foreign key_ in the underlying database. - + + + ```prisma model User { @@ -349,8 +359,8 @@ model Post { } ``` - - + + ```prisma model User { @@ -368,13 +378,13 @@ model Post { } ``` - + These models have the following fields: -, ]}> - + + | Model | Field | Relational | Relation field | | :----- | :--------- | :--------- | :--------------------------- | @@ -387,8 +397,8 @@ These models have the following fields: | | `authorId` | `Int` | No (_relation scalar field_) | | | `author` | `User` | **Yes** (_annotated_) | - - + + | Model | Field | Relational | Relation field | Notes | | :----- | :--------- | :--------- | :--------------------------- | -------------------------------------- | @@ -401,7 +411,7 @@ These models have the following fields: | | `authorId` | `String` | No (_relation scalar field_) | Underlying database type is `ObjectId` | | | `author` | `User` | **Yes** (_annotated_) | - + Both `posts` and `author` are relation fields because their types are not scalar types but other models. @@ -420,23 +430,23 @@ Relations that require one side of the relation to be _annotated_ with the `@rel The side of the relation which is annotated with the `@relation` attribute represents the side that **stores the foreign key in the underlying database**. The "actual" field that represents the foreign key is required on that side of the relation as well, it's called _relation scalar field_, and is referenced inside `@relation` attribute: -, ]}> - + + ```prisma author User @relation(fields: [authorId], references: [id]) authorId Int ``` - - + + ```prisma author User @relation(fields: [authorId], references: [id]) authorId String @db.ObjectId ``` - + A scalar field _becomes_ a relation scalar field when it's used in the `fields` of a `@relation` attribute. @@ -456,7 +466,7 @@ Because a relation scalar field always _belongs_ to a relation field, the follow - Relation field: `author` - Relation scalar field: `authorId` (relation field name + `Id`) -## The @relation attribute +## The `@relation` attribute The [`@relation`](/orm/reference/prisma-schema-reference#relation) attribute can only be applied to the [relation fields](#relation-fields), not to [scalar fields](/orm/prisma-schema/data-model/models#scalar-fields). @@ -464,20 +474,20 @@ The `@relation` attribute is required when: - you define a one-to-one or one-to-many relation, it is required on _one side_ of the relation (with the corresponding relation scalar field) - you need to disambiguate a relation (that's e.g. the case when you have two relations between the same models) -- you define a [self-relation](self-relations) -- you define [a many-to-many relation for MongoDB](many-to-many-relations#mongodb) +- you define a [self-relation](/orm/prisma-schema/data-model/relations/self-relations) +- you define [a many-to-many relation for MongoDB](/orm/prisma-schema/data-model/relations/many-to-many-relations#mongodb) - you need to control how the relation table is represented in the underlying database (e.g. use a specific name for a relation table) -> **Note**: [Implicit many-to-many relations](many-to-many-relations#implicit-many-to-many-relations) in relational databases do not require the `@relation` attribute. +> **Note**: [Implicit many-to-many relations](/orm/prisma-schema/data-model/relations/many-to-many-relations#implicit-many-to-many-relations) in relational databases do not require the `@relation` attribute. ## Disambiguating relations When you define two relations between the same two models, you need to add the `name` argument in the `@relation` attribute to disambiguate them. As an example for why that's needed, consider the following models: -, ]}> - + + -```prisma +```prisma no-copy // NOTE: This schema is intentionally incorrect. See below for a working solution. model User { @@ -497,10 +507,12 @@ model Post { } ``` - - + + + +```prisma no-copy +// NOTE: This schema is intentionally incorrect. See below for a working solution. -```prisma model User { id String @id @default(auto()) @map("_id") @db.ObjectId name String? @@ -518,7 +530,7 @@ model Post { } ``` - + In that case, the relations are ambiguous, there are four different ways to interpret them: @@ -530,8 +542,8 @@ In that case, the relations are ambiguous, there are four different ways to inte To disambiguate these relations, you need to annotate the relation fields with the `@relation` attribute and provide the `name` argument. You can set any `name` (except for the empty string `""`), but it must be the same on both sides of the relation: -, ]}> - + + ```prisma model User { @@ -551,8 +563,8 @@ model Post { } ``` - - + + ```prisma model User { @@ -572,7 +584,7 @@ model Post { } ``` - + + \ No newline at end of file diff --git a/content/200-orm/100-prisma-schema/20-data-model/30-indexes.mdx b/content/200-orm/100-prisma-schema/20-data-model/30-indexes.mdx index 77eaeaa5cd..f3ab7843e9 100644 --- a/content/200-orm/100-prisma-schema/20-data-model/30-indexes.mdx +++ b/content/200-orm/100-prisma-schema/20-data-model/30-indexes.mdx @@ -44,7 +44,7 @@ You can configure indexes, unique constraints, and primary key constraints with See the linked sections for details of which version each feature was first introduced in. -### Configuring the length of indexes with length (MySQL) +### Configuring the length of indexes with `length` (MySQL) The `length` argument is specific to MySQL and allows you to define indexes and constraints on columns of `String` and `Byte` types. For these types, MySQL requires you to specify a maximum length for the subpart of the value to be indexed in cases where the full value would exceed MySQL's limits for index sizes. See [the MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/innodb-limits.html) for more details. @@ -52,7 +52,7 @@ The `length` argument is available on the `@id`, `@@id`, `@unique`, `@@unique` a As an example, the following data model declares an `id` field with a maximum length of 3000 characters: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model Id { id String @id @db.VarChar(3000) } @@ -68,7 +68,7 @@ CREATE TABLE `Id` ( The `length` argument allows you to specify that only a subpart of the `id` value represents the primary key. In the example below, the first 100 characters are used: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model Id { id String @id(length: 100) @db.VarChar(3000) } @@ -80,7 +80,7 @@ Introspection will fetch these limits where they are present in your existing da The `length` argument can also be used on compound primary keys, using the `@@id` attribute, as in the example below: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model CompoundId { id_1 String @db.VarChar(3000) id_2 String @db.VarChar(3000) @@ -91,7 +91,7 @@ model CompoundId { A similar syntax can be used for the `@@unique` and `@@index` attributes. -### Configuring the index sort order with sort +### Configuring the index sort order with `sort` The `sort` argument is available for all databases supported by Prisma ORM. It allows you to specify the order that the entries of the index or constraint are stored in the database. This can have an effect on whether the database is able to use an index for specific queries. @@ -108,7 +108,7 @@ CREATE TABLE `Unique` ( is now introspected as -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model Unique { unique Int @unique(sort: Desc) } @@ -116,7 +116,7 @@ model Unique { The `sort` argument can also be used on compound indexes: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model CompoundUnique { unique_1 Int unique_2 Int @@ -125,11 +125,11 @@ model CompoundUnique { } ``` -### Example: using sort and length together +### Example: using `sort` and `length` together The following example demonstrates the use of the `sort` and `length` arguments to configure indexes and constraints for a `Post` model: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model Post { title String @db.VarChar(300) abstract String @db.VarChar(3000) @@ -142,7 +142,7 @@ model Post { } ``` -### Configuring the access type of indexes with type (PostgreSQL) +### Configuring the access type of indexes with `type` (PostgreSQL) The `type` argument is available for configuring the index type in PostgreSQL with the `@@index` attribute. The index access methods available are `Hash`, `Gist`, `Gin`, `SpGist` and `Brin`, as well as the default `BTree` index access method. The `type` argument is generally available in versions 4.0.0 and later. The `Hash` index access method is available as part of the `extendedIndexes` preview feature in versions 3.6.0 and later, and the `Gist`, `Gin`, `SpGist` and `Brin` index access methods are available in preview in versions 3.14.0 and later. @@ -152,7 +152,7 @@ The `Hash` type will store the index data in a format that is much faster to sea As an example, the following model adds an index with a `type` of `Hash` to the `value` field: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model Example { id Int @id value Int @@ -186,7 +186,7 @@ Indexes using a function (such as `to_tsvector`) to determine the indexed value As an example, the following model adds a `Gin` index to the `value` field, with `JsonbPathOps` as the class of operators allowed to use the index: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model Example { id Int @id value Json @@ -235,7 +235,7 @@ The GiST index type is used for implementing indexing schemes for user-defined t As an example, the following model adds a `Gist` index to the `value` field with `InetOps` as the operators that will be using the index: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model Example { id Int @id value String @db.Inet @@ -280,7 +280,7 @@ As with GiST, SP-GiST is important as a building block for user-defined types, a As an example, the following model adds a `SpGist` index to the `value` field with `TextOps` as the operators using the index: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model Example { id Int @id value String @@ -326,7 +326,7 @@ The BRIN index type is useful if you have lots of data that does not change afte As an example, the following model adds a `Brin` index to the `value` field with `Int4BloomOps` as the operators that will be using the index: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model Example { id Int @id value Int @@ -414,13 +414,13 @@ The default operator class (marked with ✅) can be omitted from the index defin Read more about built-in operator classes in the [official PostgreSQL documentation](https://www.postgresql.org/docs/14/brin-builtin-opclasses.html). -### Configuring if indexes are clustered or non-clustered with clustered (SQL Server) +### Configuring if indexes are clustered or non-clustered with `clustered` (SQL Server) The `clustered` argument is available to configure (non)clustered indexes in SQL Server. It can be used on the `@id`, `@@id`, `@unique`, `@@unique` and `@@index` attributes. It is generally available in versions 4.0.0 and later, and available as part of the `extendedIndexes` preview feature in versions 3.13.0 and later. As an example, the following model configures the `@id` to be non-clustered (instead of the clustered default): -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model Example { id Int @id(clustered: false) value Int @@ -476,11 +476,11 @@ For now we do not enable the full text search commands in Prisma Client for Mong -### Enabling the fullTextIndex preview feature +### Enabling the `fullTextIndex` preview feature To enable the `fullTextIndex` preview feature, add the `fullTextIndex` feature flag to the `generator` block of the `schema.prisma` file: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers generator client { provider = "prisma-client-js" previewFeatures = ["fullTextIndex"] @@ -491,7 +491,7 @@ generator client { The following example demonstrates adding a `@@fulltext` index to the `title` and `content` fields of a `Post` model: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model Post { id Int @id title String @db.VarChar(255) @@ -503,7 +503,7 @@ model Post { On MongoDB, you can use the `@@fulltext` index attribute (via the `fullTextIndex` preview feature) with the `sort` argument to add fields to your full-text index in ascending or descending order. The following example adds a `@@fulltext` index to the `title` and `content` fields of the `Post` model, and sorts the `title` field in descending order: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers generator js { provider = "prisma-client-js" previewFeatures = ["fullTextIndex"] diff --git a/content/200-orm/100-prisma-schema/20-data-model/40-views.mdx b/content/200-orm/100-prisma-schema/20-data-model/40-views.mdx index 6bef15664a..0fcb9a4008 100644 --- a/content/200-orm/100-prisma-schema/20-data-model/40-views.mdx +++ b/content/200-orm/100-prisma-schema/20-data-model/40-views.mdx @@ -3,7 +3,7 @@ title: 'Views' metaTitle: 'How to include views in your Prisma schema' metaDescription: 'How to include views in your Prisma schema' hidePage: false -preview: true +sidebar_class_name: preview-badge tocDepth: 3 --- @@ -26,13 +26,14 @@ The `views` preview feature allows you to represent views in your Prisma schema -## Enable the views preview feature +## Enable the `views` preview feature Support for views is currently in an early preview. To enable the `views` preview feature, add the `views` feature flag to the `previewFeatures` field of the `generator` block in your Prisma schema file: -```prisma file=schema.prisma highlight=3;add +```prisma file=schema.prisma highlight=3;add showLineNumbers generator client { provider = "prisma-client-js" + //add-next-line previewFeatures = ["views"] } ``` @@ -45,8 +46,8 @@ Currently, you cannot apply views that you define in your Prisma schema to your For example, take the following Prisma schema with a `User` model and a related `Profile` model: -, ]}> - + + ```prisma model User { @@ -64,8 +65,8 @@ model Profile { } ``` - - + + ```prisma model User { @@ -83,7 +84,7 @@ model Profile { } ``` - + Next, take a `UserInfo` view in the underlying database that combines the `email` and `name` fields from the `User` model and the `bio` field from the `Profile` model. @@ -121,7 +122,7 @@ db.createView('UserInfo', 'User', [ ]) ``` -## Use views with Prisma Migrate and db push +## Use views with Prisma Migrate and `db push` If you apply changes to your Prisma schema with Prisma Migrate or `db push`, Prisma ORM does not create or run any SQL related to views. @@ -135,8 +136,8 @@ You can represent the `UserInfo` view from the example above in your Prisma sche -, ]}> - + + ```prisma view UserInfo { @@ -147,8 +148,8 @@ view UserInfo { } ``` - - + + ```prisma view UserInfo { @@ -159,7 +160,7 @@ view UserInfo { } ``` - + @@ -195,33 +196,37 @@ The properties of a view are called _fields_, which consist of: The fields of the `UserInfo` example view can be defined as follows: -, ]}> - + + ```prisma highlight=2-5;normal view UserInfo { + //highlight-start id Int @unique email String name String bio String + //highlight-end } ``` - - + + ```prisma highlight=2-5;normal view UserInfo { + //highlight-start id String @id @default(auto()) @map("_id") @db.ObjectId email String name String bio String + //highlight-end } ``` - + Each _field_ of a `view` block represents a column in the query results of the view in the underlying database. @@ -278,15 +283,20 @@ In order to make this `view` block valid you will need to: ```prisma highlight=4;add|1,3,8,9;delete +//delete-next-line /// The underlying view does not contain a valid unique identifier and can therefore currently not be handled by Prisma Client. view UserInfo { + //delete-next-line id Int? + //add-next-line id Int @unique email String? name String? bio String? + //delete-start @@ignore + //delete-end } ``` diff --git a/content/200-orm/100-prisma-schema/20-data-model/50-database-mapping.mdx b/content/200-orm/100-prisma-schema/20-data-model/50-database-mapping.mdx index 9c4f230645..2d1e8fcb75 100644 --- a/content/200-orm/100-prisma-schema/20-data-model/50-database-mapping.mdx +++ b/content/200-orm/100-prisma-schema/20-data-model/50-database-mapping.mdx @@ -40,6 +40,7 @@ However, you can still choose `Comment` as the name of the model (e.g. to follow model Comment { // Fields + //highlight-next-line @@map("comments") } ``` @@ -52,9 +53,11 @@ You can also [`@map`](/orm/reference/prisma-schema-reference#map) a column/field ```prisma highlight=2-4;normal model Comment { + //highlight-start content String @map("comment_text") email String @map("commenter_email") type Enum @map("comment_type") + //highlight-end @@map("comments") } @@ -69,8 +72,10 @@ You can also `@map` an enum value, or `@@map` an enum: ```prisma highlight=3,5;normal enum Type { Blog, + //highlight-next-line Twitter @map("comment_twitter") + //highlight-next-line @@map("comment_source_enum") } ``` @@ -81,7 +86,7 @@ You can optionally use the `map` argument to explicitly define the **underlying When introspecting a database, the `map` argument will _only_ be rendered in the schema if the name _differs_ from Prisma ORM's [default constraint naming convention for indexes and constraints](#prisma-orms-default-naming-conventions-for-indexes-and-constraints). - + If you use Prisma Migrate in a version earlier than 2.29.0 and want to maintain your existing constraint and index names after upgrading to a newer version, **do not** immediately run `prisma migrate` or `prisma db push`. This will **change any underlying constraint name that does not follow Prisma ORM's convention**. Follow the [upgrade path that allows you to maintain existing constraint and index names](/orm/more/upgrade-guides/upgrading-versions/upgrading-to-prisma-3/named-constraints#option-1-i-want-to-maintain-my-existing-constraint-and-index-names). @@ -102,10 +107,10 @@ Prisma ORM always uses the database names of entities when generating the defaul | Entity | Convention | Example | | ----------------- | --------------------------------- | ------------------------------ | -| Primary Key | {tablename}\_pkey | `User_pkey` | -| Unique Constraint | {tablename}\_{column_names}\_key | `User_firstName_last_Name_key` | -| Non-Unique Index | {tablename}\_{column_names}\_idx | `User_age_idx` | -| Foreign Key | {tablename}\_{column_names}\_fkey | `User_childName_fkey` | +| Primary Key | \{tablename}\_pkey | `User_pkey` | +| Unique Constraint | \{tablename}\_\{column_names}\_key | `User_firstName_last_Name_key` | +| Non-Unique Index | \{tablename}\_\{column_names}\_idx | `User_age_idx` | +| Foreign Key | \{tablename}\_\{column_names}\_fkey | `User_childName_fkey` | Since most databases have a length limit for entity names, the names will be trimmed if necessary to not violate the database limits. We will shorten the part before the `_suffix` as necessary so that the full name is at most the maximum length permitted. @@ -121,17 +126,21 @@ The following schema defines three constraints (`@id`, `@unique`, and `@relation ```prisma highlight=2,8,11,13;normal model User { + //highlight-next-line id Int @id @default(autoincrement()) name String @unique posts Post[] } model Post { + //highlight-next-line id Int @id @default(autoincrement()) title String authorName String @default("Anonymous") + //highlight-next-line author User? @relation(fields: [authorName], references: [name]) + //highlight-next-line @@index([title, authorName]) } ``` @@ -156,17 +165,21 @@ The following example adds custom names to one `@id` and the `@@index`: ```prisma highlight=2,13;normal model User { + //highlight-next-line id Int @id(map: "Custom_Primary_Key_Constraint_Name") @default(autoincrement()) name String @unique posts Post[] } model Post { + //highlight-next-line id Int @id @default(autoincrement()) title String authorName String @default("Anonymous") + //highlight-next-line author User? @relation(fields: [authorName], references: [name]) + //highlight-next-line @@index([title, authorName], map: "My_Custom_Index_Name") } ``` @@ -213,6 +226,7 @@ Specifying `@@id([firstName, lastName], name: "fullName")` will change the Prism ```ts highlight=3;edit const user = await prisma.user.findUnique({ where: { + //edit-next-line fullName: { firstName: 'Paul', lastName: 'Panther', diff --git a/content/200-orm/100-prisma-schema/20-data-model/60-multi-schema.mdx b/content/200-orm/100-prisma-schema/20-data-model/60-multi-schema.mdx index 4d2bb4fb94..2561116c77 100644 --- a/content/200-orm/100-prisma-schema/20-data-model/60-multi-schema.mdx +++ b/content/200-orm/100-prisma-schema/20-data-model/60-multi-schema.mdx @@ -26,13 +26,14 @@ This guide explains how to: -## How to enable the multiSchema preview feature +## How to enable the `multiSchema` preview feature Multi-schema support is currently in preview. To enable the `multiSchema` preview feature, add the `multiSchema` feature flag to the `previewFeatures` field of the `generator` block in your Prisma schema file: -```prisma file=schema.prisma highlight=3;add +```prisma file=schema.prisma highlight=3;add showLineNumbers generator client { provider = "prisma-client-js" + //add-next-line previewFeatures = ["multiSchema"] } @@ -46,7 +47,7 @@ datasource db { To use multiple database schemas in your Prisma schema file, add the names of your database schemas to an array in the `schemas` field, in the `datasource` block. The following example adds a `"base"` and a `"transactional"` schema: -```prisma file=schema.prisma highlight=9;add +```prisma file=schema.prisma highlight=9;add showLineNumbers generator client { provider = "prisma-client-js" previewFeatures = ["multiSchema"] @@ -55,6 +56,7 @@ generator client { datasource db { provider = "postgresql" url = env("DATABASE_URL") + //add-next-line schemas = ["base", "transactional"] } ``` @@ -63,11 +65,12 @@ You do not need to change your connection string. The `schema` value of your con To designate that a model or enum belongs to a specific database schema, add the `@@schema` attribute with the name of the database schema as a parameter. In the following example, the `User` model is part of the `"base"` schema, and the `Order` model and `Size` enum are part of the `"transactional"` schema: -```prisma file=schema.prisma highlight=5,13;add +```prisma file=schema.prisma highlight=5,13;add showLineNumbers model User { id Int @id orders Order[] + //add-next-line @@schema("base") } @@ -76,6 +79,7 @@ model Order { user User @relation(fields: [id], references: [id]) user_id Int + //add-next-line @@schema("transactional") } @@ -94,7 +98,7 @@ If you have tables with the same name in different database schemas, you will ne For example, consider a situation where the `config` table in the `base` database schema has the same name as the `config` table in the `users` database schema. To avoid name conflicts, give the models in your Prisma schema unique names (`BaseConfig` and `UserConfig`) and use the `@@map` attribute to map each model to the corresponding table name: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model BaseConfig { id Int @id @@ -110,21 +114,23 @@ model UserConfig { } ``` -## How to apply your schema changes with Prisma Migrate and db push +## How to apply your schema changes with Prisma Migrate and `db push` You can use Prisma Migrate or `db push` to apply changes to a Prisma schema with multiple database schemas. As an example, add a `Profile` model to the `base` schema of the blog post model above: -```prisma file=schema.prisma highlight=4,9-16;add +```prisma file=schema.prisma highlight=4,9-16;add showLineNumbers model User { id Int @id orders Order[] + //add-next-line profile Profile? @@schema("base") } +//add-start model Profile { id Int @id @default(autoincrement()) bio String @@ -133,6 +139,7 @@ model Profile { @@schema("base") } +//add-end model Order { id Int @id @@ -185,6 +192,6 @@ const orders = await prisma.order.findMany({ }) ``` -## Learn more about the multiSchema preview feature +## Learn more about the `multiSchema` preview feature To learn more about future plans for the `multiSchema` preview feature, or to give feedback, refer to [our Github issue](https://github.com/prisma/prisma/issues/1122). diff --git a/content/200-orm/100-prisma-schema/20-data-model/70-unsupported-database-features.mdx b/content/200-orm/100-prisma-schema/20-data-model/70-unsupported-database-features.mdx index 9f4a709645..7fe3b50b5c 100644 --- a/content/200-orm/100-prisma-schema/20-data-model/70-unsupported-database-features.mdx +++ b/content/200-orm/100-prisma-schema/20-data-model/70-unsupported-database-features.mdx @@ -2,6 +2,7 @@ title: 'Unsupported database features' metaDescription: How to support database features that do not have an equivalent syntax in Prisma Schema Language. tocDepth: 2 +toc_max_heading_level: 2 --- @@ -53,15 +54,17 @@ To use a PostgreSQL extension, you must first install it on the file system of y In Prisma ORM versions 4.5.0 and later, you can then activate the extension by declaring it in your Prisma schema with the [`postgresqlExtensions` preview feature](/orm/prisma-schema/postgresql-extensions): -```prisma file=schema.prisma highlight=3,9;add +```prisma file=schema.prisma highlight=3,9;add showLineNumbers generator client { provider = "prisma-client-js" + //add-next-line previewFeatures = ["postgresqlExtensions"] } datasource db { provider = "postgresql" url = env("DATABASE_URL") + //add-next-line extensions = [pgcrypto] } ``` @@ -88,6 +91,7 @@ Some database types of relational databases, such as `polygon` or `geometry`, do ```prisma highlight=3;normal model Star { id Int @id @default(autoincrement()) + //highlight-next-line position Unsupported("circle")? @default(dbgenerated("'<(10,4),11>'::circle")) } ``` diff --git a/content/200-orm/100-prisma-schema/20-data-model/80-table-inheritance.mdx b/content/200-orm/100-prisma-schema/20-data-model/80-table-inheritance.mdx index eb8c6cd1e3..093cfa1481 100644 --- a/content/200-orm/100-prisma-schema/20-data-model/80-table-inheritance.mdx +++ b/content/200-orm/100-prisma-schema/20-data-model/80-table-inheritance.mdx @@ -41,7 +41,7 @@ For example, if both the `Video` and `Article` models from above should have a s In a simple Prisma schema, this would look as follows. Note that we're adding a `User` model as well to illustrate how this can work with relations: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model Video { id Int @id url String @unique diff --git a/content/200-orm/100-prisma-schema/20-data-model/index.mdx b/content/200-orm/100-prisma-schema/20-data-model/index.mdx index c1e95ce4c4..ba1ec9f4d5 100644 --- a/content/200-orm/100-prisma-schema/20-data-model/index.mdx +++ b/content/200-orm/100-prisma-schema/20-data-model/index.mdx @@ -2,7 +2,7 @@ title: 'Data model' metaTitle: 'Data model' metaDescription: 'Learn everything you need about the Prisma schema data model.' -toc: false +hide_table_of_contents: true --- ## In this section diff --git a/content/200-orm/100-prisma-schema/50-introspection.mdx b/content/200-orm/100-prisma-schema/50-introspection.mdx index ee4d3618e5..f382a8814a 100644 --- a/content/200-orm/100-prisma-schema/50-introspection.mdx +++ b/content/200-orm/100-prisma-schema/50-introspection.mdx @@ -18,7 +18,7 @@ However, it can also be [used _repeatedly_ in an application](#introspection-wit Introspection has one main function: Populate your Prisma schema with a data model that reflects the current database schema. -![Introspect your database with Prisma](../../doc-images/prisma-db-pull-generate-schema.png) +![Introspect your database with Prisma](/img/orm/prisma-db-pull-generate-schema.png) Here's an overview of its main functions on SQL databases: @@ -63,7 +63,7 @@ The typical workflow for projects that are not using Prisma Migrate, but instead Note that as you evolve the application, [this process can be repeated for an indefinite number of times](#introspection-with-an-existing-schema). -![Introspect workflow](../../doc-images/prisma-evolve-app-workflow.png) +![Introspect workflow](/img/orm/prisma-evolve-app-workflow.png) ## Rules and conventions diff --git a/content/200-orm/100-prisma-schema/80-postgresql-extensions.mdx b/content/200-orm/100-prisma-schema/80-postgresql-extensions.mdx index 60ecce7455..d2e9e9985e 100644 --- a/content/200-orm/100-prisma-schema/80-postgresql-extensions.mdx +++ b/content/200-orm/100-prisma-schema/80-postgresql-extensions.mdx @@ -2,7 +2,7 @@ title: 'PostgreSQL extensions' metaTitle: 'How to represent PostgreSQL extensions in your Prisma schema' metaDescription: 'How to represent PostgreSQL extensions in your Prisma scheme, introspect extensions in your database, and apply changes to extensions with Prisma Migrate' -preview: true +sidebar_class_name: preview-badge tocDepth: 3 --- @@ -32,13 +32,14 @@ Note that PostgreSQL's documentation uses the term 'install' to refer to what we Prisma's `postgresqlExtensions` preview feature allows you to represent PostgreSQL extensions in your Prisma schema. Note that specific extensions may add functionality that is not currently supported by Prisma. For example, an extension may add a type or index that is not supported by Prisma. This functionality must be implemented on a case-by-case basis and is not provided by this preview feature. -## How to enable the postgresqlExtensions preview feature +## How to enable the `postgresqlExtensions` preview feature Representing PostgreSQL extensions in your Prisma schema is currently a preview feature. To enable the `postgresqlExtensions` preview feature, you will need to add the `postgresqlExtensions` feature flag to the `previewFeatures` field of the `generator` block in your Prisma schema file: -```prisma file=schema.prisma highlight=3;add +```prisma file=schema.prisma highlight=3;add showLineNumbers generator client { provider = "prisma-client-js" + //add-next-line previewFeatures = ["postgresqlExtensions"] } @@ -52,7 +53,7 @@ datasource db { To represent PostgreSQL extensions in your Prisma schema, add the `extensions` field to the `datasource` block of your `schema.prisma` file with an array of the extensions that you require. For example, the following schema lists the `hstore`, `pg_trgm` and `postgis` extensions: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers datasource db { provider = "postgresql" url = env("DATABASE_URL") @@ -70,7 +71,7 @@ In the example above, the `hstore` extension uses the `myHstoreSchema` schema, a The `map` argument is useful when the PostgreSQL extension that you want to activate has a name that is not a valid identifier in the Prisma schema. For example, the `uuid-ossp` PostgreSQL extension name is an invalid identifier because it contains a hyphen. In the following example, the extension is mapped to the valid name `uuidOssp` in the Prisma schema: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers datasource db { provider = "postgresql" url = env("DATABASE_URL") diff --git a/content/200-orm/100-prisma-schema/_category_.json b/content/200-orm/100-prisma-schema/_category_.json new file mode 100644 index 0000000000..2cf70ba2bd --- /dev/null +++ b/content/200-orm/100-prisma-schema/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Prisma Schema", + "collapsible": false, + "collapsed": false +} \ No newline at end of file diff --git a/content/200-orm/100-prisma-schema/index.mdx b/content/200-orm/100-prisma-schema/index.mdx index 4ab105016c..045a1f3687 100644 --- a/content/200-orm/100-prisma-schema/index.mdx +++ b/content/200-orm/100-prisma-schema/index.mdx @@ -3,7 +3,7 @@ title: 'Prisma schema' metaTitle: 'Prisma schema' metaDescription: 'Learn everything you need to know about the Prisma schema.' staticLink: true -toc: false +hide_table_of_contents: true --- ## In this section diff --git a/content/200-orm/200-prisma-client/000-setup-and-configuration/005-introduction.mdx b/content/200-orm/200-prisma-client/000-setup-and-configuration/005-introduction.mdx index 03f9e72d59..a8122541ce 100644 --- a/content/200-orm/200-prisma-client/000-setup-and-configuration/005-introduction.mdx +++ b/content/200-orm/200-prisma-client/000-setup-and-configuration/005-introduction.mdx @@ -4,32 +4,37 @@ metaTitle: 'Introduction to Prisma Client' metaDescription: 'Learn how to set up Prisma Client.' --- +import { + Icon +} from '@site/src/components/Icon'; + Prisma Client is an auto-generated and type-safe query builder that's _tailored_ to your data. The easiest way to get started with Prisma Client is by following the **[Quickstart](/getting-started/quickstart)**. - + + Quickstart (5 min) - + The setup instructions [below](#set-up) provide a high-level overview of the steps needed to set up Prisma Client. If you want to get started using Prisma Client with your own database, follow one of these guides: - + Set up a new project from scratch - +

- - Add Prisma ORM to an existing project - + + Add Prisma to an existing project +
@@ -39,7 +44,7 @@ The setup instructions [below](#set-up) provide a high-level overview of the ste In order to set up Prisma Client, you need a [Prisma schema file](/orm/prisma-schema) with your database connection, the Prisma Client generator, and at least one model: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers datasource db { url = env("DATABASE_URL") provider = "postgresql" @@ -78,9 +83,9 @@ This command also runs the `prisma generate` command, which generates Prisma Cli There are multiple ways to import Prisma Client in your project depending on your use case: -, ]}> + - + ```ts import { PrismaClient } from '@prisma/client' @@ -89,9 +94,9 @@ const prisma = new PrismaClient() // use `prisma` in your application to read and write data in your DB ``` - + - + ```js const { PrismaClient } = require('@prisma/client') @@ -100,15 +105,15 @@ const prisma = new PrismaClient() // use `prisma` in your application to read and write data in your DB ``` - + For edge environments, you can import Prisma Client as follows: -, ]}> + - + ```ts import { PrismaClient } from '@prisma/client/edge' @@ -117,9 +122,9 @@ const prisma = new PrismaClient() // use `prisma` in your application to read and write data in your DB ``` - + - + ```js const { PrismaClient } = require('@prisma/client/edge') @@ -128,7 +133,7 @@ const prisma = new PrismaClient() // use `prisma` in your application to read and write data in your DB ``` - + diff --git a/content/200-orm/200-prisma-client/000-setup-and-configuration/010-generating-prisma-client.mdx b/content/200-orm/200-prisma-client/000-setup-and-configuration/010-generating-prisma-client.mdx index 132de2750b..e8eba9580b 100644 --- a/content/200-orm/200-prisma-client/000-setup-and-configuration/010-generating-prisma-client.mdx +++ b/content/200-orm/200-prisma-client/000-setup-and-configuration/010-generating-prisma-client.mdx @@ -38,29 +38,29 @@ To generate and instantiate Prisma Client: prisma generate ``` -1. You can now [instantiate Prisma Client](instantiate-prisma-client) in your code: +1. You can now [instantiate Prisma Client](/orm/prisma-client/setup-and-configuration/instantiate-prisma-client) in your code: - , ]}> + - + - ```ts - import { PrismaClient } from '@prisma/client' - const prisma = new PrismaClient() - // use `prisma` in your application to read and write data in your DB - ``` + ```ts + import { PrismaClient } from '@prisma/client' + const prisma = new PrismaClient() + // use `prisma` in your application to read and write data in your DB + ``` - + - + - ```js - const { PrismaClient } = require('@prisma/client') - const prisma = new PrismaClient() - // use `prisma` in your application to read and write data in your DB - ``` + ```js + const { PrismaClient } = require('@prisma/client') + const prisma = new PrismaClient() + // use `prisma` in your application to read and write data in your DB + ``` - + @@ -68,7 +68,7 @@ To generate and instantiate Prisma Client: Here is a graphical illustration of the typical workflow for generation of Prisma Client: -![Graphical illustration of the typical workflow for generation of Prisma Client](prisma-client-generation-workflow.png) +![Graphical illustration of the typical workflow for generation of Prisma Client](./prisma-client-generation-workflow.png) Note also that `prisma generate` is _automatically_ invoked when you're installing the `@prisma/client` npm package. So, when you're initially setting up Prisma Client, you can typically save the third step from the list above. @@ -95,7 +95,7 @@ import { PrismaClient } from '@prisma/client' Prisma Client is generated from your Prisma schema and is unique to your project. Each time you change the schema (for example, by performing a [schema migration](/orm/prisma-migrate)) and run `prisma generate`, Prisma Client's code changes: -![The .prisma and @prisma folders](prisma-client-node-module.png) +![The .prisma and @prisma folders](./prisma-client-node-module.png) The `.prisma` folder is unaffected by [pruning](https://docs.npmjs.com/cli/prune.html) in Node.js package managers. diff --git a/content/200-orm/200-prisma-client/000-setup-and-configuration/015-instantiate-prisma-client.mdx b/content/200-orm/200-prisma-client/000-setup-and-configuration/015-instantiate-prisma-client.mdx index 45ff651ab0..7236904d78 100644 --- a/content/200-orm/200-prisma-client/000-setup-and-configuration/015-instantiate-prisma-client.mdx +++ b/content/200-orm/200-prisma-client/000-setup-and-configuration/015-instantiate-prisma-client.mdx @@ -7,11 +7,11 @@ tocDepth: 3 -The following example demonstrates how to import and instantiate your [generated client](generating-prisma-client) from the [default path](generating-prisma-client#using-a-custom-output-path): +The following example demonstrates how to import and instantiate your [generated client](/orm/prisma-client/setup-and-configuration/generating-prisma-client) from the [default path](/orm/prisma-client/setup-and-configuration/generating-prisma-client#using-a-custom-output-path): -, ]}> + - + ```ts import { PrismaClient } from '@prisma/client' @@ -19,9 +19,9 @@ import { PrismaClient } from '@prisma/client' const prisma = new PrismaClient() ``` - + - + ```js const { PrismaClient } = require('@prisma/client') @@ -29,15 +29,15 @@ const { PrismaClient } = require('@prisma/client') const prisma = new PrismaClient() ``` - + - +:::tip -You can further customize `PrismaClient` with [constructor parameters](/orm/reference/prisma-client-reference#prismaclient) — for example, set [logging levels](/orm/prisma-client/observability-and-logging/logging), [transaction options](/orm/prisma-client/queries/transactions#transaction-options) or customize [error formatting](error-formatting). +You can further customize `PrismaClient` with [constructor parameters](/orm/reference/prisma-client-reference#prismaclient) — for example, set [logging levels](/orm/prisma-client/observability-and-logging/logging), [transaction options](/orm/prisma-client/queries/transactions#transaction-options) or customize [error formatting](/orm/prisma-client/setup-and-configuration/error-formatting). - +::: diff --git a/content/200-orm/200-prisma-client/000-setup-and-configuration/050-databases-connections/100-connection-management.mdx b/content/200-orm/200-prisma-client/000-setup-and-configuration/050-databases-connections/100-connection-management.mdx index bf70b7c253..023aba982d 100644 --- a/content/200-orm/200-prisma-client/000-setup-and-configuration/050-databases-connections/100-connection-management.mdx +++ b/content/200-orm/200-prisma-client/000-setup-and-configuration/050-databases-connections/100-connection-management.mdx @@ -12,17 +12,17 @@ tocDepth: 3 - [`$connect()`](/orm/reference/prisma-client-reference#connect-1) - [`$disconnect()`](/orm/reference/prisma-client-reference#disconnect-1) -In most cases, you **do not need to explicitly call these methods**. `PrismaClient` automatically connects when you run your first query, creates a [connection pool](connection-pool), and disconnects when the Node.js process ends. +In most cases, you **do not need to explicitly call these methods**. `PrismaClient` automatically connects when you run your first query, creates a [connection pool](/orm/prisma-client/setup-and-configuration/databases-connections/connection-pool), and disconnects when the Node.js process ends. See the [connection management guide](/orm/prisma-client/setup-and-configuration/databases-connections) for information about managing connections for different deployment paradigms (long-running processes and serverless functions).
-## $connect() +## `$connect()` It is not necessary to call [`$connect()`](/orm/reference/prisma-client-reference#connect-1) thanks to the _lazy connect_ behavior: The `PrismaClient` instance connects lazily when the first request is made to the API (`$connect()` is called for you under the hood). -### Calling $connect() explicitly +### Calling `$connect()` explicitly If you need the first request to respond instantly and cannot wait for a lazy connection to be established, you can explicitly call `prisma.$connect()` to establish a connection to the data source: @@ -33,7 +33,7 @@ const prisma = new PrismaClient() await prisma.$connect() ``` -## $disconnect() +## `$disconnect()` When you call [`$disconnect()`](/orm/reference/prisma-client-reference#disconnect-1) , Prisma Client: @@ -42,13 +42,13 @@ When you call [`$disconnect()`](/orm/reference/prisma-client-reference#disconnec In a long-running application such as a GraphQL API, which constantly serves requests, it does not make sense to `$disconnect()` after each request - it takes time to establish a connection, and doing so as part of each request will slow down your application. - +:::tip To avoid too _many_ connections in a long-running application, we recommend that you [use a single instance of `PrismaClient` across your application](/orm/prisma-client/setup-and-configuration/instantiate-prisma-client#the-number-of-prismaclient-instances-matters). - +::: -### Calling $disconnect() explicitly +### Calling `$disconnect()` explicitly One scenario where you should call `$disconnect()` explicitly is where a script: diff --git a/content/200-orm/200-prisma-client/000-setup-and-configuration/050-databases-connections/115-connection-pool.mdx b/content/200-orm/200-prisma-client/000-setup-and-configuration/050-databases-connections/115-connection-pool.mdx index 858cba7ae6..b9550e61e4 100644 --- a/content/200-orm/200-prisma-client/000-setup-and-configuration/050-databases-connections/115-connection-pool.mdx +++ b/content/200-orm/200-prisma-client/000-setup-and-configuration/050-databases-connections/115-connection-pool.mdx @@ -2,13 +2,14 @@ title: Connection pool metaDescription: Prisma ORM's query engine creates a connection pool to store and manage database connections. tocDepth: 4 +toc_max_heading_level: 4 --- The query engine manages a **connection pool** of database connections. The pool is created when Prisma Client opens the _first_ connection to the database, which can happen in one of two ways: -- By [explicitly calling `$connect()`](connection-management#connect) _or_ +- By [explicitly calling `$connect()`](/orm/prisma-client/setup-and-configuration/databases-connections/connection-management#connect) _or_ - By running the first query, which calls `$connect()` under the hood Relational database connectors use Prisma ORM's own connection pool, and the MongoDB connectors uses the [MongoDB driver connection pool](https://github.com/mongodb/specifications/blob/master/source/connection-monitoring-and-pooling/connection-monitoring-and-pooling.rst). diff --git a/content/200-orm/200-prisma-client/000-setup-and-configuration/050-databases-connections/200-pgbouncer.mdx b/content/200-orm/200-prisma-client/000-setup-and-configuration/050-databases-connections/200-pgbouncer.mdx index fecd54f826..c9c3252ad6 100644 --- a/content/200-orm/200-prisma-client/000-setup-and-configuration/050-databases-connections/200-pgbouncer.mdx +++ b/content/200-orm/200-prisma-client/000-setup-and-configuration/050-databases-connections/200-pgbouncer.mdx @@ -1,6 +1,7 @@ --- title: Configure Prisma Client with PgBouncer metaTitle: Configure Prisma Client with PgBouncer +toc_max_heading_level: 2 --- @@ -19,7 +20,7 @@ For Prisma Client to work reliably, PgBouncer must run in [**Transaction mode**] Transaction mode offers a connection for every transaction – a requirement for the Prisma Client to work with PgBouncer. -### Add pgbouncer=true to the connection URL +### Add `pgbouncer=true` to the connection URL To use Prisma Client with PgBouncer, add the `?pgbouncer=true` flag to the PostgreSQL connection URL: diff --git a/content/200-orm/200-prisma-client/000-setup-and-configuration/050-databases-connections/index.mdx b/content/200-orm/200-prisma-client/000-setup-and-configuration/050-databases-connections/index.mdx index 89228fc79f..6300e35327 100644 --- a/content/200-orm/200-prisma-client/000-setup-and-configuration/050-databases-connections/index.mdx +++ b/content/200-orm/200-prisma-client/000-setup-and-configuration/050-databases-connections/index.mdx @@ -49,14 +49,14 @@ If you have **multiple** application instances: - You must **manually** [set the `connection_limit` parameter](/orm/prisma-client/setup-and-configuration/databases-connections/connection-pool#setting-the-connection-pool-size) . For example, if your calculated pool size is _10_ and you have _2_ instances of your app, the `connection_limit` parameter should be **no more than _5_**. - You can optionally [tune the pool size](#optimizing-the-connection-pool). -### PrismaClient in long-running applications +### `PrismaClient` in long-running applications In **long-running** applications, we recommend that you: - ✔ Create **one** instance of `PrismaClient` and re-use it across your application - ✔ Assign `PrismaClient` to a global variable _in dev environments only_ to [prevent hot reloading from creating new instances](#prevent-hot-reloading-from-creating-new-instances-of-prismaclient) -#### Re-using a single PrismaClient instance +#### Re-using a single `PrismaClient` instance To re-use a single instance, create a module that exports a `PrismaClient` object: @@ -155,28 +155,28 @@ If you are **not** using an external connection pooler, _start_ by setting the p The following example demonstrates how to set the `connection_limit` to 1 in your connection URL: -, ]}> - + + ``` postgresql://USER:PASSWORD@HOST:PORT/DATABASE?schema=public&connection_limit=1 ``` - - + + ``` mysql://USER:PASSWORD@HOST:PORT/DATABASE?connection_limit=1 ``` - + - +:::tip If you are using AWS Lambda and _not_ configuring a `connection_limit`, refer to the following GitHub issue for information about the expected default pool size: https://github.com/prisma/docs/issues/667 - +::: #### With an external connection pooler @@ -201,7 +201,7 @@ If the `connection_limit` is 1, this function is forced to send queries **serial - Does not exhaust the database connection limit - Does not result in pool timeout errors -### PrismaClient in serverless environments +### `PrismaClient` in serverless environments #### Instantiate `PrismaClient` outside the handler @@ -217,7 +217,7 @@ export async function handler() { } ``` -#### Do not explicitly $disconnect() +#### Do not explicitly `$disconnect()` You [do not need to explicitly `$disconnect()`](/orm/prisma-client/setup-and-configuration/databases-connections/connection-management#calling-disconnect-explicitly) at the end of a function, as there is a possibility that the container might be reused. Opening a new connection takes time and slows down your function's ability to process requests. @@ -302,20 +302,23 @@ Connection poolers like [Prisma Accelerate](/accelerate) and PgBouncer prevent y If you would like to use the Prisma CLI in order to perform other actions on your database ,e.g. migrations and introspection, you will need to add an environment variable that provides a direct connection to your database in the `datasource.directUrl` property in your Prisma schema: -```env file=.env highlight=4,5;add +```env file=.env highlight=4,5;add showLineNumbers # Connection URL to your database using PgBouncer. DATABASE_URL="postgres://root:password@127.0.0.1:54321/postgres?pgbouncer=true" +//add-start # Direct connection URL to the database used for migrations DIRECT_URL="postgres://root:password@127.0.0.1:5432/postgres" +//add-end ``` You can then update your `schema.prisma` to use the new direct URL: -```prisma file=schema.prisma highlight=4;add +```prisma file=schema.prisma highlight=4;add showLineNumbers datasource db { provider = "postgresql" url = env("DATABASE_URL") + //add-next-line directUrl = env("DIRECT_URL") } ``` diff --git a/content/200-orm/200-prisma-client/000-setup-and-configuration/100-custom-model-and-field-names.mdx b/content/200-orm/200-prisma-client/000-setup-and-configuration/100-custom-model-and-field-names.mdx index ed8ea044e4..7ad2b0ef43 100644 --- a/content/200-orm/200-prisma-client/000-setup-and-configuration/100-custom-model-and-field-names.mdx +++ b/content/200-orm/200-prisma-client/000-setup-and-configuration/100-custom-model-and-field-names.mdx @@ -298,8 +298,10 @@ model Post { model User { id Int @id @default(autoincrement()) + //edit-start writtenPosts Post[] @relation("Post_authorToUser") favoritedPosts Post[] @relation("Post_favoritedByToUser") + //edit-end } ``` diff --git a/content/200-orm/200-prisma-client/000-setup-and-configuration/220-database-polyfills.mdx b/content/200-orm/200-prisma-client/000-setup-and-configuration/220-database-polyfills.mdx index 9cfe6e692e..56e53b6e50 100644 --- a/content/200-orm/200-prisma-client/000-setup-and-configuration/220-database-polyfills.mdx +++ b/content/200-orm/200-prisma-client/000-setup-and-configuration/220-database-polyfills.mdx @@ -2,6 +2,7 @@ title: 'Database polyfills' metaTitle: 'Database polyfills (Concepts)' metaDescription: 'Prisma Client provides features that are not achievable with relational databases. These features are referred to as "polyfills" and explained on this page.' +hide_table_of_contents: true --- diff --git a/content/200-orm/200-prisma-client/000-setup-and-configuration/index.mdx b/content/200-orm/200-prisma-client/000-setup-and-configuration/index.mdx index c1c3f53673..527d95a3ce 100644 --- a/content/200-orm/200-prisma-client/000-setup-and-configuration/index.mdx +++ b/content/200-orm/200-prisma-client/000-setup-and-configuration/index.mdx @@ -2,6 +2,7 @@ title: 'Setup & configuration' metaTitle: 'Setup & configuration' metaDescription: 'This section explains how to generate, configure, and instantiate Prisma Client, as well as when and how to manage database connections.' +hide_table_of_contents: true --- diff --git a/content/200-orm/200-prisma-client/100-queries/030-crud.mdx b/content/200-orm/200-prisma-client/100-queries/030-crud.mdx index 788b550d4b..5822763537 100644 --- a/content/200-orm/200-prisma-client/100-queries/030-crud.mdx +++ b/content/200-orm/200-prisma-client/100-queries/030-crud.mdx @@ -2,7 +2,7 @@ title: 'CRUD' metaTitle: 'CRUD (Reference)' metaDescription: 'How to perform CRUD with Prisma Client.' -tocDepth: 4 +toc_max_heading_level: 4 --- @@ -22,10 +22,12 @@ Refer to the [Prisma Client API reference documentation](/orm/reference/prisma-c All examples are based on the following schema: -
Expand for sample schema +
-, ]}> - +Expand for sample schema + + + ```prisma datasource db { @@ -79,8 +81,8 @@ enum Role { } ``` - - + + ```prisma datasource db { @@ -134,7 +136,7 @@ enum Role { } ``` - +
@@ -290,7 +292,7 @@ The following video demonstrates how to use `createMany` and [faker.js](https:// ### Create records and connect or create related records -See [Working with relations > Nested writes](relation-queries#nested-writes) for information about creating a record and one or more related records at the same time. +See [Working with relations > Nested writes](/orm/prisma-client/queries/relation-queries#nested-writes) for information about creating a record and one or more related records at the same time. ## Read @@ -333,7 +335,7 @@ The following [`findMany`](/orm/reference/prisma-client-reference#findmany) quer const users = await prisma.user.findMany() ``` -You can also [paginate your results](pagination). +You can also [paginate your results](/orm/prisma-client/queries/pagination). ### Get the first record that matches a specific criteria @@ -361,7 +363,7 @@ const findUser = await prisma.user.findFirst({ ### Get a filtered list of records -Prisma Client supports [filtering](filtering-and-sorting) on record fields and related record fields. +Prisma Client supports [filtering](/orm/prisma-client/queries/filtering-and-sorting) on record fields and related record fields. #### Filter by a single field value @@ -424,7 +426,7 @@ const users = await prisma.user.findMany({ }) ``` -See [Working with relations](relation-queries) for more examples of filtering on related field values. +See [Working with relations](/orm/prisma-client/queries/relation-queries) for more examples of filtering on related field values. ### Select a subset of fields @@ -457,8 +459,8 @@ const user = await prisma.user.findUnique({ For more information about including relations, refer to: -- [Select fields](select-fields) -- [Relation queries](relation-queries) +- [Select fields](/orm/prisma-client/queries/select-fields) +- [Relation queries](/orm/prisma-client/queries/relation-queries) #### Select a subset of related record fields @@ -496,11 +498,11 @@ const user = await prisma.user.findUnique({ -For more information about including relations, see [Select fields and include relations](select-fields). +For more information about including relations, see [Select fields and include relations](/orm/prisma-client/queries/select-fields). ### Select distinct field values -See [Select `distinct`](aggregation-grouping-summarizing#select-distinct) for information about selecting distinct field values. +See [Select `distinct`](/orm/prisma-client/queries/aggregation-grouping-summarizing#select-distinct) for information about selecting distinct field values. ### Include related records @@ -565,11 +567,11 @@ const users = await prisma.user.findMany({ -For more information about including relations, see [Select fields and include relations](select-fields). +For more information about including relations, see [Select fields and include relations](/orm/prisma-client/queries/select-fields). #### Include a filtered list of relations -See [Working with relations](relation-queries#filter-a-list-of-relations) to find out how to combine [`include`](/orm/reference/prisma-client-reference#include) and `where` for a filtered list of relations - for example, only include a user's published posts. +See [Working with relations](/orm/prisma-client/queries/relation-queries#filter-a-list-of-relations) to find out how to combine [`include`](/orm/reference/prisma-client-reference#include) and `where` for a filtered list of relations - for example, only include a user's published posts. ## Update @@ -712,7 +714,7 @@ const updatePosts = await prisma.post.updateMany({ ### Connect and disconnect related records -Refer to [Working with relations](relation-queries) for information about disconnecting ([`disconnect`](/orm/reference/prisma-client-reference#disconnect) ) and connecting ([`connect`](/orm/reference/prisma-client-reference#connect) ) related records. +Refer to [Working with relations](/orm/prisma-client/queries/relation-queries) for information about disconnecting ([`disconnect`](/orm/reference/prisma-client-reference#disconnect) ) and connecting ([`connect`](/orm/reference/prisma-client-reference#connect) ) related records. ## Delete @@ -787,10 +789,14 @@ To resolve this error, you can: ```prisma highlight=3,4;add|5,6;delete model Post { id Int @id @default(autoincrement()) + //add-start author User? @relation(fields: [authorId], references: [id]) authorId Int? + //add-end + //delete-start author User @relation(fields: [authorId], references: [id]) authorId Int + //delete-end } ``` @@ -852,9 +858,9 @@ In the following examples, the first tab shows how to perform a `TRUNCATE` on a The second tab shows performing the same function but with a MySQL database. In this instance the constraints must be removed before the `TRUNCATE` can be executed, before being reinstated once finished. The whole process is run as a `$transaction` -, ]}> + - + ```ts const tablenames = await prisma.$queryRaw< @@ -874,9 +880,9 @@ try { } ``` - + - + ```ts const transactions: PrismaPromise[] = [] @@ -905,7 +911,7 @@ try { } ``` - + diff --git a/content/200-orm/200-prisma-client/100-queries/035-select-fields.mdx b/content/200-orm/200-prisma-client/100-queries/035-select-fields.mdx index 1ba2a43dc2..dfbaf54e98 100644 --- a/content/200-orm/200-prisma-client/100-queries/035-select-fields.mdx +++ b/content/200-orm/200-prisma-client/100-queries/035-select-fields.mdx @@ -14,8 +14,8 @@ By default, when a query returns records (as opposed to a count), the result inc To customize the result: -- Use [`select`](/orm/reference/prisma-client-reference#select) to return specific fields - [you can also use a nested `select` to include relation fields](relation-queries#select-specific-relation-fields) -- Use [`include`](/orm/reference/prisma-client-reference#include) to explicitly [include relations](relation-queries#nested-reads) +- Use [`select`](/orm/reference/prisma-client-reference#select) to return specific fields - [you can also use a nested `select` to include relation fields](/orm/prisma-client/queries/relation-queries#select-specific-relation-fields) +- Use [`include`](/orm/reference/prisma-client-reference#include) to explicitly [include relations](/orm/prisma-client/queries/relation-queries#nested-reads) Selecting only the fields and relations that you require rather than relying on the default selection set can ✔ reduce the size of the response and ✔ improve query speed. @@ -27,10 +27,12 @@ Since version [5.9.0](https://github.com/prisma/prisma/releases/tag/5.9.0), when All examples are based on the following schema: -
Expand for sample schema +
-, ]}> - +Expand for sample schema + + + ```prisma generator client { @@ -84,8 +86,8 @@ enum Role { } ``` - - + + ```prisma datasource db { @@ -139,7 +141,7 @@ enum Role { } ``` - +
@@ -311,9 +313,9 @@ const users = await prisma.user.findMany({ For more information about querying relations, refer to the following documentation: -- [Include a relation (including all fields)](relation-queries#include-all-fields-for-a-specific-relation) -- [Select specific relation fields](relation-queries#select-specific-relation-fields) +- [Include a relation (including all fields)](/orm/prisma-client/queries/relation-queries#include-all-fields-for-a-specific-relation) +- [Select specific relation fields](/orm/prisma-client/queries/relation-queries#select-specific-relation-fields) ## Relation count -In [3.0.1](https://github.com/prisma/prisma/releases/3.0.1) and later, you can [`include` or `select` a count of relations](aggregation-grouping-summarizing#count-relations) alongside fields - for example, a user's post count. +In [3.0.1](https://github.com/prisma/prisma/releases/3.0.1) and later, you can [`include` or `select` a count of relations](/orm/prisma-client/queries/aggregation-grouping-summarizing#count-relations) alongside fields - for example, a user's post count. diff --git a/content/200-orm/200-prisma-client/100-queries/037-relation-queries.mdx b/content/200-orm/200-prisma-client/100-queries/037-relation-queries.mdx index a6c9b82673..ab5d8d4edc 100644 --- a/content/200-orm/200-prisma-client/100-queries/037-relation-queries.mdx +++ b/content/200-orm/200-prisma-client/100-queries/037-relation-queries.mdx @@ -2,7 +2,7 @@ title: 'Relation queries' metaTitle: 'Relation queries (Concepts)' metaDescription: 'Prisma Client provides convenient queries for working with relations, such as a fluent API, nested writes (transactions), nested reads and relation filters.' -tocDepth: 4 +toc_max_heading_level: 4 --- @@ -10,7 +10,7 @@ tocDepth: 4 A key feature of Prisma Client is the ability to query [relations](/orm/prisma-schema/data-model/relations) between two or more models. Relation queries include: - [Nested reads](#nested-reads) (sometimes referred to as _eager loading_) via [`select`](/orm/reference/prisma-client-reference#select) and [`include`](/orm/reference/prisma-client-reference#include) -- [Nested writes](#nested-writes) with [transactional](transactions) guarantees +- [Nested writes](#nested-writes) with [transactional](/orm/prisma-client/queries/transactions) guarantees - [Filtering on related records](#relation-filters) Prisma Client also has a [fluent API for traversing relations](#fluent-api). @@ -30,7 +30,7 @@ Since version [5.9.0](https://github.com/prisma/prisma/releases/tag/5.9.0), you Because the `relationLoadStrategy` option is currently in Preview, you need to enable it via the `relationJoins` preview feature flag in your Prisma schema file: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers generator client { provider = "prisma-client-js" previewFeatures = ["relationJoins"] @@ -318,9 +318,11 @@ Note that you **cannot** use `select` and `include` _on the same level_. This me ```ts highlight=3,6;delete // The following query returns an exception const user = await prisma.user.findFirst({ + //delete-next-line select: { // This won't work! email: true } + //delete-next-line include: { // This won't work! posts: { select: { @@ -380,7 +382,7 @@ const user = await prisma.user.findFirst({ ## Relation count -In [3.0.1](https://github.com/prisma/prisma/releases/3.0.1) and later, you can [`include` or `select` a count of relations](aggregation-grouping-summarizing#count-relations) alongside fields - for example, a user's post count. +In [3.0.1](https://github.com/prisma/prisma/releases/3.0.1) and later, you can [`include` or `select` a count of relations](/orm/prisma-client/queries/aggregation-grouping-summarizing#count-relations) alongside fields - for example, a user's post count. @@ -472,12 +474,14 @@ const result = await prisma.user.create({ data: { email: 'elsa@prisma.io', name: 'Elsa Prisma', + //highlight-start posts: { create: [ { title: 'How to make an omelette' }, { title: 'How to eat an omelette' }, ], }, + //highlight-end }, include: { posts: true, // Include all posts in the returned object @@ -556,6 +560,7 @@ const result = await prisma.user.create({ data: { email: 'yvette@prisma.io', name: 'Yvette', + //highlight-start posts: { create: [ { @@ -569,6 +574,7 @@ const result = await prisma.user.create({ { title: 'How to eat an omelette' }, ], }, + //highlight-end }, include: { // Include posts @@ -642,11 +648,13 @@ The example uses a nested `include` to include all posts. const result = await prisma.user.create({ data: { email: 'saanvi@prisma.io', + //highlight-start posts: { createMany: { data: [{ title: 'My first post' }, { title: 'My second post' }], }, }, + //highlight-end }, include: { posts: true, @@ -710,16 +718,20 @@ const createMany = await prisma.user.createMany({ { name: 'Yewande', email: 'yewande@prisma.io', + //delete-start posts: { // Not possible to create posts! }, + //delete-end }, { name: 'Noor', email: 'noor@prisma.io', + //delete-start posts: { // Not possible to create posts! }, + //delete-end }, ], }) @@ -736,9 +748,11 @@ The following query creates ([`create`](/orm/reference/prisma-client-reference#c const result = await prisma.user.create({ data: { email: 'vlad@prisma.io', + //highlight-start posts: { connect: [{ id: 8 }, { id: 9 }, { id: 10 }], }, + //highlight-end }, include: { posts: true, // Include all posts in the returned object @@ -786,10 +800,12 @@ const result = await prisma.user.update({ id: 9, }, data: { + //highlight-start posts: { connect: { id: 11, }, + //highlight-end }, }, include: { @@ -812,6 +828,7 @@ If a related record may or may not already exist, use [`connectOrCreate`](/orm/r const result = await prisma.post.create({ data: { title: 'How to make croissants', + //highlight-start author: { connectOrCreate: { where: { @@ -823,6 +840,7 @@ const result = await prisma.post.create({ }, }, }, + //highlight-end }, include: { author: true, @@ -868,9 +886,11 @@ const result = await prisma.user.update({ id: 16, }, data: { + //highlight-start posts: { disconnect: [{ id: 12 }, { id: 19 }], }, + //highlight-end }, include: { posts: true, @@ -907,9 +927,11 @@ const result = await prisma.post.update({ id: 23, }, data: { + //highlight-start author: { disconnect: true, }, + //highlight-end }, include: { author: true, @@ -949,9 +971,11 @@ const result = await prisma.user.update({ id: 16, }, data: { + //highlight-start posts: { set: [], }, + //highlight-end }, include: { posts: true, @@ -987,9 +1011,11 @@ const result = await prisma.user.update({ id: 11, }, data: { + //highlight-start posts: { deleteMany: {}, }, + //highlight-end }, include: { posts: true, @@ -1007,11 +1033,13 @@ const result = await prisma.user.update({ id: 11, }, data: { + //highlight-start posts: { deleteMany: { published: false, }, }, + //highlight-end }, include: { posts: true, @@ -1027,9 +1055,11 @@ const result = await prisma.user.update({ id: 6, }, data: { + //highlight-start posts: { deleteMany: [{ id: 7 }], }, + //highlight-end }, include: { posts: true, @@ -1047,6 +1077,7 @@ const result = await prisma.user.update({ id: 6, }, data: { + //highlight-start posts: { updateMany: { where: { @@ -1057,6 +1088,7 @@ const result = await prisma.user.update({ }, }, }, + //highlight-end }, include: { posts: true, @@ -1072,6 +1104,7 @@ const result = await prisma.user.update({ id: 6, }, data: { + //highlight-start posts: { update: { where: { @@ -1082,6 +1115,7 @@ const result = await prisma.user.update({ }, }, }, + //highlight-end }, include: { posts: true, @@ -1099,6 +1133,7 @@ const result = await prisma.post.update({ id: 6, }, data: { + //highlight-start author: { upsert: { create: { @@ -1111,6 +1146,7 @@ const result = await prisma.post.update({ }, }, }, + //highlight-end }, include: { author: true, @@ -1128,11 +1164,13 @@ const result = await prisma.user.update({ id: 9, }, data: { + //highlight-start posts: { createMany: { data: [{ title: 'My first post' }, { title: 'My second post' }], }, }, + //highlight-end }, include: { posts: true, @@ -1162,6 +1200,7 @@ For example, the following query returns `User` that meet the following criteria ```ts highlight=3-14;normal const users = await prisma.user.findMany({ where: { + //highlight-start posts: { none: { views: { @@ -1174,6 +1213,7 @@ const users = await prisma.user.findMany({ }, }, }, + //highlight-end }, include: { posts: true, @@ -1193,6 +1233,7 @@ For example, the following query returns `Post` records that meet the following ```ts highlight=3-13;normal const users = await prisma.post.findMany({ where: { + //highlight-start author: { isNot: { name: 'Bob', @@ -1204,6 +1245,7 @@ const users = await prisma.post.findMany({ }, }, }, + //highlight-end include: { author: true, }, @@ -1217,9 +1259,11 @@ For example, the following query uses `none` to return all users that have zero ```ts highlight=3-5;normal const usersWithZeroPosts = await prisma.user.findMany({ where: { + //highlight-start posts: { none: {}, }, + //highlight-end }, include: { posts: true, @@ -1234,6 +1278,7 @@ The following query returns all posts that don't have an author relation: ```js highlight=3;normal const postsWithNoAuthor = await prisma.post.findMany({ where: { + //highlight-next-line author: null, // or author: { } }, include: { @@ -1249,9 +1294,11 @@ The following query returns all users with at least one post: ```ts highlight=3-5;normal const usersWithSomePosts = await prisma.user.findMany({ where: { + //highlight-start posts: { some: {}, }, + //highlight-end }, include: { posts: true, diff --git a/content/200-orm/200-prisma-client/100-queries/050-filtering-and-sorting.mdx b/content/200-orm/200-prisma-client/100-queries/050-filtering-and-sorting.mdx index b40960888b..3c77f2d9c3 100644 --- a/content/200-orm/200-prisma-client/100-queries/050-filtering-and-sorting.mdx +++ b/content/200-orm/200-prisma-client/100-queries/050-filtering-and-sorting.mdx @@ -155,13 +155,14 @@ const posts = await prisma.post.findMany({ ### Filter on relations -Prisma Client supports [filtering on related records](relation-queries#relation-filters). For example, in the following schema, a user can have many blog posts: +Prisma Client supports [filtering on related records](/orm/prisma-client/queries/relation-queries#relation-filters). For example, in the following schema, a user can have many blog posts: ```prisma highlight=5,12-13;normal model User { id Int @id @default(autoincrement()) name String? email String @unique + //highlight-next-line posts Post[] // User can have many posts } @@ -169,8 +170,10 @@ model Post { id Int @id @default(autoincrement()) title String published Boolean @default(true) + //highlight-start author User @relation(fields: [authorId], references: [id]) authorId Int + //highlight-end } ``` @@ -220,7 +223,7 @@ const posts = await client.post.findMany({ ### Case-insensitive filtering -Case-insensitive filtering [is available as a feature for the PostgreSQL and MongoDB providers](case-sensitivity#options-for-case-insensitive-filtering). MySQL, MariaDB and Microsoft SQL Server are case-insensitive by default, and do not require a Prisma Client feature to make case-insensitive filtering possible. +Case-insensitive filtering [is available as a feature for the PostgreSQL and MongoDB providers](/orm/prisma-client/queries/case-sensitivity#options-for-case-insensitive-filtering). MySQL, MariaDB and Microsoft SQL Server are case-insensitive by default, and do not require a Prisma Client feature to make case-insensitive filtering possible. To use case-insensitive filtering, add the `mode` property to a particular filter and specify `insensitive`: @@ -238,7 +241,7 @@ const users = await prisma.user.findMany({ }) ``` -See also: [Case sensitivity](case-sensitivity) +See also: [Case sensitivity](/orm/prisma-client/queries/case-sensitivity) ### Filtering FAQs @@ -349,7 +352,7 @@ const usersWithPosts = await prisma.user.findMany({ -> **Note**: You can also [sort lists of nested records](relation-queries#filter-a-list-of-relations) +> **Note**: You can also [sort lists of nested records](/orm/prisma-client/queries/relation-queries#filter-a-list-of-relations) > to retrieve a single record by ID. ### Sort by relation diff --git a/content/200-orm/200-prisma-client/100-queries/055-pagination.mdx b/content/200-orm/200-prisma-client/100-queries/055-pagination.mdx index a73c454569..d18460b664 100644 --- a/content/200-orm/200-prisma-client/100-queries/055-pagination.mdx +++ b/content/200-orm/200-prisma-client/100-queries/055-pagination.mdx @@ -21,7 +21,7 @@ const results = await prisma.post.findMany({ }) ``` -![](../../../doc-images/offset-skip-take.png) +![](/img/orm/offset-skip-take.png) To implement pages of results, you would just `skip` the number of pages multiplied by the number of results you show per page. @@ -103,7 +103,7 @@ const firstQueryResults = await prisma.post.findMany({ The following diagram shows the IDs of the first 4 results - or page 1. The cursor for the next query is **29**: -![](../../../doc-images/cursor-1.png) +![](/img/orm/cursor-1.png) The second query returns the first 4 `Post` records that contain the word `"Prisma"` **after the supplied cursor** (in other words - IDs that are larger than **29**): @@ -130,7 +130,7 @@ const myCursor = lastPostInResults.id // Example: 52 The following diagram shows the first 4 `Post` records **after** the record with ID **29**. In this example, the new cursor is **52**: -![](../../../doc-images/cursor-2.png) +![](/img/orm/cursor-2.png) ### FAQ @@ -138,15 +138,15 @@ The following diagram shows the first 4 `Post` records **after** the record with If you do not `skip: 1`, your result set will include your previous cursor. The first query returns four results and the cursor is **29**: -![](../../../doc-images/cursor-1.png) +![](/img/orm/cursor-1.png) Without `skip: 1`, the second query returns 4 results after (and _including_) the cursor: -![](../../../doc-images/cursor-3.png) +![](/img/orm/cursor-3.png) If you `skip: 1`, the cursor is not included: -![](../../../doc-images/cursor-2.png) +![](/img/orm/cursor-2.png) You can choose to `skip: 1` or not depending on the pagination behavior that you want. diff --git a/content/200-orm/200-prisma-client/100-queries/056-aggregation-grouping-summarizing.mdx b/content/200-orm/200-prisma-client/100-queries/056-aggregation-grouping-summarizing.mdx index 6b59303b93..e0301a4d19 100644 --- a/content/200-orm/200-prisma-client/100-queries/056-aggregation-grouping-summarizing.mdx +++ b/content/200-orm/200-prisma-client/100-queries/056-aggregation-grouping-summarizing.mdx @@ -3,6 +3,7 @@ title: 'Aggregation, grouping, and summarizing' metaTitle: 'Aggregation, grouping, and summarizing (Concepts)' metaDescription: 'Use Prisma Client to aggregate, group by, count, and select distinct.' tocDepth: 4 +toc_max_heading_level: 4 --- @@ -148,7 +149,7 @@ const groupUsers = await prisma.user.groupBy({ }) ``` -### groupBy and filtering +### `groupBy` and filtering `groupBy` supports two levels of filtering: `where` and `having`. @@ -159,18 +160,20 @@ Use `where` to filter all records **before grouping**. The following example gro ```ts highlight=3-7;normal const groupUsers = await prisma.user.groupBy({ by: ['country'], + //highlight-start where: { email: { contains: 'prisma.io', }, }, + //highlight-end _sum: { profileViews: true, }, }) ``` -#### Filter groups with having +#### Filter groups with `having` Use `having` to filter **entire groups** by an aggregate value such as the sum or average of a field, not individual records - for example, only return groups where the _average_ `profileViews` is greater than 100: @@ -185,6 +188,7 @@ const groupUsers = await prisma.user.groupBy({ _sum: { profileViews: true, }, + //highlight-start having: { profileViews: { _avg: { @@ -192,10 +196,11 @@ const groupUsers = await prisma.user.groupBy({ }, }, }, + //highlight-end }) ``` -##### Use case for having +##### Use case for `having` The primary use case for `having` is to filter on aggregations. We recommend that you use `where` to reduce the size of your data set as far as possible _before_ grouping, because doing so ✔ reduces the number of records the database has to return and ✔ makes use of indices. @@ -205,9 +210,11 @@ For example, the following query groups all users that are _not_ from Sweden or const fd = await prisma.user.groupBy({ by: ['country'], where: { + //highlight-start country: { notIn: ['Sweden', 'Ghana'], }, + //highlight-end }, _sum: { profileViews: true, @@ -228,17 +235,21 @@ The following query technically achieves the same result, but excludes users fro const groupUsers = await prisma.user.groupBy({ by: ['country'], where: { + //highlight-start country: { not: 'Sweden', }, + //highlight-end }, _sum: { profileViews: true, }, having: { + //highlight-start country: { not: 'Ghana', }, + //highlight-end profileViews: { _min: { gte: 10, @@ -250,7 +261,7 @@ const groupUsers = await prisma.user.groupBy({ > **Note**: Within `having`, you can only filter on aggregate values _or_ fields available in `by`. -### groupBy and ordering +### `groupBy` and ordering The following constraints apply when you combine `groupBy` and `orderBy`: @@ -260,7 +271,7 @@ The following constraints apply when you combine `groupBy` and `orderBy`: #### Order by aggregate group -You can **order by aggregate group**. Prisma ORM added support for using `orderBy with aggregated groups in relational databases in version [2.21.0](https://github.com/prisma/prisma/releases/2.21.0) and support for MongoDB in [3.4.0](https://github.com/prisma/prisma/releases/3.4.0). +You can **order by aggregate group**. Prisma ORM added support for using `orderBy` with aggregated groups in relational databases in version [2.21.0](https://github.com/prisma/prisma/releases/2.21.0) and support for MongoDB in [3.4.0](https://github.com/prisma/prisma/releases/3.4.0). The following example sorts each `city` group by the number of users in that group (largest group first): @@ -313,7 +324,7 @@ const groupBy = await prisma.user.groupBy({ }) ``` -### groupBy FAQ +### `groupBy` FAQ #### Can I use `select` with `groupBy`? @@ -381,7 +392,7 @@ The `_count` parameter: - Can return [multiple relation counts](#return-multiple-relation-counts) - Can [filter relation counts](#filter-the-relation-count) (from version 4.3.0) -#### Return a relations count with include +#### Return a relations count with `include` The following query includes each user's post count in the results: @@ -618,7 +629,7 @@ const distinctRoles = await prisma.user.findMany({ -### distinct under the hood +### `distinct` under the hood Prisma Client's `distinct` option does not use SQL `SELECT DISTINCT`. Instead, `distinct` uses: @@ -633,7 +644,9 @@ The following example selects distinct on `gameId` and `playerId`, ordered by `s - Select related player name (relation between `Play` and `User`) - Select related game name (relation between `Play` and `Game`) -
Expand for sample schema +
+ +Expand for sample schema ```prisma model User { diff --git a/content/200-orm/200-prisma-client/100-queries/058-transactions.mdx b/content/200-orm/200-prisma-client/100-queries/058-transactions.mdx index 7b4c477ec7..802db8bf88 100644 --- a/content/200-orm/200-prisma-client/100-queries/058-transactions.mdx +++ b/content/200-orm/200-prisma-client/100-queries/058-transactions.mdx @@ -54,7 +54,7 @@ Prisma Client provides the following options for using transactions: ## Nested writes -A [nested write](relation-queries#nested-writes) lets you perform a single Prisma Client API call with multiple _operations_ that touch multiple [_related_](/orm/prisma-schema/data-model/relations) records. For example, creating a _user_ together with a _post_ or updating an _order_ together with an _invoice_. Prisma Client ensures that all operations succeed or fail as a whole. +A [nested write](/orm/prisma-client/queries/relation-queries#nested-writes) lets you perform a single Prisma Client API call with multiple _operations_ that touch multiple [_related_](/orm/prisma-schema/data-model/relations) records. For example, creating a _user_ together with a _post_ or updating an _order_ together with an _invoice_. Prisma Client ensures that all operations succeed or fail as a whole. The following example demonstrates a nested write with `create`: @@ -98,7 +98,7 @@ The following bulk operations run as transactions: > Refer to the section about [bulk operations](#bulk-operations) for more examples. -## The $transaction API +## The `$transaction` API The `$transaction` API can be used in two ways: @@ -123,9 +123,9 @@ const [posts, totalPosts] = await prisma.$transaction([ You can also use raw queries inside of a `$transaction`: -, ]}> + - + ```ts const [userList, updateUser] = await prisma.$transaction([ @@ -134,9 +134,9 @@ const [userList, updateUser] = await prisma.$transaction([ ]) ``` - + - + ```ts const [findRawData, aggregateRawData, commandRawData] = @@ -161,7 +161,7 @@ const [findRawData, aggregateRawData, commandRawData] = ]) ``` - + @@ -528,11 +528,11 @@ Consider using nested writes if: - ✔ You want to create two or more records related by ID at the same time (for example, create a blog post and a user) - ✔ You want to update and create records related by ID at the same time (for example, change a user's name and create a new blog post) - +:::tip If you [pre-compute your IDs, you can choose between a nested write or using the `$transaction([])` API](#scenario-pre-computed-ids-and-the-transaction-api). - +::: #### Scenario: Sign-up flow @@ -623,6 +623,7 @@ const createTeamOperation = prisma.team.create({ name: 'Aurora Adventures', members: { connect: { + //delete-next-line id: createUserOperation.id, // Not possible, ID not yet available }, }, @@ -805,6 +806,7 @@ await prisma.team.deleteMany({ }, }, data: { + //delete-next-line members: {}, // Cannot access members here }, }) @@ -814,7 +816,7 @@ await prisma.team.deleteMany({ Yes — for example, you can include multiple `deleteMany` operations inside a `$transaction([])`. -### $transaction([]) API +### `$transaction([])` API The `$transaction([])` API is generic solution to independent writes that allows you to run multiple operations as a single, atomic operation - if any operation fails, Prisma Client rolls back the entire transaction. @@ -909,14 +911,18 @@ Instead of auto-generating IDs, change the `id` fields of `Team` and `User` to a ```prisma highlight=2,9;delete|3,10;add model Team { + //delete-next-line id Int @id @default(autoincrement()) + //add-next-line id String @id @default(uuid()) name String members User[] } model User { + //delete-next-line id Int @id @default(autoincrement()) + //add-next-line id String @id @default(uuid()) email String @unique teams Team[] @@ -1012,6 +1018,7 @@ model Team { id Int @id @default(autoincrement()) name String User User[] + //highlight-next-line stripeCustomerId String? } ``` @@ -1082,6 +1089,7 @@ const numTeammates = await prisma.user.count({ }, }) +//highlight-start // Find customer in Stripe let customer = await stripe.customers.get({ externalId: teamID }) @@ -1091,6 +1099,7 @@ if (customer) { externalId: teamId, plan: 'plan_id', quantity: numTeammates, +//highlight-end }) } else { customer = await stripe.customers.create({ @@ -1211,6 +1220,7 @@ model Seat { claimedBy User? @relation(fields: [userId], references: [id]) movieId Int movie Movie @relation(fields: [movieId], references: [id]) + //highlight-next-line version Int } ``` @@ -1236,6 +1246,7 @@ if (!availableSeat) { throw new Error(`Oh no! ${movieName} is all booked.`) } +//highlight-start // Only mark the seat as claimed if the availableSeat.version // matches the version we're updating. Additionally, increment the // version when we perform this update so all other clients trying @@ -1256,6 +1267,7 @@ const seats = await client.seat.updateMany({ if (seats.count === 0) { throw new Error(`That seat is already booked! Please try again.`) } +//highlight-end ``` It is now impossible for two people to book the same seat: diff --git a/content/200-orm/200-prisma-client/100-queries/060-full-text-search.mdx b/content/200-orm/200-prisma-client/100-queries/060-full-text-search.mdx index 931d9e793b..c7933c5678 100644 --- a/content/200-orm/200-prisma-client/100-queries/060-full-text-search.mdx +++ b/content/200-orm/200-prisma-client/100-queries/060-full-text-search.mdx @@ -2,7 +2,7 @@ title: 'Full-text search' metaTitle: 'Full-text search (Preview)' metaDescription: 'This page explains how to search for text within a field.' -preview: true +sidebar_class_name: preview-badge --- @@ -19,7 +19,7 @@ The full-text search API is currently a Preview feature. To enable this feature, 1. Update the [`previewFeatures`](/orm/reference/preview-features) block in your schema to include the `fullTextSearch` preview feature flag: - ```prisma file=schema.prisma + ```prisma file=schema.prisma showLineNumbers generator client { provider = "prisma-client-js" previewFeatures = ["fullTextSearch"] @@ -28,9 +28,10 @@ The full-text search API is currently a Preview feature. To enable this feature, For MySQL, you will also need to include the `fullTextIndex` preview feature flag: - ```prisma file=schema.prisma highlight=3;add + ```prisma file=schema.prisma highlight=3;add showLineNumbers generator client { provider = "prisma-client-js" + //add-next-line previewFeatures = ["fullTextSearch", "fullTextIndex"] } ``` @@ -95,8 +96,8 @@ Here's how the following queries would match that text: | `dog & fox` | Yes | The text contains 'dog' and 'fox' | | `dog & cat` | No | The text contains 'dog' but not 'cat' | | `!cat` | Yes | 'cat' is not in the text | -| fox | cat | Yes | The text contains 'fox' or 'cat' | -| cat | pig | No | The text doesn't contain 'cat' or 'pig' | +| `fox | cat` | Yes | The text contains 'fox' or 'cat' | +| `cat | pig` | No | The text doesn't contain 'cat' or 'pig' | | `fox <-> dog` | Yes | 'dog' follows 'fox' in the text | | `dog <-> fox` | No | 'fox' doesn't follow 'dog' in the text | @@ -168,7 +169,7 @@ MySQL also has `>`, `<` and `~` operators for altering the ranking order of sear For the full range of supported operations, see the [MySQL full text search documentation](https://dev.mysql.com/doc/refman/8.0/en/fulltext-boolean.html). -## Sorting results by \_relevance +## Sorting results by `\_relevance` @@ -201,7 +202,7 @@ For MySQL, it is necessary to add indexes to any columns you search using the `@ In the following example, one full text index is added to the `content` field of the `Blog` model, and another is added to both the `content` and `title` fields together: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers generator client { provider = "prisma-client-js" previewFeatures = ["fullTextSearch", "fullTextIndex"] diff --git a/content/200-orm/200-prisma-client/100-queries/061-custom-validation.mdx b/content/200-orm/200-prisma-client/100-queries/061-custom-validation.mdx index 47534cc74c..ecc05879aa 100644 --- a/content/200-orm/200-prisma-client/100-queries/061-custom-validation.mdx +++ b/content/200-orm/200-prisma-client/100-queries/061-custom-validation.mdx @@ -25,9 +25,9 @@ Query extensions do not currently work for nested operations. In this example, v -, ]}> + - + ```ts copy import { PrismaClient, Prisma } from '@prisma/client' @@ -107,9 +107,9 @@ async function main() { main() ``` - + - + ```prisma copy datasource db { @@ -139,7 +139,7 @@ model Review { } ``` - + diff --git a/content/200-orm/200-prisma-client/100-queries/062-computed-fields.mdx b/content/200-orm/200-prisma-client/100-queries/062-computed-fields.mdx index 694f98dbf1..0864f59f4b 100644 --- a/content/200-orm/200-prisma-client/100-queries/062-computed-fields.mdx +++ b/content/200-orm/200-prisma-client/100-queries/062-computed-fields.mdx @@ -14,11 +14,11 @@ Computed fields allow you to derive a new field based on existing data. A common The following example illustrates how to create a [Prisma Client extension](/orm/prisma-client/client-extensions) that adds a `fullName` computed field at runtime to the `User` model in a Prisma schema. - ,]}> + - + - + @@ -65,9 +65,9 @@ main() - + - + ```prisma copy datasource db { @@ -97,7 +97,7 @@ model Post { } ``` - + @@ -107,9 +107,9 @@ The computed fields are type-safe and can return anything from a concatenated va Prisma Client does not yet natively support computed fields, but, you can define a function that accepts a generic type as an input then extend that generic to ensure it conforms to a specific structure. Finally, you can return that generic with additional computed fields. Let's see how that might look: -, ]}> + - + ```tsx // Define a type that needs a first and last name @@ -139,9 +139,9 @@ async function main() { } ``` - + - + ```js function computeFullName(user) { @@ -157,7 +157,7 @@ async function main() { } ``` - + diff --git a/content/200-orm/200-prisma-client/100-queries/063-excluding-fields.mdx b/content/200-orm/200-prisma-client/100-queries/063-excluding-fields.mdx index 3838008485..c3762162b1 100644 --- a/content/200-orm/200-prisma-client/100-queries/063-excluding-fields.mdx +++ b/content/200-orm/200-prisma-client/100-queries/063-excluding-fields.mdx @@ -16,9 +16,9 @@ Prisma Client doesn't have a native way of excluding fields yet, but it's easy t The following is a type-safe `exclude` function returns a user without the `password` field. -, ]}> + - + ```tsx // Exclude keys from user @@ -37,9 +37,9 @@ function main() { } ``` - + - + ```js // Exclude keys from user @@ -55,7 +55,7 @@ function main() { } ``` - + diff --git a/content/200-orm/200-prisma-client/100-queries/064-custom-models.mdx b/content/200-orm/200-prisma-client/100-queries/064-custom-models.mdx index 7e19a1e449..6c087cee96 100644 --- a/content/200-orm/200-prisma-client/100-queries/064-custom-models.mdx +++ b/content/200-orm/200-prisma-client/100-queries/064-custom-models.mdx @@ -18,9 +18,9 @@ As your application grows, you may find the need to group related logic together The following example demonstrates how to create a Prisma Client extension that adds a `signUp` and `findManyByDomain` methods to a User model. -,]}> + - + ```tsx import bcrypt from 'bcryptjs' @@ -60,11 +60,11 @@ async function main() { } ``` - + - + -```prisma file="prisma/schema.prisma" copy +```prisma file="prisma/schema.prisma" copy datasource db { provider = "postgresql" url = env("DATABASE_URL") @@ -87,7 +87,7 @@ model Password { } ``` - + diff --git a/content/200-orm/200-prisma-client/100-queries/070-case-sensitivity.mdx b/content/200-orm/200-prisma-client/100-queries/070-case-sensitivity.mdx index d512cc35b3..ab10cb2033 100644 --- a/content/200-orm/200-prisma-client/100-queries/070-case-sensitivity.mdx +++ b/content/200-orm/200-prisma-client/100-queries/070-case-sensitivity.mdx @@ -127,7 +127,7 @@ const users = await prisma.user.findMany({ }) ``` -See also: [Filtering (Case-insensitive filtering)](filtering-and-sorting#case-insensitive-filtering) +See also: [Filtering (Case-insensitive filtering)](/orm/prisma-client/queries/filtering-and-sorting#case-insensitive-filtering) #### Caveats diff --git a/content/200-orm/200-prisma-client/100-queries/090-raw-database-access/050-raw-queries.mdx b/content/200-orm/200-prisma-client/100-queries/090-raw-database-access/050-raw-queries.mdx index ab387932a2..c9855e7d0d 100644 --- a/content/200-orm/200-prisma-client/100-queries/090-raw-database-access/050-raw-queries.mdx +++ b/content/200-orm/200-prisma-client/100-queries/090-raw-database-access/050-raw-queries.mdx @@ -34,7 +34,7 @@ The other two methods are safe to use with a simple template tag, no string buil > **Note**: All methods in the above list can only run **one** query at a time. You cannot append a second query - for example, calling any of them with `select 1; select 2;` will not work. -### $queryRaw +### `$queryRaw` `$queryRaw` returns actual database records. For example, the following `SELECT` query returns all fields for each record in the `User` table: @@ -147,6 +147,7 @@ When you type the results of `$queryRaw`, the raw data might not always match th ```prisma highlight=3;normal model Post { id Int @id @default(autoincrement()) + //highlight-next-line published Boolean @default(false) title String content String? @@ -178,7 +179,7 @@ let result = await prisma.$queryRawUnsafe(`SELECT * FROM ${userTable}`) Note that if you use `$queryRawUnsafe` in conjunction with user inputs, you risk SQL injection attacks. [Learn more](#queryrawunsafe). -### $queryRawUnsafe +### `$queryRawUnsafe` The `$queryRawUnsafe` method allows you to pass a raw string (or template string) to the database. @@ -218,7 +219,7 @@ For more details on using parameterized queries, see the [parameterized queries] $queryRawUnsafe(query: string, ...values: any[]): PrismaPromise; ``` -### $executeRaw +### `$executeRaw` `$executeRaw` returns the _number of rows affected by a database operation_, such as `UPDATE` or `DELETE`. This function does **not** return database records. The following query updates records in the database and returns a count of the number of records that were updated: @@ -291,7 +292,7 @@ Be aware that: $executeRaw(query: TemplateStringsArray | Prisma.Sql, ...values: any[]): PrismaPromise; ``` -### $executeRawUnsafe +### `$executeRawUnsafe` The `$executeRawUnsafe` method allows you to pass a raw string (or template string) to the database. Like `$executeRaw`, it does **not** return database records, but returns the number of rows affected. @@ -477,7 +478,7 @@ const result = await prisma.$queryRaw`SELECT * FROM User ${ }` ``` -#### ALTER limitation (PostgreSQL) +#### `ALTER` limitation (PostgreSQL) PostgreSQL [does not support using `ALTER` in a prepared statement](https://www.postgresql.org/docs/current/sql-prepare.html), which means that the following queries **will not work**: @@ -530,9 +531,9 @@ Where this is not possible and raw queries are required, Prisma Client provides This section will provide various examples of using these methods safely and unsafely. You can test these examples in the [Prisma Playground](https://playground.prisma.io/examples). -### In $queryRaw and $executeRaw +### In `$queryRaw` and `$executeRaw` -#### Simple, safe use of $queryRaw and $executeRaw +#### Simple, safe use of `$queryRaw` and `$executeRaw` These methods can mitigate the risk of SQL injection by escaping all variables when you use tagged templates and sends all queries as prepared statements. @@ -551,7 +552,7 @@ const result = console.log(result) ``` -#### Unsafe use of $queryRaw and $executeRaw +#### Unsafe use of `$queryRaw` and `$executeRaw` However, it is also possible to use these methods in unsafe ways. @@ -608,7 +609,7 @@ const result = await prisma.$queryRaw(query) console.log(result) ``` -#### Safely using $queryRaw and $executeRaw in more complex scenarios +#### Safely using `$queryRaw` and `$executeRaw` in more complex scenarios ##### Building raw queries separate to query execution @@ -695,9 +696,9 @@ const result = await prisma.$queryRaw(query) console.log(result) ``` -### In $queryRawUnsafe and $executeRawUnsafe +### In `$queryRawUnsafe` and `$executeRawUnsafe` -#### Using $queryRawUnsafe and $executeRawUnsafe unsafely +#### Using `$queryRawUnsafe` and `$executeRawUnsafe` unsafely If you cannot use tagged templates, you can instead use [`$queryRawUnsafe`](/orm/prisma-client/queries/raw-database-access/raw-queries#queryrawunsafe) or [`$executeRawUnsafe`](/orm/prisma-client/queries/raw-database-access/raw-queries#executerawunsafe) but **be aware that your these functions make it much more likely that your code will be vulnerable to SQL injection**. @@ -757,7 +758,7 @@ For MongoDB in versions `3.9.0` and later, Prisma Client exposes three methods t - `.findRaw` to find zero or more documents that match the filter. - `.aggregateRaw` to perform aggregation operations on a collection. -### $runCommandRaw +### `$runCommandRaw` `$runCommandRaw` runs a raw MongoDB command against the database. As input, it accepts all [MongoDB database commands](https://www.mongodb.com/docs/manual/reference/command/), with the following exceptions: @@ -810,7 +811,7 @@ Do not use `$runCommandRaw` for queries which contain the `"find"` or `"aggregat $runCommandRaw(command: InputJsonObject): PrismaPromise; ``` -### findRaw +### `findRaw` `.findRaw` returns actual database records. It will find zero or more documents that match the filter on the `User` collection: @@ -835,7 +836,7 @@ const result = await prisma.user.findRaw({ - `options`: Additional options to pass to the [`find` command](https://docs.mongodb.com/manual/reference/command/find/#command-fields). -### aggregateRaw +### `aggregateRaw` `.aggregateRaw` returns aggregated database records. It will perform aggregation operations on the `User` collection: diff --git a/content/200-orm/200-prisma-client/100-queries/090-raw-database-access/100-custom-and-type-safe-queries.mdx b/content/200-orm/200-prisma-client/100-queries/090-raw-database-access/100-custom-and-type-safe-queries.mdx index fc85d59890..8391ab5205 100644 --- a/content/200-orm/200-prisma-client/100-queries/090-raw-database-access/100-custom-and-type-safe-queries.mdx +++ b/content/200-orm/200-prisma-client/100-queries/090-raw-database-access/100-custom-and-type-safe-queries.mdx @@ -39,12 +39,14 @@ If you haven't already, enable the `postgresqlExtensions` Preview feature and ad ```prisma highlight=3,9;add generator client { provider = "prisma-client-js" + //add-next-line previewFeatures = ["postgresqlExtensions"] } datasource db { provider = "postgresql" url = env("DATABASE_URL") + //add-next-line extensions = [postgis] } ``` @@ -124,7 +126,7 @@ CREATE TABLE "PointOfInterest" ( SafeQL is easily integrated with Prisma ORM in order to lint `$queryRaw` and `$executeRaw` Prisma operations. You can reference [SafeQL's integration guide](https://safeql.dev/compatibility/prisma.html) or follow the steps below. -### 3.1. Install the @ts-safeql/eslint-plugin npm package +### 3.1. Install the `@ts-safeql/eslint-plugin` npm package ```terminal npm install -D @ts-safeql/eslint-plugin @@ -132,7 +134,7 @@ npm install -D @ts-safeql/eslint-plugin This ESLint plugin is what will allow for queries to be linted. -### 3.2. Add @ts-safeql/eslint-plugin to your ESLint plugins +### 3.2. Add `@ts-safeql/eslint-plugin` to your ESLint plugins Next, add `@ts-safeql/eslint-plugin` to your list of ESLint plugins. In our example we are using an `.eslintrc.js` file, but this can be applied to any way that you [configure ESLint](https://eslint.org/docs/latest/use/configure/). @@ -144,7 +146,7 @@ module.exports = { } ``` -### 3.3 Add @ts-safeql/check-sql rules +### 3.3 Add `@ts-safeql/check-sql` rules Now, setup the rules that will enable SafeQL to mark invalid SQL queries as ESLint errors. @@ -152,6 +154,7 @@ Now, setup the rules that will enable SafeQL to mark invalid SQL queries as ESLi /** @type {import('eslint').Linter.Config} */ module.exports = { plugins: [..., '@ts-safeql/eslint-plugin'], + //add-start rules: { '@ts-safeql/check-sql': [ 'error', @@ -170,6 +173,7 @@ module.exports = { ], }, } +//add-end ``` > **Note**: If your `PrismaClient` instance is called something different than `prisma`, you need to adjust the value for `tag` accordingly. For example, if it is called `db`, the value for `tag` should be `'db.+($queryRaw|$executeRaw)'`. @@ -189,21 +193,25 @@ npm install dotenv Then update your ESLint config as follows: ```js file=.eslintrc.js highlight=1,6-9,16;add +//add-next-line require('dotenv').config() /** @type {import('eslint').Linter.Config} */ module.exports = { plugins: ['@ts-safeql/eslint-plugin'], + //add-start // exclude `parserOptions` if you are not using TypeScript parserOptions: { project: './tsconfig.json', }, + //add-end rules: { '@ts-safeql/check-sql': [ 'error', { connections: [ { + //add-next-line connectionUrl: process.env.DATABASE_URL, // The migrations path: migrationsDir: './prisma/migrations', diff --git a/content/200-orm/200-prisma-client/100-queries/090-raw-database-access/index.mdx b/content/200-orm/200-prisma-client/100-queries/090-raw-database-access/index.mdx index eaa0881cf3..7411f18751 100644 --- a/content/200-orm/200-prisma-client/100-queries/090-raw-database-access/index.mdx +++ b/content/200-orm/200-prisma-client/100-queries/090-raw-database-access/index.mdx @@ -2,6 +2,7 @@ title: 'Raw database access' metaTitle: 'Raw database access' metaDescription: 'Raw database access with Prisma Client.' +hide_table_of_contents: true --- While Prisma ORM aims to make all your database queries intuitive, type-safe, and convenient, there may be situations where you need to drop down to raw queries. diff --git a/content/200-orm/200-prisma-client/100-queries/100-query-optimization-performance.mdx b/content/200-orm/200-prisma-client/100-queries/100-query-optimization-performance.mdx index 239413acad..490daec084 100644 --- a/content/200-orm/200-prisma-client/100-queries/100-query-optimization-performance.mdx +++ b/content/200-orm/200-prisma-client/100-queries/100-query-optimization-performance.mdx @@ -21,7 +21,7 @@ Alternatively, if you are only interested in the time taken to run a query, you The n+1 problem occurs when you loop through the results of a query and perform one additional query **per result**, resulting in `n` number of queries plus the original (n+1). This is a common problem with ORMs, particularly in combination with GraphQL, because it is not always immediately obvious that your code is generating inefficient queries. -### Solving n+1 in GraphQL with findUnique() and Prisma Client's dataloader +### Solving n+1 in GraphQL with `findUnique` and Prisma Client's dataloader
@@ -165,15 +165,19 @@ const User = objectType({ t.nonNull.list.nonNull.field('posts', { type: 'Post', resolve: (parent, _, context) => { + //delete-start return context.prisma.post.findMany({ where: { authorId: parent.id || undefined }, }) + //delete-end + //add-start return context.prisma.user .findUnique({ where: { id: parent.id || undefined }, }) .posts() }, + //add-end }) }, }) @@ -264,7 +268,7 @@ This is not an efficient way to query. Instead, you can: - Use nested reads ([`include`](/orm/reference/prisma-client-reference#include) ) to return users and related posts - Use the [`in`](/orm/reference/prisma-client-reference#in) filter -#### Solving n+1 with include +#### Solving n+1 with `include` You can use `include` to return each user's posts. This only results in **two** SQL queries - one to get users, and one to get posts. This is known as a [nested read](/orm/prisma-client/queries/relation-queries#nested-reads). @@ -290,7 +294,7 @@ SELECT "public"."Post"."id", "public"."Post"."title", "public"."Post"."authorId" -#### Solving n+1 with in +#### Solving n+1 with `in` If you have a list of user IDs, you can use the `in` filter to return all posts where the `authorId` is `in` that list of IDs: @@ -331,7 +335,7 @@ It is generally more performant to read and write large amounts of data in bulk - [`updateMany()`](/orm/reference/prisma-client-reference#updatemany) - [`findMany()`](/orm/reference/prisma-client-reference#findmany) -## Using select to limit number of columns returned +## Using `select` to limit number of columns returned Using `select` to limit the number of columns that are returned is **unlikely to have an effect on performance** unless you have identified this as a performance bottleneck through testing. For example, reading all fields may negatively affect performance if you have: diff --git a/content/200-orm/200-prisma-client/100-queries/index.mdx b/content/200-orm/200-prisma-client/100-queries/index.mdx index 5f98e3590e..befc525670 100644 --- a/content/200-orm/200-prisma-client/100-queries/index.mdx +++ b/content/200-orm/200-prisma-client/100-queries/index.mdx @@ -2,6 +2,7 @@ title: 'Queries' metaTitle: 'Prisma Client Queries' metaDescription: 'Learn about the database queries you can send with Prisma Client.' +hide_table_of_contents: true --- ## In this section diff --git a/content/200-orm/200-prisma-client/200-special-fields-and-types/057-composite-types.mdx b/content/200-orm/200-prisma-client/200-special-fields-and-types/057-composite-types.mdx index ff7beb91be..e437221854 100644 --- a/content/200-orm/200-prisma-client/200-special-fields-and-types/057-composite-types.mdx +++ b/content/200-orm/200-prisma-client/200-special-fields-and-types/057-composite-types.mdx @@ -30,7 +30,7 @@ This page explains how to: We’ll use this schema for the examples that follow: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers generator client { provider = "prisma-client-js" } @@ -116,6 +116,7 @@ In our example schema, suppose that you add a required field to `photo`. This fi ... type Photo { ... + //add-next-line bitDepth Int @default(8) } @@ -139,7 +140,7 @@ Error converting field "bitDepth" of expected non-nullable type "int", found incompatible value of "null". ``` -## Finding records that contain composite types with find and findMany +## Finding records that contain composite types with `find` and `findMany` Records can be filtered by a composite type within the `where` operation. @@ -319,7 +320,7 @@ const product = prisma.product.findFirst({ }) ``` -## Creating records with composite types using create and createMany +## Creating records with composite types using `create` and `createMany` @@ -459,7 +460,7 @@ const product = await prisma.product.createMany({ }) ``` -## Changing composite types within update and updateMany +## Changing composite types within `update` and `updateMany` @@ -626,7 +627,7 @@ const product = prisma.product.update({ }) ``` -## Upserting composite types with upsert +## Upserting composite types with `upsert` @@ -661,7 +662,7 @@ const product = await prisma.product.upsert({ }) ``` -## Deleting records that contain composite types with delete and deleteMany +## Deleting records that contain composite types with `delete` and `deleteMany` To remove records which embed a composite type, use the `delete` or `deleteMany` methods. This will also remove the embedded composite type. diff --git a/content/200-orm/200-prisma-client/200-special-fields-and-types/080-null-and-undefined.mdx b/content/200-orm/200-prisma-client/200-special-fields-and-types/080-null-and-undefined.mdx index a7ac15bbd6..e08e7a4f9b 100644 --- a/content/200-orm/200-prisma-client/200-special-fields-and-types/080-null-and-undefined.mdx +++ b/content/200-orm/200-prisma-client/200-special-fields-and-types/080-null-and-undefined.mdx @@ -31,7 +31,7 @@ The data below represents a `User` table. This set of data will be used in all o -## null and undefined in queries that affect _many_ records +## `null` and `undefined` in queries that affect _many_ records This section will cover how `undefined` and `null` values affect the behavior of queries that interact with or create multiple records in a database. @@ -136,7 +136,7 @@ This query will select every row from the `User` table. Although this section's examples focused on the `findMany` function, the same concepts apply to any function that can affect multiple records, such as `updateMany` and `deleteMany`. -## null and undefined in queries that affect _one_ record +## `null` and `undefined` in queries that affect _one_ record This section will cover how `undefined` and `null` values affect the behavior of queries that interact with or create a single record in a database. @@ -228,7 +228,7 @@ const user = await prisma.user.findFirst() Although this section's examples focused on the `findFirst` function, the same concepts apply to any function that affects a single record. -## null and undefined in a GraphQL resolver +## `null` and `undefined` in a GraphQL resolver For this example, consider a database based on the following Prisma schema: @@ -259,8 +259,10 @@ updateUser: (parent, args, ctx: Context) => { return ctx.prisma.user.update({ where: { id: Number(args.id) }, data: { + //highlight-start | email: args.authorEmail, // email cannot be null | name: args.authorName // name set to null - potentially unwanted behavior + //highlight-end }, }) }, @@ -273,14 +275,16 @@ updateUser: (parent, args, ctx: Context) => { return ctx.prisma.user.update({ where: { id: Number(args.id) }, data: { + //highlight-start | email: args.authorEmail != null ? args.authorEmail : undefined, // If null, do nothing | name: args.authorName != null ? args.authorName : undefined // If null, do nothing + //highlight-end }, }) }, ``` -## The effect of null and undefined on conditionals +## The effect of `null` and `undefined` on conditionals There are some caveats to filtering with conditionals which might produce unexpected results. When filtering with conditionals you might expect one result but receive another given how Prisma Client treats nullable values. diff --git a/content/200-orm/200-prisma-client/200-special-fields-and-types/100-working-with-json-fields.mdx b/content/200-orm/200-prisma-client/200-special-fields-and-types/100-working-with-json-fields.mdx index e615b2d492..25a59b2a9f 100644 --- a/content/200-orm/200-prisma-client/200-special-fields-and-types/100-working-with-json-fields.mdx +++ b/content/200-orm/200-prisma-client/200-special-fields-and-types/100-working-with-json-fields.mdx @@ -15,6 +15,7 @@ model User { email String @unique name String? posts Post[] + //highlight-next-line extendedPetsData Json? } ``` @@ -57,7 +58,7 @@ Reasons to store data as JSON rather than representing data as related models in - You need to store data that does not have a consistent structure - You are importing data from another system and do not want to map that data to Prisma models -## Reading a Json field +## Reading a `Json` field You can use the `Prisma.JsonArray` and `Prisma.JsonObject` utility classes to work with the contents of a `Json` field: @@ -86,7 +87,7 @@ if ( See also: [Advanced example: Update a nested JSON key value](#advanced-example-update-a-nested-json-key-value) -## Writing to a Json field +## Writing to a `Json` field The following example writes a JSON object to the `extendedPetsData` field: @@ -108,7 +109,7 @@ const createUser = await prisma.user.create({ See also: [Advanced example: Update a nested JSON key value](#advanced-example-update-a-nested-json-key-value) -## Filter on a Json field +## Filter on a `Json` field From v2.23.0, you can filter rows by the data inside a `Json` type. We call this **advanced `Json` filtering**. @@ -188,8 +189,8 @@ In [2.23.0](https://github.com/prisma/prisma/releases/tag/2.23.0) and later, you The following query returns all users where the value of `petName` is `"Claudine"`: -, ]}> - + + ```ts const getUsers = await prisma.user.findMany({ @@ -202,8 +203,8 @@ const getUsers = await prisma.user.findMany({ }) ``` - - + + ```ts const getUsers = await prisma.user.findMany({ @@ -216,14 +217,14 @@ const getUsers = await prisma.user.findMany({ }) ``` - + The following query returns all users where the value of `petType` _contains_ `"cat"`: -, ]}> - + + ```ts const getUsers = await prisma.user.findMany({ @@ -236,8 +237,8 @@ const getUsers = await prisma.user.findMany({ }) ``` - - + + ```ts const getUsers = await prisma.user.findMany({ @@ -250,7 +251,7 @@ const getUsers = await prisma.user.findMany({ }) ``` - + The following string filters are available: @@ -282,8 +283,8 @@ You can filter on nested JSON properties. In the following examples, the value o The following query returns all users where `"pet2"` → `"petName"` is `"Sunny"`: -, ]}> - + + ```ts const getUsers = await prisma.user.findMany({ @@ -296,8 +297,8 @@ const getUsers = await prisma.user.findMany({ }) ``` - - + + ```ts const getUsers = await prisma.user.findMany({ @@ -310,7 +311,7 @@ const getUsers = await prisma.user.findMany({ }) ``` - + The following query returns all users where: @@ -318,8 +319,8 @@ The following query returns all users where: - `"pet2"` → `"petName"` is `"Sunny"` - `"pet2"` → `"features"` → `"furColor"` contains `"black"` -, ]}> - + + ```ts const getUsers = await prisma.user.findMany({ @@ -342,8 +343,8 @@ const getUsers = await prisma.user.findMany({ }) ``` - - + + ```ts const getUsers = await prisma.user.findMany({ @@ -366,7 +367,7 @@ const getUsers = await prisma.user.findMany({ }) ``` - + @@ -380,8 +381,8 @@ You can filter on the presence of a specific value in a scalar array (strings, i The following query returns all users with a pet named `"Claudine"`: -, ]}> - + + ```ts const getUsers = await prisma.user.findMany({ @@ -399,8 +400,8 @@ const getUsers = await prisma.user.findMany({ - - + + ```ts const getUsers = await prisma.user.findMany({ @@ -412,7 +413,7 @@ const getUsers = await prisma.user.findMany({ }) ``` - + @@ -437,8 +438,8 @@ You can filter on the presence of a specific value in a scalar array (strings, i The following query returns all users that foster a cat named `"Fido"`: -, ]}> - + + ```ts const getUsers = await prisma.user.findMany({ @@ -457,8 +458,8 @@ const getUsers = await prisma.user.findMany({ - - + + ```ts const getUsers = await prisma.user.findMany({ @@ -471,13 +472,13 @@ const getUsers = await prisma.user.findMany({ }) ``` - + The following query returns all users that foster cats named `"Fido"` _and_ `"Bob"`: -, ]}> - + + ```ts const getUsers = await prisma.user.findMany({ @@ -490,8 +491,8 @@ const getUsers = await prisma.user.findMany({ }) ``` - - + + ```ts const getUsers = await prisma.user.findMany({ @@ -504,13 +505,13 @@ const getUsers = await prisma.user.findMany({ }) ``` - + #### JSON object arrays -, ]}> - + + ```ts const json = [{ status: 'expired', insuranceID: 92 }] @@ -525,8 +526,8 @@ const checkJson = await prisma.user.findMany({ }) ``` - - + + ```ts const json = { status: 'expired', insuranceID: 92 } @@ -541,7 +542,7 @@ const checkJson = await prisma.user.findMany({ }) ``` - + - If you are using PostgreSQL, you must pass in an array of objects to match, even if that array only contains one object: @@ -580,8 +581,8 @@ You can filter on the value of an element in a specific position. { "owned": ["Bob", "Sunny"], "fostering": ["Fido"] } ``` -, ]}> - + + ```ts const getUsers = await prisma.user.findMany({ @@ -594,9 +595,9 @@ const getUsers = await prisma.user.findMany({ }) ``` - + - + ```ts const getUsers = await prisma.user.findMany({ @@ -609,7 +610,7 @@ const getUsers = await prisma.user.findMany({ }) ``` - + @@ -652,10 +653,6 @@ In the following example, the value of `extendedPetsData` is an array of objects The following query returns all users where at least one pet is a moose: -]}> - - - ```ts const getUsers = await prisma.user.findMany({ where: { @@ -667,21 +664,11 @@ const getUsers = await prisma.user.findMany({ }) ``` - - - - - - - `$[*]` is the root array of pet objects - `petType` matches the `petType` key in any pet object The following query returns all users where at least one pet has an expired insurance: -]}> - - - ```ts const getUsers = await prisma.user.findMany({ where: { @@ -693,14 +680,6 @@ const getUsers = await prisma.user.findMany({ }) ``` - - - - - - - - - `$[*]` is the root array of pet objects - `insurances[*]` matches any `insurances` array inside any pet object - `status` matches any `status` key in any insurance object @@ -726,8 +705,8 @@ The following example: 1. Change the `"status"` of each insurance object to `"expired"` 1. Get all users that have an expired insurance where the ID is `92` -, ]}> - + + ```ts const userQueries: string | any[] = [] @@ -790,9 +769,9 @@ const checkJson = await prisma.user.findMany({ console.log(checkJson.length) ``` - + - + ```ts const userQueries: string | any[] = [] @@ -855,10 +834,10 @@ const checkJson = await prisma.user.findMany({ console.log(checkJson.length) ``` - + -## Using null Values +## Using `null` Values There are two types of `null` values possible for a `JSON` field in an SQL database. @@ -910,7 +889,7 @@ prisma.log.findMany({ }) ``` -### Inserting null Values +### Inserting `null` Values This also applies to `create`, `update` and `upsert`. To insert a `null` value into a `Json` field, you would write: @@ -937,7 +916,7 @@ prisma.log.create({ }) ``` -### Filtering by null Values +### Filtering by `null` Values To filter by `JsonNull` or `DbNull`, you would write: @@ -959,11 +938,11 @@ These _null enums_ do not apply to MongoDB because MongoDB does not differentiat -## Typed Json +## Typed `Json` By default, `Json` fields are not typed in Prisma models. To accomplish strong typing inside of these fields, you will need to use an external package like [prisma-json-types-generator](https://www.npmjs.com/package/prisma-json-types-generator) to accomplish this. -### Using prisma-json-types-generator +### Using `prisma-json-types-generator` First, install and configure `prisma-json-types-generator` [according to the package's instructions](https://www.npmjs.com/package/prisma-json-types-generator#using-it). @@ -978,10 +957,11 @@ model Log { You can update it and type it by using [abstract syntax tree comments](/orm/prisma-schema/overview#comments) -```prisma highlight=4;normal file=schema.prisma +```prisma highlight=4;normal file=schema.prisma showLineNumbers model Log { id Int @id + //highlight-next-line /// [LogMetaType] meta Json } @@ -989,7 +969,7 @@ model Log { Then, make sure you define the above type in a type declaration file included in your `tsconfig.json` -```ts file=types.ts +```ts file=types.ts showLineNumbers declare global { namespace PrismaJson { type LogMetaType = { timestamp: number; host: string } @@ -999,7 +979,7 @@ declare global { Now, when working with `Log.meta` it will be strongly typed! -## Json FAQs +## `Json` FAQs ### Can you select a subset of JSON key/values to return? diff --git a/content/200-orm/200-prisma-client/200-special-fields-and-types/200-working-with-scalar-lists-arrays.mdx b/content/200-orm/200-prisma-client/200-special-fields-and-types/200-working-with-scalar-lists-arrays.mdx index 1af8fbac32..6682d03c9d 100644 --- a/content/200-orm/200-prisma-client/200-special-fields-and-types/200-working-with-scalar-lists-arrays.mdx +++ b/content/200-orm/200-prisma-client/200-special-fields-and-types/200-working-with-scalar-lists-arrays.mdx @@ -9,29 +9,31 @@ tocDepth: 3 [Scalar lists](/orm/reference/prisma-schema-reference#-modifier) are represented by the `[]` modifier and are only available if the underlying database supports scalar lists. The following example has one scalar `String` list named `pets`: -, ]}> - + + ```prisma highlight=4;normal model User { id Int @id @default(autoincrement()) name String + //highlight-next-line pets String[] } ``` - - + + ```prisma highlight=4;normal model User { id String @id @default(auto()) @map("_id") @db.ObjectId name String + //highlight-next-line pets String[] } ``` - + Example field value: @@ -157,7 +159,7 @@ const posts = await prisma.post.findMany({ }) ``` -### NULL values in arrays +### `NULL` values in arrays diff --git a/content/200-orm/200-prisma-client/200-special-fields-and-types/300-working-with-composite-ids-and-constraints.mdx b/content/200-orm/200-prisma-client/200-special-fields-and-types/300-working-with-composite-ids-and-constraints.mdx index 127a4d0cf8..f5fd11161f 100644 --- a/content/200-orm/200-prisma-client/200-special-fields-and-types/300-working-with-composite-ids-and-constraints.mdx +++ b/content/200-orm/200-prisma-client/200-special-fields-and-types/300-working-with-composite-ids-and-constraints.mdx @@ -40,6 +40,7 @@ model Like { User User @relation(fields: [userId], references: [id]) Post Post @relation(fields: [postId], references: [id]) + //highlight-next-line @@id([postId, userId]) } ``` @@ -64,6 +65,7 @@ model Like { User User @relation(fields: [userId], references: [id]) Post Post @relation(fields: [postId], references: [id]) + //highlight-next-line @@id(name: "likeId", [postId, userId]) } ``` diff --git a/content/200-orm/200-prisma-client/200-special-fields-and-types/index.mdx b/content/200-orm/200-prisma-client/200-special-fields-and-types/index.mdx index 72455c4432..dfcf3c9cbe 100644 --- a/content/200-orm/200-prisma-client/200-special-fields-and-types/index.mdx +++ b/content/200-orm/200-prisma-client/200-special-fields-and-types/index.mdx @@ -11,7 +11,7 @@ This section covers various special fields and types you can use with Prisma Cli -## Working with Decimal +## Working with `Decimal` `Decimal` fields are represented by the [`Decimal.js` library](https://mikemcl.github.io/decimal.js/). The following example demonstrates how to import and use `Prisma.Decimal`: @@ -25,13 +25,15 @@ const newTypes = await prisma.sample.create({ }) ``` +
+ The use of the `Decimal` field [is not currently supported in MongoDB](https://github.com/prisma/prisma/issues/12637). -## Working with BigInt +## Working with `BigInt` `BigInt` fields are represented by the [`BigInt` type](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt) (Node.js 10.4.0+ required). The following example demonstrates how to use the `BigInt` type: @@ -62,7 +64,7 @@ JSON.stringify( ) ``` -## Working with Bytes +## Working with `Bytes` `Bytes` fields are represented by the [`Buffer`](https://nodejs.org/api/buffer.html) type. The following example demonstrates how to use the `Buffer` type: @@ -76,14 +78,14 @@ const newTypes = await prisma.sample.create({ }) ``` -## Working with Json +## Working with `Json` -See: [Working with `Json` fields](working-with-json-fields) +See: [Working with `Json` fields](/orm/prisma-client/special-fields-and-types/working-with-json-fields) ## Working with scalar lists / scalar arrays -See: [Working with scalar lists / arrays](working-with-scalar-lists-arrays) +See: [Working with scalar lists / arrays](/orm/prisma-client/special-fields-and-types/working-with-scalar-lists-arrays) ## Working with composite IDs and compound unique constraints -See: [Working with composite IDs and compound unique constraints](working-with-composite-ids-and-constraints) +See: [Working with composite IDs and compound unique constraints](/orm/prisma-client/special-fields-and-types/working-with-composite-ids-and-constraints) diff --git a/content/200-orm/200-prisma-client/300-client-extensions/100-model.mdx b/content/200-orm/200-prisma-client/300-client-extensions/100-model.mdx index a74d1a62c2..c665de5ef0 100644 --- a/content/200-orm/200-prisma-client/300-client-extensions/100-model.mdx +++ b/content/200-orm/200-prisma-client/300-client-extensions/100-model.mdx @@ -2,7 +2,7 @@ title: '`model`: Add custom methods to your models' metaTitle: 'Prisma Client extensions: model component' metaDescription: 'Extend the functionality of Prisma Client, model component' -tocDepth: 4 +toc_max_heading_level: 4 --- diff --git a/content/200-orm/200-prisma-client/300-client-extensions/110-client.mdx b/content/200-orm/200-prisma-client/300-client-extensions/110-client.mdx index 8475af3926..845a50cfcc 100644 --- a/content/200-orm/200-prisma-client/300-client-extensions/110-client.mdx +++ b/content/200-orm/200-prisma-client/300-client-extensions/110-client.mdx @@ -2,7 +2,7 @@ title: '`client`: Add methods to Prisma Client' metaTitle: 'Prisma Client extensions: client component' metaDescription: 'Extend the functionality of Prisma Client, client component' -tocDepth: 4 +toc_max_heading_level: 4 --- diff --git a/content/200-orm/200-prisma-client/300-client-extensions/120-query.mdx b/content/200-orm/200-prisma-client/300-client-extensions/120-query.mdx index 919755381b..85167fc817 100644 --- a/content/200-orm/200-prisma-client/300-client-extensions/120-query.mdx +++ b/content/200-orm/200-prisma-client/300-client-extensions/120-query.mdx @@ -2,7 +2,7 @@ title: '`query`: Create custom Prisma Client queries' metaTitle: 'Prisma Client extensions: query component' metaDescription: 'Extend the functionality of Prisma Client, query component' -tocDepth: 4 +toc_max_heading_level: 4 --- @@ -189,8 +189,8 @@ const prisma = new PrismaClient().$extends({ To apply custom behavior to a specific top-level raw query operation, use the name of a top-level raw query function instead of a model name: -, ]}> - + + ```ts copy const prisma = new PrismaClient().$extends({ @@ -215,8 +215,8 @@ const prisma = new PrismaClient().$extends({ }) ``` - - + + ```ts copy const prisma = new PrismaClient().$extends({ @@ -229,7 +229,7 @@ const prisma = new PrismaClient().$extends({ }) ``` - + ### Mutate the result of a query @@ -291,7 +291,7 @@ You can use query extensions or [middlewares](/orm/prisma-client/client-extensio You can use Prisma Client extensions in all scenarios where middlewares can be used. -### If you use the query extension component and middlewares +### If you use the `query` extension component and middlewares If you use the `query` extension component and middlewares in your project, then the following rules and priorities apply: diff --git a/content/200-orm/200-prisma-client/300-client-extensions/130-result.mdx b/content/200-orm/200-prisma-client/300-client-extensions/130-result.mdx index 14c7d6e9bc..615ccba567 100644 --- a/content/200-orm/200-prisma-client/300-client-extensions/130-result.mdx +++ b/content/200-orm/200-prisma-client/300-client-extensions/130-result.mdx @@ -2,7 +2,7 @@ title: '`result`: Add custom fields and methods to query results' metaTitle: 'Prisma Client extensions: result component' metaDescription: 'Extend the functionality of Prisma Client, result component' -tocDepth: 4 +toc_max_heading_level: 4 --- diff --git a/content/200-orm/200-prisma-client/300-client-extensions/140-shared-extensions.mdx b/content/200-orm/200-prisma-client/300-client-extensions/140-shared-extensions.mdx index 5efcefbe4f..4f4dc10fef 100644 --- a/content/200-orm/200-prisma-client/300-client-extensions/140-shared-extensions.mdx +++ b/content/200-orm/200-prisma-client/300-client-extensions/140-shared-extensions.mdx @@ -2,7 +2,7 @@ title: 'Shared Prisma Client extensions' metaTitle: 'Shared Prisma Client extensions' metaDescription: 'Share extensions or import shared extensions into your Prisma project' -tocDepth: 4 +toc_max_heading_level: 4 --- diff --git a/content/200-orm/200-prisma-client/300-client-extensions/500-middleware/100-soft-delete-middleware.mdx b/content/200-orm/200-prisma-client/300-client-extensions/500-middleware/100-soft-delete-middleware.mdx index 1eaba0e919..20df223321 100644 --- a/content/200-orm/200-prisma-client/300-client-extensions/500-middleware/100-soft-delete-middleware.mdx +++ b/content/200-orm/200-prisma-client/300-client-extensions/500-middleware/100-soft-delete-middleware.mdx @@ -2,7 +2,7 @@ title: 'Middleware sample: soft delete' metaTitle: 'Middleware sample: soft delete (Reference)' metaDescription: 'How to use middleware to intercept deletes and set a field value instead of deleting the record.' -tocDepth: 4 +toc_max_heading_level: 4 --- @@ -48,6 +48,7 @@ model Post { userId Int? tags Tag[] views Int @default(0) + //highlight-next-line deleted Boolean @default(false) } @@ -76,6 +77,7 @@ Add a field named `deleted` to the `Post` model. You can choose between two fiel model Post { id Int @id @default(autoincrement()) ... + //highlight-next-line deleted Boolean @default(false) } ``` @@ -86,6 +88,7 @@ Add a field named `deleted` to the `Post` model. You can choose between two fiel model Post { id Int @id @default(autoincrement()) ... + //highlight-next-line deleted DateTime? } ``` @@ -246,11 +249,11 @@ Are the posts still available?: Yes! #################################### ``` - +:::tip Comment out the middleware to see the message change. - +::: ✔ Pros of this approach to soft delete include: @@ -261,11 +264,11 @@ Comment out the middleware to see the message change. - Content can still be read and updated unless you explicitly filter by `where: { deleted: false }` - in a large project with a lot of queries, there is a risk that soft deleted content will still be displayed - You can still use raw SQL to delete records - +:::tip You can create rules or triggers ([MySQL](https://dev.mysql.com/doc/refman/8.0/en/trigger-syntax.html) and [PostgreSQL](https://www.postgresql.org/docs/8.1/rules-update.html)) at a database level to prevent records from being deleted. - +::: ## Step 3: Optionally prevent read/update of soft deleted records @@ -656,7 +659,7 @@ Number of SOFT deleted posts: 95 ## FAQ -### Can I add a global includeDeleted to the Post model? +### Can I add a global `includeDeleted` to the `Post` model? You may be tempted to 'hack' your API by adding a `includeDeleted` property to the `Post` model and make the following query possible: diff --git a/content/200-orm/200-prisma-client/300-client-extensions/500-middleware/300-session-data-middleware.mdx b/content/200-orm/200-prisma-client/300-client-extensions/500-middleware/300-session-data-middleware.mdx index bd70ecdb2e..6893713396 100644 --- a/content/200-orm/200-prisma-client/300-client-extensions/500-middleware/300-session-data-middleware.mdx +++ b/content/200-orm/200-prisma-client/300-client-extensions/500-middleware/300-session-data-middleware.mdx @@ -2,6 +2,7 @@ title: 'Middleware sample: session data' metaTitle: 'Middleware sample: session data (Reference)' metaDescription: 'How to use middleware to set the value taken from session state.' +hide_table_of_contents: true --- diff --git a/content/200-orm/200-prisma-client/300-client-extensions/500-middleware/index.mdx b/content/200-orm/200-prisma-client/300-client-extensions/500-middleware/index.mdx index 2d87c9e730..35fd2675e1 100644 --- a/content/200-orm/200-prisma-client/300-client-extensions/500-middleware/index.mdx +++ b/content/200-orm/200-prisma-client/300-client-extensions/500-middleware/index.mdx @@ -22,27 +22,31 @@ Middlewares act as query-level lifecycle hooks, which allow you to perform an ac const prisma = new PrismaClient() // Middleware 1 +//highlight-start prisma.$use(async (params, next) => { // Manipulate params here const result = await next(params) // See results here return result }) +//highlight-end // Middleware 2 +//highlight-start prisma.$use(async (params, next) => { // Manipulate params here const result = await next(params) // See results here return result }) +//highlight-end // Queries here ``` -Do not invoke next multiple times within a middleware when using [batch transactions](/orm/prisma-client/queries/transactions#sequential-prisma-client-operations). This will cause you to break out of the transaction and lead to unexpected results. +Do not invoke `next` multiple times within a middleware when using [batch transactions](/orm/prisma-client/queries/transactions#sequential-prisma-client-operations). This will cause you to break out of the transaction and lead to unexpected results. @@ -50,10 +54,10 @@ Do not invoke next multiple times within a middleware w Possible use cases for middleware include: -- Setting or overwriting a field value - for example, [setting the context language of a blog post comment](session-data-middleware) +- Setting or overwriting a field value - for example, [setting the context language of a blog post comment](/orm/prisma-client/client-extensions/middleware/session-data-middleware) - Validating input data - for example, check user input for inappropriate language via an external service -- Intercept a `delete` query and change it to an `update` in order to perform a [soft delete](soft-delete-middleware) -- [Log the time taken to perform a query](logging-middleware) +- Intercept a `delete` query and change it to an `update` in order to perform a [soft delete](/orm/prisma-client/client-extensions/middleware/soft-delete-middleware) +- [Log the time taken to perform a query](/orm/prisma-client/client-extensions/middleware/logging-middleware) There are many more use cases for middleware - this list serves as inspiration for the types of problems that middleware is designed to address. @@ -75,12 +79,14 @@ import { PrismaClient } from '@prisma/client' const prisma = new PrismaClient() +//highlight-start prisma.$use(async (params, next) => { // Manipulate params here const result = await next(params) // See results here return result }) +//highlight-end const app = express() app.get('/feed', async (req, res) => { diff --git a/content/200-orm/200-prisma-client/300-client-extensions/index.mdx b/content/200-orm/200-prisma-client/300-client-extensions/index.mdx index 93364bee44..60cd750a02 100644 --- a/content/200-orm/200-prisma-client/300-client-extensions/index.mdx +++ b/content/200-orm/200-prisma-client/300-client-extensions/index.mdx @@ -2,7 +2,7 @@ title: 'Extensions' metaTitle: 'Prisma Client extensions' metaDescription: 'Extend the functionality of Prisma Client' -tocDepth: 4 +toc_max_heading_level: 4 --- @@ -87,11 +87,11 @@ You can create an extension using two primary ways: const xprisma = prisma.$extends(myExtension) ``` - + :::tip This pattern is useful for when you would like to separate extensions into multiple files or directories within a project. - + ::: The above examples use the [`model` extension component](/orm/prisma-client/client-extensions/model) to extend the `User` model. diff --git a/content/200-orm/200-prisma-client/400-type-safety/050-prisma-validator.mdx b/content/200-orm/200-prisma-client/400-type-safety/050-prisma-validator.mdx index 7877c696e6..47afa0a179 100644 --- a/content/200-orm/200-prisma-client/400-type-safety/050-prisma-validator.mdx +++ b/content/200-orm/200-prisma-client/400-type-safety/050-prisma-validator.mdx @@ -48,20 +48,24 @@ The object `userEmail` has been created to select only the user's `email`, and y `Prisma` has a way to validate generated types to make sure they are type-safe, a utility function available on the namespace called `validator`. -## Using the Prisma.validator +## Using the `Prisma.validator` The following example passes the `UserSelect` generated type into the `Prisma.validator` utility function and defines the expected return type in much the same way as the previous example. ```ts highlight=3,4,5;delete|7-9;add import { Prisma } from '@prisma/client' +//delete-start const userEmail: Prisma.UserSelect = { email: true, } +//delete-end +//add-start const userEmail = Prisma.validator()({ email: true, }) +//add-end // Run inside async function const user = await prisma.user.findUnique({ @@ -92,7 +96,7 @@ The big difference is that the `userEmail` object is now type-safe. If you hover This functionality is handy when combined with user defined input, like form data. -## Combining Prisma.validator with form input +## Combining `Prisma.validator` with form input The following example creates a type-safe function from the `Prisma.validator` which can be used when interacting with user created data, such as form inputs. diff --git a/content/200-orm/200-prisma-client/400-type-safety/100-operating-against-partial-structures-of-model-types.mdx b/content/200-orm/200-prisma-client/400-type-safety/100-operating-against-partial-structures-of-model-types.mdx index 5867bca503..76880508b7 100644 --- a/content/200-orm/200-prisma-client/400-type-safety/100-operating-against-partial-structures-of-model-types.mdx +++ b/content/200-orm/200-prisma-client/400-type-safety/100-operating-against-partial-structures-of-model-types.mdx @@ -69,7 +69,7 @@ type UserPersonalData = { } ``` -While this is certainly feasible, this approach increases the maintenance burden upon changes to the Prisma schema as you need to manually maintain the types. A cleaner solution to this is to use the `UserGetPayload` type that is generated and exposed by Prisma Client under the `Prisma` namespace in combination with the [`validator`](prisma-validator). +While this is certainly feasible, this approach increases the maintenance burden upon changes to the Prisma schema as you need to manually maintain the types. A cleaner solution to this is to use the `UserGetPayload` type that is generated and exposed by Prisma Client under the `Prisma` namespace in combination with the [`validator`](/orm/prisma-client/type-safety/prisma-validator). The following example uses the `Prisma.validator` to create two type-safe objects and then uses the `Prisma.UserGetPayload` utility function to create a type that can be used to return all users and their posts. diff --git a/content/200-orm/200-prisma-client/400-type-safety/830-prisma-type-system.mdx b/content/200-orm/200-prisma-client/400-type-safety/830-prisma-type-system.mdx index 3f4ba0df02..17a6241106 100644 --- a/content/200-orm/200-prisma-client/400-type-safety/830-prisma-type-system.mdx +++ b/content/200-orm/200-prisma-client/400-type-safety/830-prisma-type-system.mdx @@ -14,7 +14,7 @@ This guide introduces Prisma ORM's type system and explains how to introspect ex Prisma ORM uses _types_ to define the kind of data that a field can hold. To make it easy to get started, Prisma ORM provides a small number of core [scalar types](/orm/reference/prisma-schema-reference#model-field-scalar-types) that should cover most default use cases. For example, take the following blog post model: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers datasource db { provider = "postgresql" url = env("DATABASE_URL") @@ -47,7 +47,7 @@ To see the default type mappings for all databases for a specific given Prisma O Sometimes you may need to use a more specific database type that is not one of the default type mappings for your Prisma ORM type. For this purpose, Prisma ORM provides [native type attributes](/orm/prisma-schema/data-model/models#native-types-mapping) to refine the core scalar types. For example, in the `createdAt` field of your `Post` model above you may want to use a date-only column in your underlying PostgreSQL database, by using the `date` type instead of the default type mapping of `timestamp(3)`. To do this, add a `@db.Date` native type attribute to the `createdAt` field: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model Post { id Int @id title String @@ -85,7 +85,7 @@ npx prisma db pull You will get the following Prisma schema: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model User { id Int @id @default(autoincrement()) name String @@ -110,11 +110,12 @@ npx prisma db pull Your Prisma schema now includes the new `createdAt` field with a Prisma ORM type of `DateTime`. The `createdAt` field also has a `@db.Date` native type attribute, because PostgreSQL's `date` is not the default type for the `DateTime` type: -```prisma file=schema.prisma highlight=5;add +```prisma file=schema.prisma highlight=5;add showLineNumbers model User { id Int @id @default(autoincrement()) name String isActive Boolean + //add-next-line createdAt DateTime @db.Date } ``` @@ -125,7 +126,7 @@ When you apply schema changes to your database using Prisma Migrate or `db push` As an example, create a Prisma schema with the following `Post` model: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model Post { id Int @id title String diff --git a/content/200-orm/200-prisma-client/400-type-safety/index.mdx b/content/200-orm/200-prisma-client/400-type-safety/index.mdx index eafec8cac1..dc313c7ddb 100644 --- a/content/200-orm/200-prisma-client/400-type-safety/index.mdx +++ b/content/200-orm/200-prisma-client/400-type-safety/index.mdx @@ -44,9 +44,9 @@ For example, `select` accepts an object of type `UserSelect`. Its object propert The first tab below shows the `UserSelect` generated type and how each property on the object has a type annotation. The second tab shows the resulting schema model. -, ]}> + - + ```ts type Prisma.UserSelect = { @@ -58,9 +58,9 @@ type Prisma.UserSelect = { } ``` - + - + ```prisma model User { @@ -72,7 +72,7 @@ model User { } ``` - + @@ -128,7 +128,7 @@ userPosts.profile > See the [model query options](/orm/reference/prisma-client-reference#model-query-options) reference for more information about the different types available. -### Generated UncheckedInput types +### Generated `UncheckedInput` types The `UncheckedInput` types are a special set of generated types that allow you to perform some operations that Prisma Client considers "unsafe", like directly writing [relation scalar fields](/orm/prisma-schema/data-model/relations). You can choose either the "safe" `Input` types or the "unsafe" `UncheckedInput` type when doing operations like `create`, `update`, or `upsert`. @@ -153,9 +153,9 @@ model User { The first tab shows the `PostUncheckedCreateInput` generated type. It contains the `authorId` property, which is a relation scalar field. The second tab shows an example query that uses the `PostUncheckedCreateInput` type. This query will result in an error if a user with an `id` of `1` does not exist. -, ]}> + - + ```ts type PostUncheckedCreateInput = { @@ -166,8 +166,8 @@ type PostUncheckedCreateInput = { } ``` - - + + ```ts prisma.post.create({ @@ -179,15 +179,15 @@ prisma.post.create({ }) ``` - + The same query can be rewritten using the "safer" `PostCreateInput` type. This type does not contain the `authorId` field but instead contains the `author` relation field. -, ]}> + - + ```ts type PostCreateInput = { @@ -206,8 +206,8 @@ type UserCreateNestedOneWithoutPostsInput = { } ``` - - + + ```ts prisma.post.create({ @@ -223,7 +223,7 @@ prisma.post.create({ }) ``` - + diff --git a/content/200-orm/200-prisma-client/450-testing/100-unit-testing.mdx b/content/200-orm/200-prisma-client/450-testing/100-unit-testing.mdx index f7d7350777..931d78b14c 100644 --- a/content/200-orm/200-prisma-client/450-testing/100-unit-testing.mdx +++ b/content/200-orm/200-prisma-client/450-testing/100-unit-testing.mdx @@ -37,7 +37,7 @@ This guide will cover two approaches to mocking Prisma Client, a singleton insta npm install jest-mock-extended@2.0.4 --save-dev ``` - + At the time of writing, this guide uses `jest-mock-extended` version `^2.0.4`. @@ -80,11 +80,12 @@ The singleton file tells Jest to mock a default export (the Prisma Client instan Next, add the `setupFilesAfterEnv` property to your `jest.config.js` file with the path to your `singleton.ts` file. -```js file=jest.config.js highlight=5;add +```js file=jest.config.js highlight=5;add showLineNumbers module.exports = { clearMocks: true, preset: 'ts-jest', testEnvironment: 'node', + //add-next-line setupFilesAfterEnv: ['/singleton.ts'], } ``` @@ -114,12 +115,12 @@ Another popular pattern that can be used is dependency injection. } ``` - +:::tip If you find that you're seeing a circular dependency error highlighted through mocking Prisma Client, try adding `"strictNullChecks": true` to your `tsconfig.json`. - +::: 2. To use the context, you would do the following in your test file: @@ -143,7 +144,7 @@ A real world use case for unit testing Prisma ORM might be a signup form. Your u All of the examples that follow use the following schema model: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model User { id Int @id @default(autoincrement()) email String @unique @@ -160,11 +161,7 @@ The following unit tests will mock the process of The functions that use the dependency injection pattern will have the context injected (passed in as a parameter) into them, whereas the functions that use the singleton pattern will use the singleton instance of Prisma Client. -, ]}> - - - -```ts +```ts file=functions-with-context.ts import { Context } from './context' interface CreateUser { @@ -197,11 +194,7 @@ export async function updateUsername(user: UpdateUser, ctx: Context) { } ``` - - - - -```ts +```ts file=functions-without-context.ts import prisma from './client' interface CreateUser { @@ -234,21 +227,13 @@ export async function updateUsername(user: UpdateUser) { } ``` - - - - The tests for each methodology are fairly similar, the difference is how the mocked Prisma Client is used. The **_dependency injection_** example passes the context through to the function that is being tested as well as using it to call the mock implementation. The **_singleton_** example uses the singleton client instance to call the mock implementation. -, ]}> - - - -```ts +```ts file=__tests__/with-singleton.ts import { createUser, updateUsername } from '../functions-without-context' import { prismaMock } from '../singleton' @@ -304,11 +289,7 @@ test('should fail if user does not accept terms', async () => { }) ``` - - - - -```ts +```ts file=__tests__/with-dependency-injection.ts import { MockContext, Context, createMockContext } from '../context' import { createUser, updateUsername } from '../functions-with-context' @@ -369,7 +350,3 @@ test('should fail if user does not accept terms', async () => { ) }) ``` - - - - diff --git a/content/200-orm/200-prisma-client/450-testing/150-integration-testing.mdx b/content/200-orm/200-prisma-client/450-testing/150-integration-testing.mdx index 28e5d43e16..378c74b849 100644 --- a/content/200-orm/200-prisma-client/450-testing/150-integration-testing.mdx +++ b/content/200-orm/200-prisma-client/450-testing/150-integration-testing.mdx @@ -21,9 +21,11 @@ This guide assumes you have [Docker](https://docs.docker.com/get-docker/) and [D The following ecommerce schema will be used throughout the guide. This varies from the traditional `User` and `Post` models used in other parts of the docs, mainly because it is unlikely you will be running integration tests against your blog. -
Ecommerce schema +
-```prisma file=schema.prisma +Ecommerce schema + +```prisma file=schema.prisma showLineNumbers // Can have 1 customer // Can have many order details model CustomerOrder { @@ -293,13 +295,13 @@ The following tests will check if the `createOrder` function works as it should Before the test suite is run the database is seeded with data. After the test suite has finished a [`deleteMany`](/orm/reference/prisma-client-reference#deletemany) is used to clear the database of its data. - +:::tip Using `deleteMany` may suffice in situations where you know ahead of time how your schema is structured. This is because the operations need to be executed in the correct order according to how the model relations are setup. However, this doesn't scale as well as having a more generic solution that maps over your models and performs a truncate on them. For those scenarios and examples of using raw SQL queries see [Deleting all data with raw SQL / `TRUNCATE`](/orm/prisma-client/queries/crud#deleting-all-data-with-raw-sql--truncate) - +::: ```ts file=__tests__/create-order.ts import prisma from '../src/client' diff --git a/content/200-orm/200-prisma-client/450-testing/index.mdx b/content/200-orm/200-prisma-client/450-testing/index.mdx index 4d6ecb1200..0a910771a7 100644 --- a/content/200-orm/200-prisma-client/450-testing/index.mdx +++ b/content/200-orm/200-prisma-client/450-testing/index.mdx @@ -1,8 +1,8 @@ --- title: 'Testing' -navTitle: Testing metaTitle: 'Testing with Prisma ORM' metaDescription: 'How to implement unit and integration testing with Prisma ORM' +hide_table_of_contents: true --- diff --git a/content/200-orm/200-prisma-client/500-deployment/201-serverless/150-deploy-to-azure-functions.mdx b/content/200-orm/200-prisma-client/500-deployment/201-serverless/150-deploy-to-azure-functions.mdx index 176b49ca44..7fdf97a318 100644 --- a/content/200-orm/200-prisma-client/500-deployment/201-serverless/150-deploy-to-azure-functions.mdx +++ b/content/200-orm/200-prisma-client/500-deployment/201-serverless/150-deploy-to-azure-functions.mdx @@ -24,9 +24,10 @@ While Prisma ORM works well with Azure functions, there are a few things to take When deploying a function app, the operating system that Azure functions runs a remote build is different from the one used to host your functions. Therefore, we recommend specifying the following [`binaryTargets` options](/orm/reference/prisma-schema-reference#binarytargets-options) in your Prisma schema: -```prisma file=schema.prisma highlight=3;normal +```prisma file=schema.prisma highlight=3;normal showLineNumbers generator client { provider = "prisma-client-js" + //highlight-next-line binaryTargets = ["native", "debian-openssl-1.1.x"] } ``` diff --git a/content/200-orm/200-prisma-client/500-deployment/201-serverless/300-deploy-to-vercel.mdx b/content/200-orm/200-prisma-client/500-deployment/201-serverless/300-deploy-to-vercel.mdx index dd6d859654..fcca0879d4 100644 --- a/content/200-orm/200-prisma-client/500-deployment/201-serverless/300-deploy-to-vercel.mdx +++ b/content/200-orm/200-prisma-client/500-deployment/201-serverless/300-deploy-to-vercel.mdx @@ -20,10 +20,11 @@ While our examples use Next.js, you can deploy other applications to Vercel. See Vercel will automatically cache dependencies on deployment. For most applications, this will not cause any issues. However, for Prisma ORM, it may result in an outdated version of Prisma Client on a change in your Prisma schema. To avoid this issue, add `prisma generate` to the `postinstall` script of your application: -```json file=package.json highlight=4;add +```json file=package.json highlight=4;add showLineNumbers { ... "scripts" { + //add-next-line "postinstall": "prisma generate" } ... @@ -40,9 +41,10 @@ If you see `prisma: command not found` errors during your deployment to Vercel, Another option to avoid an outdated Prisma Client is to use [a custom output path](/orm/prisma-client/setup-and-configuration/generating-prisma-client#using-a-custom-output-path) and check your client into version control. This way each deployment is guaranteed to include the correct Prisma Client. -```prisma file=schema.prisma highlight=3;add +```prisma file=schema.prisma highlight=3;add showLineNumbers generator client { provider = "prisma-client-js" + //add-next-line output = "./generated/client" } ``` diff --git a/content/200-orm/200-prisma-client/500-deployment/201-serverless/400-deploy-to-aws-lambda.mdx b/content/200-orm/200-prisma-client/500-deployment/201-serverless/400-deploy-to-aws-lambda.mdx index ec97856462..62155b57e0 100644 --- a/content/200-orm/200-prisma-client/500-deployment/201-serverless/400-deploy-to-aws-lambda.mdx +++ b/content/200-orm/200-prisma-client/500-deployment/201-serverless/400-deploy-to-aws-lambda.mdx @@ -29,22 +29,22 @@ This section covers changes you will need to make to your application, regardles Depending on the version of Node.js, your Prisma schema should contain either `rhel-openssl-1.0.x` or `rhel-openssl-3.0.x` in the `generator` block: - + - + ```prisma binaryTargets = ["native", "rhel-openssl-1.0.x"] ``` - - + + ```prisma binaryTargets = ["native", "rhel-openssl-3.0.x"] ``` - + @@ -56,7 +56,7 @@ Lambda functions that use [arm64 architectures (AWS Graviton2 processor)](https: In the `generator` block of your `schema.prisma` file, add the following: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers binaryTargets = ["native", "linux-arm64-openssl-1.0.x"] ``` @@ -66,7 +66,7 @@ While we do not recommend running migrations within AWS Lambda, some application In the case of AWS lambda, you will have to add the following environment variable: -```env file=.env +```env file=.env showLineNumbers PRISMA_CLI_BINARY_TARGETS=native,rhel-openssl-1.0.x ``` @@ -92,7 +92,7 @@ AWS SAM uses [esbuild](https://esbuild.github.io/) to bundle your TypeScript cod To get around this, you need to directly reference the needed files in your code to bundle them correctly. In your application, you could add the following lines to your application where Prisma ORM is instantiated. -```ts file=app.ts +```ts file=app.ts showLineNumbers import schema from './prisma/schema.prisma' import x from './node_modules/.prisma/client/libquery_engine-rhel-openssl-1.0.x.so.node' @@ -103,7 +103,7 @@ if (process.env.NODE_ENV !== 'production') { You will also need to define how to bundle these files with esbuild by adding the following lines to `Metadata.BuildProperties` in your `template.yaml`: -```yaml file=template.yaml +```yaml file=template.yaml showLineNumbers Loader: - .prisma=file - .so.node=file @@ -114,7 +114,7 @@ This will make sure that files needed by Prisma ORM will be included in the AWS ## Deploying with the Serverless Framework -### Loading environment variables via a .env file +### Loading environment variables via a `.env` file Your functions will need the `DATABASE_URL` environment variable to access the database. The `serverless-dotenv-plugin` will allow you to use your `.env` file in your deployments. @@ -126,7 +126,7 @@ npm install -D serverless-dotenv-plugin Then, add `serverless-dotenv-plugin` to your list of plugins in `serverless.yml`: -```code file=serverless.yml no-copy +```code file=serverless.yml no-copy showLineNumbers plugins: - serverless-dotenv-plugin ``` @@ -161,7 +161,7 @@ Packaging deployment-example-sls for stage dev (us-east-1) To reduce your deployment footprint, you can update your deployment process to only upload the files your application needs. The Serverless configuration file, `serverless.yml`, below shows a `package` pattern that includes only the Prisma ORM engine file relevant to the Lambda runtime and excludes the others. This means that when Serverless Framework packages your app for upload, it includes only one engine file. This ensures the packaged archive is as small as possible. -```code file=serverless.yml no-copy +```code file=serverless.yml no-copy showLineNumbers package: patterns: - '!node_modules/.prisma/client/libquery_engine-*' @@ -172,10 +172,11 @@ package: If you are deploying to [Lambda functions with ARM64 architecture](#lambda-functions-with-arm64-architectures) you should update the Serverless configuration file to package the `arm64` engine file, as follows: -```code file=serverless.yml highlight=4;normal +```code file=serverless.yml highlight=4;normal showLineNumbers package: patterns: - '!node_modules/.prisma/client/libquery_engine-*' + //highlight-next-line - 'node_modules/.prisma/client/libquery_engine-linux-arm64-*' - '!node_modules/prisma/libquery_engine-*' - '!node_modules/@prisma/engines/**' @@ -183,7 +184,7 @@ package: If you use `serverless-webpack`, see [Deployment with serverless webpack](#deployment-with-serverless-webpack) below. -### Deployment with serverless-webpack +### Deployment with `serverless-webpack` If you use `serverless-webpack`, you will need additional configuration so that your `schema.prisma` is properly bundled. You will need to: @@ -199,15 +200,16 @@ First, ensure the following webpack dependencies are installed: npm install --save-dev webpack webpack-node-externals copy-webpack-plugin serverless-webpack ``` -#### 2. Update webpack.config.js +#### 2. Update `webpack.config.js` In your `webpack.config.js`, make sure that you set `externals` to `nodeExternals()` like the following: -```javascript file=webpack.config.js highlight=1,5;normal; +```javascript file=webpack.config.js highlight=1,5;normal; showLineNumbers const nodeExternals = require('webpack-node-externals') module.exports = { // ... other configuration + //highlight-next-line externals: [nodeExternals()], // ... other configuration } @@ -215,13 +217,15 @@ module.exports = { Update the `plugins` property in your `webpack.config.js` file to include the `copy-webpack-plugin`: -```javascript file=webpack.config.js highlight=2,7-13;normal; +```javascript file=webpack.config.js highlight=2,7-13;normal; showLineNumbers const nodeExternals = require('webpack-node-externals') +//highlight-next-line const CopyPlugin = require('copy-webpack-plugin') module.exports = { // ... other configuration externals: [nodeExternals()], + //highlight-start plugins: [ new CopyPlugin({ patterns: [ @@ -229,6 +233,7 @@ module.exports = { ], }), ], + //highlight-end // ... other configuration } ``` @@ -243,11 +248,11 @@ Depending on how your application is bundled, you may need to copy the schema fi Refer to the [Serverless Webpack documentation](https://www.serverless.com/plugins/serverless-webpack) for additional configuration. -#### 3. Update serverless.yml +#### 3. Update `serverless.yml` In your `serverless.yml` file, make sure that the `custom > webpack` block has `prisma generate` under `packagerOptions > scripts` as follows: -```yaml file=serverless.yml +```yaml file=serverless.yml showLineNumbers custom: webpack: packagerOptions: @@ -259,23 +264,25 @@ This will ensure that, after webpack bundles your code, the Prisma Client is gen Lastly, you will want to exclude [Prisma ORM query engines](/orm/more/under-the-hood/engines) that do not match the AWS Lambda runtime. Update your `serverless.yml` by adding the following script that makes sure only the required query engine, `rhel-openssl-1.0.x`, is included in the final packaged archive. -```yaml file=serverless.yml highlight=6;add +```yaml file=serverless.yml highlight=6;add showLineNumbers custom: webpack: packagerOptions: scripts: - prisma generate + //add-next-line -- find . -name "libquery_engine-*" -not -name "libquery_engine-rhel-openssl-*" | xargs rm ``` If you are deploying to [Lambda functions with ARM64 architecture](#lambda-functions-with-arm64-architectures) you should update the `find` command to the following: -```yaml file=serverless.yml highlight=6;add +```yaml file=serverless.yml highlight=6;add showLineNumbers custom: webpack: packagerOptions: scripts: - prisma generate + //add-next-line -- find . -name "libquery_engine-*" -not -name "libquery_engine-arm64-openssl-*" | xargs rm ``` @@ -322,7 +329,7 @@ While SST supports `.env` files, [it is not recommended](https://docs.sst.dev/co The SST guide [available here](https://docs.sst.dev/config#overview) is a step-by-step guide to get started with `Config`. Assuming you have created a new secret called `DATABASE_URL` and have [bound that secret to your app](https://docs.sst.dev/config#bind-the-config), you can set up `PrismaClient` with the following: -```ts file=prisma.ts +```ts file=prisma.ts showLineNumbers import { PrismaClient } from '@prisma/client' import { Config } from 'sst/node/config' diff --git a/content/200-orm/200-prisma-client/500-deployment/201-serverless/500-deploy-to-netlify.mdx b/content/200-orm/200-prisma-client/500-deployment/201-serverless/500-deploy-to-netlify.mdx index d984de1a68..5cd3622fe1 100644 --- a/content/200-orm/200-prisma-client/500-deployment/201-serverless/500-deploy-to-netlify.mdx +++ b/content/200-orm/200-prisma-client/500-deployment/201-serverless/500-deploy-to-netlify.mdx @@ -16,28 +16,28 @@ Netlify is a cloud platform for continuous deployment, static sites, and serverl Before you can follow this guide, you will need to set up your application to begin deploying to Netlify. We recommend the ["Get started with Netlify"](https://docs.netlify.com/get-started/) guide for a quick overview and ["Deploy functions"](https://docs.netlify.com/functions/deploy/?fn-language=ts) for an in-depth look at your deployment options. -## Binary targets in schema.prisma +## Binary targets in `schema.prisma` Since your code is being deployed to Netlify's environment, which isn't necessarily the same as your development environment, you will need to set [`binaryTargets`](/orm/reference/prisma-schema-reference#binarytargets-options) in order to download the query engine that is compatible with the Netlify runtime during your build step. If you do not set this option, your deployed code will have an incorrect query engine deployed with it and will not function. Depending on the version of Node.js, your Prisma schema should contain either `rhel-openssl-1.0.x` or `rhel-openssl-3.0.x` in the `generator` block: - + - + ```prisma binaryTargets = ["native", "rhel-openssl-1.0.x"] ``` - - + + ```prisma binaryTargets = ["native", "rhel-openssl-3.0.x"] ``` - + @@ -47,7 +47,7 @@ We recommend keeping `.env` files in your `.gitignore` in order to prevent leaka Assuming you have a file like the following: -```env file=.env +```env file=.env showLineNumbers # Connect to DB DATABASE_URL="postgresql://postgres:__PASSWORD__@__HOST__:__PORT__/__DB_NAME__" ``` @@ -67,7 +67,7 @@ site: my-very-very-cool-site ```
-If you are not using an .env file +If you are not using an `.env` file If you are storing your database connection string and other environment variables in a different method, you will need to manually upload your environment variables to Netlify. These options are [discussed in Netlfiy's documentation](https://docs.netlify.com/environment-variables/get-started/) and one method, uploading via the UI, is described below. @@ -76,10 +76,10 @@ If you are storing your database connection string and other environment variabl netlify open --admin ``` 2. Click **Site settings**: - ![Netlify admin UI](images/500-06-deploy-to-netlify-site-settings.png) + ![Netlify admin UI](./images/500-06-deploy-to-netlify-site-settings.png) 3. Navigate to **Build & deploy** in the sidebar on the left and select **Environment**. 4. Click **Edit variables** and create a variable with the key `DATABASE_URL` and set its value to your database connection string. - ![Netlify environment variables](images/500-07-deploy-to-netlify-environment-variables-settings.png) + ![Netlify environment variables](./images/500-07-deploy-to-netlify-environment-variables-settings.png) 5. Click **Save**.
diff --git a/content/200-orm/200-prisma-client/500-deployment/301-edge/450-deploy-to-cloudflare.mdx b/content/200-orm/200-prisma-client/500-deployment/301-edge/450-deploy-to-cloudflare.mdx index 3aad83bae4..44af4ba904 100644 --- a/content/200-orm/200-prisma-client/500-deployment/301-edge/450-deploy-to-cloudflare.mdx +++ b/content/200-orm/200-prisma-client/500-deployment/301-edge/450-deploy-to-cloudflare.mdx @@ -1,10 +1,10 @@ --- title: 'Deploy to Cloudflare Workers & Pages' -navTitle: Deploy to Cloudflare metaTitle: 'Deploy to Cloudflare Workers & Pages' metaDescription: 'Learn the things you need to know in order to deploy an app that uses Prisma Client for talking to a database to a Cloudflare Worker or to Cloudflare Pages.' +sidebar_label: Deploy to Cloudflare tocDepth: 3 -preview: true +sidebar_class_name: preview-badge --- diff --git a/content/200-orm/200-prisma-client/500-deployment/301-edge/485-deploy-to-vercel.mdx b/content/200-orm/200-prisma-client/500-deployment/301-edge/485-deploy-to-vercel.mdx index 0453976349..0f46a47a8c 100644 --- a/content/200-orm/200-prisma-client/500-deployment/301-edge/485-deploy-to-vercel.mdx +++ b/content/200-orm/200-prisma-client/500-deployment/301-edge/485-deploy-to-vercel.mdx @@ -1,10 +1,10 @@ --- title: 'Deploy to Vercel Edge Functions & Middleware' -navTitle: 'Deploy to Vercel' metaTitle: 'Deploy to Vercel Edge Functions & Middleware' metaDescription: 'Learn the things you need to know in order to deploy an Edge function that uses Prisma Client for talking to a database.' +sidebar_label: 'Deploy to Vercel' tocDepth: 3 -preview: true +sidebar_class_name: preview-badge --- @@ -62,7 +62,7 @@ Alternatively, you can configure the environment variable [via the UI](https://v In your `package.json`, you should add a `"postinstall"` section as follows: -```js file=package.json +```js file=package.json showLineNumbers { // ..., "postinstall: "prisma generate" @@ -120,7 +120,7 @@ If you are using Vercel Postgres, you need to: First, ensure that the database connection is configured properly. In your Prisma schema, set the `url` of the `datasource` block to the `POSTGRES_PRISMA_URL` and the `directUrl` to the `POSTGRES_URL_NON_POOLING` environment variable. You also need to enable the `driverAdapters` feature flag: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers generator client { provider = "prisma-client-js" previewFeatures = ["driverAdapters"] @@ -137,7 +137,7 @@ Next, you need to set the `POSTGRES_PRISMA_URL` and `POSTGRES_URL_NON_POOLING` e If you ran `npx prisma init`, you can use the `.env` file that was created by this command to set these: -```bash file=.env +```bash file=.env showLineNumbers POSTGRES_PRISMA_URL="postgres://user:password@host-pooler.region.postgres.vercel-storage.com:5432/name?pgbouncer=true&connect_timeout=15" POSTGRES_URL_NON_POOLING="postgres://user:password@host.region.postgres.vercel-storage.com:5432/name" ``` @@ -155,11 +155,12 @@ npm install @neondatabase/serverless Next, add a new key to the `scripts` section in your `package.json`: -```js file=package.json highlight=5;add +```js file=package.json highlight=5;add showLineNumbers { // ... "scripts": { // ... + //add-next-line "postinstall": "prisma generate" } } @@ -187,7 +188,7 @@ touch src/app/api/edge/route.ts Here is a sample code snippet that you can use to instantiate `PrismaClient` and send a query to your database in the new `app/api/edge/route.ts` file you just created: -```ts file=app/api/edge/route.ts +```ts file=app/api/edge/route.ts showLineNumbers import { NextResponse } from 'next/server' import { PrismaClient } from '@prisma/client' import { PrismaNeon } from '@prisma/adapter-neon' @@ -244,7 +245,7 @@ If you are using a PlanetScale database, you need to: First, ensure that the database connection is configured properly. In your Prisma schema, set the `url` of the `datasource` block to the `DATABASE_URL` environment variable. You also need to enable the `driverAdapters` feature flag: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers generator client { provider = "prisma-client-js" previewFeatures = ["driverAdapters"] @@ -259,7 +260,7 @@ datasource db { Next, you need to set the `DATABASE_URL` environment variable in your `.env` file that's used both by Prisma and Next.js to read your env vars: -```bash file=.env +```bash file=.env showLineNumbers DATABASE_URL="mysql://32qxa2r7hfl3102wrccj:password@us-east.connect.psdb.cloud/demo-cf-worker-ps?sslaccept=strict" ``` @@ -276,11 +277,12 @@ npm install @planetscale/database Next, add a new key to the `scripts` section in your `package.json`: -```js file=package.json highlight=5;add +```js file=package.json highlight=5;add showLineNumbers { // ... "scripts": { // ... + //add-next-line "postinstall": "prisma generate" } } @@ -308,7 +310,7 @@ touch src/app/api/edge/route.ts Here is a sample code snippet that you can use to instantiate `PrismaClient` and send a query to your database in the new `app/api/edge/route.ts` file you just created: -```ts file=app/api/edge/route.ts +```ts file=app/api/edge/route.ts showLineNumbers import { NextResponse } from 'next/server' import { PrismaClient } from '@prisma/client' import { PrismaPlanetScale } from '@prisma/adapter-planetscale' @@ -365,7 +367,7 @@ If you are using a Neon database, you need to: First, ensure that the database connection is configured properly. In your Prisma schema, set the `url` of the `datasource` block to the `DATABASE_URL` environment variable. You also need to enable the `driverAdapters` feature flag: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers generator client { provider = "prisma-client-js" previewFeatures = ["driverAdapters"] @@ -379,7 +381,7 @@ datasource db { Next, you need to set the `DATABASE_URL` environment variable in your `.env` file that's used both by Prisma and Next.js to read your env vars: -```bash file=.env +```bash file=.env showLineNumbers DATABASE_URL="postgresql://janedoe:password@ep-nameless-pond-a23b1mdz.eu-central-1.aws.neon.tech/neondb?sslmode=require" ``` @@ -396,11 +398,12 @@ npm install @neondatabase/serverless Next, add a new key to the `scripts` section in your `package.json`: -```js file=package.json highlight=5;add +```js file=package.json highlight=5;add showLineNumbers { // ... "scripts": { // ... + //add-next-line "postinstall": "prisma generate" } } @@ -428,7 +431,7 @@ touch src/app/api/edge/route.ts Here is a sample code snippet that you can use to instantiate `PrismaClient` and send a query to your database in the new `app/api/edge/route.ts` file you just created: -```ts file=app/api/edge/route.ts +```ts file=app/api/edge/route.ts showLineNumbers import { NextResponse } from 'next/server' import { PrismaClient } from '@prisma/client' import { PrismaNeon } from '@prisma/adapter-neon' diff --git a/content/200-orm/200-prisma-client/500-deployment/301-edge/550-deploy-to-deno-deploy.mdx b/content/200-orm/200-prisma-client/500-deployment/301-edge/550-deploy-to-deno-deploy.mdx index 1cb8e1f9fd..c44eced826 100644 --- a/content/200-orm/200-prisma-client/500-deployment/301-edge/550-deploy-to-deno-deploy.mdx +++ b/content/200-orm/200-prisma-client/500-deployment/301-edge/550-deploy-to-deno-deploy.mdx @@ -49,11 +49,13 @@ To set up your application: To use Deno, you need to add the preview feature flag `deno` to the `generator` block of your `schema.prisma` file. Also, Deno requires that you generate Prisma Client in a custom location. You can enable this with the `output` parameter in the `generator` block. To satisfy both of these requirements, add the following lines to the `generator` block: - ```prisma file=schema.prisma highlight=3-4,12-23;add + ```prisma file=schema.prisma highlight=3-4,12-23;add showLineNumbers generator client { provider = "prisma-client-js" + //add-start previewFeatures = ["deno"] output = "../generated/client" + //add-end } datasource db { @@ -61,6 +63,7 @@ To set up your application: url = env("DATABASE_URL") } + //add-start model Log { id Int @id @default(autoincrement()) level Level @@ -73,6 +76,7 @@ To set up your application: Warn Error } + //add-end ``` 4. In your `.env` file, replace the current placeholder connection string `postgresql://johndoe:randompassword@localhost:5432/mydb?schema=public` with your PostgreSQL connection string. @@ -175,7 +179,7 @@ To configure Prisma Accelerate: 1. Install the `dotenv-cli`. - ```sh + ```bash npm install dotenv-cli ``` diff --git a/content/200-orm/200-prisma-client/500-deployment/550-deploy-database-changes-with-prisma-migrate.mdx b/content/200-orm/200-prisma-client/500-deployment/550-deploy-database-changes-with-prisma-migrate.mdx index d797f1a84d..5c425d2081 100644 --- a/content/200-orm/200-prisma-client/500-deployment/550-deploy-database-changes-with-prisma-migrate.mdx +++ b/content/200-orm/200-prisma-client/500-deployment/550-deploy-database-changes-with-prisma-migrate.mdx @@ -1,7 +1,7 @@ --- title: 'Deploying database changes with Prisma Migrate' -navTitle: 'Deploying database changes' metaDescription: 'Learn how to deploy database changes with Prisma Migrate.' +sidebar_label: 'Deploying database changes' --- @@ -41,7 +41,7 @@ As part of your CI/CD, you can run `prisma migrate deploy` as part of your pipel Here is an example action that will run your migrations against your database: -```yaml file=deploy.yml highlight=17-20 +```yaml file=deploy.yml highlight=17-20 showLineNumbers name: Deploy on: push: diff --git a/content/200-orm/200-prisma-client/500-deployment/600-deploy-migrations-from-a-local-environment.mdx b/content/200-orm/200-prisma-client/500-deployment/600-deploy-migrations-from-a-local-environment.mdx index dae0102219..4ee4dddc38 100644 --- a/content/200-orm/200-prisma-client/500-deployment/600-deploy-migrations-from-a-local-environment.mdx +++ b/content/200-orm/200-prisma-client/500-deployment/600-deploy-migrations-from-a-local-environment.mdx @@ -23,9 +23,11 @@ If you do not have an automated CI/CD process, you can technically deploy new mi 1. Make sure your migration history is up to date. You can do this through running `prisma migrate dev`, which will generate a migration history from the latest changes made. 2. Swap your local connection URL for your production connection URL -```bash file=.env highlight=1;delete|3;add +```bash file=.env highlight=1;delete|3;add showLineNumbers +//delete-next-line DATABASE_URL="postgresql://johndoe:randompassword@localhost:5432/my_local_database" +//add-next-line DATABASE_URL="postgresql://johndoe:randompassword@localhost:5432/my_production_database" ``` @@ -51,4 +53,4 @@ The pipeline should handle deployment to staging and production environments, an When you add Prisma Migrate to an **existing database**, you must [baseline](/orm/prisma-migrate/workflows/baselining) the production database. Baselining is performed **once**, and can be done from a local instance. -![](../../../doc-images/baseline-production-from-local.png) +![](/img/orm/baseline-production-from-local.png) diff --git a/content/200-orm/200-prisma-client/500-deployment/650-caveats-when-deploying-to-aws-platforms.mdx b/content/200-orm/200-prisma-client/500-deployment/650-caveats-when-deploying-to-aws-platforms.mdx index c1e0ae8944..e7d4128a58 100644 --- a/content/200-orm/200-prisma-client/500-deployment/650-caveats-when-deploying-to-aws-platforms.mdx +++ b/content/200-orm/200-prisma-client/500-deployment/650-caveats-when-deploying-to-aws-platforms.mdx @@ -2,6 +2,7 @@ title: 'Caveats when deploying to AWS platforms' metaTitle: 'Caveats when deploying to AWS platforms' metaDescription: 'Known caveats when deploying to an AWS platform' +toc_max_heading_level: 2 --- @@ -26,7 +27,7 @@ When deploying an app using Prisma Client to AWS Elastic Beanstalk, Prisma ORM g Because Beanstalk limits the ability to write to the filesystem in the `postinstall` hook, you need to create an [`.npmrc`](https://docs.npmjs.com/cli/v6/configuring-npm/npmrc) file in the root of your project and add the following configuration: -```config file=.npmrc +```config file=.npmrc showLineNumbers unsafe-perm=true ``` diff --git a/content/200-orm/200-prisma-client/500-deployment/700-deploy-to-a-different-os.mdx b/content/200-orm/200-prisma-client/500-deployment/700-deploy-to-a-different-os.mdx index 3a19139e38..ca536d4fe3 100644 --- a/content/200-orm/200-prisma-client/500-deployment/700-deploy-to-a-different-os.mdx +++ b/content/200-orm/200-prisma-client/500-deployment/700-deploy-to-a-different-os.mdx @@ -2,6 +2,7 @@ title: 'Deploy to a different OS' metaTitle: 'Deploy to a different OS' metaDescription: 'Learn how to deploy Node.js and TypeScript applications that are using Prisma Client to a different operating system.' +hide_table_of_contents: true --- diff --git a/content/200-orm/200-prisma-client/500-deployment/index.mdx b/content/200-orm/200-prisma-client/500-deployment/index.mdx index 19ccb52b47..77ef685553 100644 --- a/content/200-orm/200-prisma-client/500-deployment/index.mdx +++ b/content/200-orm/200-prisma-client/500-deployment/index.mdx @@ -2,6 +2,7 @@ title: 'Deployment' metaTitle: 'Deploy a Node.js application with Prisma' metaDescription: 'How to deploy a Node.js application that uses Prisma Client and TypeScript to various cloud platforms.' +hide_table_of_contents: true --- diff --git a/content/200-orm/200-prisma-client/600-observability-and-logging/130-logging.mdx b/content/200-orm/200-prisma-client/600-observability-and-logging/130-logging.mdx index 5b68439fca..a1476a32e8 100644 --- a/content/200-orm/200-prisma-client/600-observability-and-logging/130-logging.mdx +++ b/content/200-orm/200-prisma-client/600-observability-and-logging/130-logging.mdx @@ -71,9 +71,9 @@ To use event-based logging: The following example subscribes to all `query` events and write the `duration` and `query` to console: -, ]}> + - + @@ -122,9 +122,9 @@ Duration: 2ms - + - + @@ -167,7 +167,7 @@ Query: db.Post.aggregate([ { $match: { userId: { $in: [ "622f0bbbdf635a42016ee32 - + diff --git a/content/200-orm/200-prisma-client/600-observability-and-logging/240-metrics.mdx b/content/200-orm/200-prisma-client/600-observability-and-logging/240-metrics.mdx index ad28441bbd..734eff92aa 100644 --- a/content/200-orm/200-prisma-client/600-observability-and-logging/240-metrics.mdx +++ b/content/200-orm/200-prisma-client/600-observability-and-logging/240-metrics.mdx @@ -2,8 +2,8 @@ title: 'Metrics' metaTitle: 'Metrics (Preview)' metaDescription: 'Diagnose application performance with insights into Prisma Client database activity.' -preview: true -tocDepth: 4 +sidebar_class_name: preview-badge +toc_max_heading_level: 4 --- @@ -541,12 +541,14 @@ This returns information in the following format: "counters": [ { "key": "query_total_operations", + //add-next-line "labels": { "server": "us_server1", "app_version": "one" }, "value": 0, "description": "The total number of operations executed" }, { "key": "prisma_datasource_queries_total", + //add-next-line "labels": { "server": "us_server1", "app_version": "one" }, "value": 0, "description": "The total number of queries executed" diff --git a/content/200-orm/200-prisma-client/600-observability-and-logging/250-opentelemetry-tracing.mdx b/content/200-orm/200-prisma-client/600-observability-and-logging/250-opentelemetry-tracing.mdx index 01ec55712f..baf45ac5e6 100644 --- a/content/200-orm/200-prisma-client/600-observability-and-logging/250-opentelemetry-tracing.mdx +++ b/content/200-orm/200-prisma-client/600-observability-and-logging/250-opentelemetry-tracing.mdx @@ -2,8 +2,8 @@ title: 'OpenTelemetry tracing' metaTitle: 'OpenTelemetry tracing (Preview)' metaDescription: 'Diagnose application performance with detailed traces of each query.' -preview: true -tocDepth: 4 +sidebar_class_name: preview-badge +toc_max_heading_level: 4 --- @@ -29,7 +29,7 @@ The number and type of spans in a trace depends on the type of operation the tra -![image](trace-diagram.png) +![image](./trace-diagram.png) You can [send tracing output to the console](#send-tracing-output-to-the-console), or analyze it in any OpenTelemetry-compatible tracing system, such as [Jaeger](https://www.jaegertracing.io/), [Honeycomb](https://www.honeycomb.io/trace/) and [Datadog](https://www.datadoghq.com/). On this page, we give an example of how to send tracing output to Jaeger, which you can [run locally](#visualize-traces-with-jaeger). @@ -242,7 +242,7 @@ When you perform an interactive transaction, you'll see the following spans in a As an example, take the following Prisma schema: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers generator client { provider = "prisma-client-js" previewFeatures = ["tracing", "interactiveTransactions"] @@ -381,10 +381,12 @@ An example implementation looks like this: ```ts highlight=3,7;add import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions' import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node' +//add-next-line import { TraceIdRatioBasedSampler } from '@opentelemetry/core' import { Resource } from '@opentelemetry/resources' const provider = new NodeTracerProvider({ + //add-next-line sampler: new TraceIdRatioBasedSampler(0.1), resource: new Resource({ // we can define some metadata about the trace resource diff --git a/content/200-orm/200-prisma-client/600-observability-and-logging/index.mdx b/content/200-orm/200-prisma-client/600-observability-and-logging/index.mdx index f34f9635d0..9349310804 100644 --- a/content/200-orm/200-prisma-client/600-observability-and-logging/index.mdx +++ b/content/200-orm/200-prisma-client/600-observability-and-logging/index.mdx @@ -2,7 +2,7 @@ title: 'Observability & logging' metaTitle: 'Observability & logging' metaDescription: 'Observability & logging' -tocDepth: 3 +hide_table_of_contents: true --- ## In this section diff --git a/content/200-orm/200-prisma-client/700-debugging-and-troubleshooting/230-handling-exceptions-and-errors.mdx b/content/200-orm/200-prisma-client/700-debugging-and-troubleshooting/230-handling-exceptions-and-errors.mdx index 6faf5c4319..4800baa83f 100644 --- a/content/200-orm/200-prisma-client/700-debugging-and-troubleshooting/230-handling-exceptions-and-errors.mdx +++ b/content/200-orm/200-prisma-client/700-debugging-and-troubleshooting/230-handling-exceptions-and-errors.mdx @@ -2,6 +2,7 @@ title: 'Handling exceptions and errors' metaTitle: 'Handling exceptions and errors (Reference)' metaDescription: 'This page covers how to handle exceptions and errors' +hide_table_of_contents: true --- @@ -10,7 +11,7 @@ In order to handle different types of errors you can use `instanceof` to check w The following example tries to create a user with an already existing email record. This will throw an error because the `email` field has the `@unique` attribute applied to it. -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model User { id Int @id @default(autoincrement()) email String @unique diff --git a/content/200-orm/200-prisma-client/700-debugging-and-troubleshooting/index.mdx b/content/200-orm/200-prisma-client/700-debugging-and-troubleshooting/index.mdx index bb23db2ab7..17e366f5ca 100644 --- a/content/200-orm/200-prisma-client/700-debugging-and-troubleshooting/index.mdx +++ b/content/200-orm/200-prisma-client/700-debugging-and-troubleshooting/index.mdx @@ -2,7 +2,7 @@ title: 'Debugging & troubleshooting' metaTitle: 'Debugging & troubleshooting' metaDescription: 'Debugging & troubleshooting' -tocDepth: 3 +hide_table_of_contents: true --- diff --git a/content/200-orm/200-prisma-client/_category_.json b/content/200-orm/200-prisma-client/_category_.json new file mode 100644 index 0000000000..656f03be02 --- /dev/null +++ b/content/200-orm/200-prisma-client/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Prisma Client", + "collapsible": false, + "collapsed": false +} \ No newline at end of file diff --git a/content/200-orm/200-prisma-client/index.mdx b/content/200-orm/200-prisma-client/index.mdx index c7b3fda5f6..483d5526a8 100644 --- a/content/200-orm/200-prisma-client/index.mdx +++ b/content/200-orm/200-prisma-client/index.mdx @@ -3,7 +3,7 @@ title: 'Prisma Client' metaTitle: 'Prisma Client' metaDescription: 'Prisma Client is an auto-generated, type-safe query builder generated based on the models and attributes of your Prisma schema.' staticLink: true -toc: false +hide_table_of_contents: true --- ## In this section diff --git a/content/200-orm/300-prisma-migrate/050-getting-started.mdx b/content/200-orm/300-prisma-migrate/050-getting-started.mdx index 8bad270665..5ef8a0aef2 100644 --- a/content/200-orm/300-prisma-migrate/050-getting-started.mdx +++ b/content/200-orm/300-prisma-migrate/050-getting-started.mdx @@ -17,7 +17,7 @@ To get started with Prisma Migrate in a development environment: 1. Create a Prisma schema: - ```prisma file=schema.prisma + ```prisma file=schema.prisma showLineNumbers datasource db { provider = "postgresql" url = env("DATABASE_URL") @@ -38,11 +38,11 @@ To get started with Prisma Migrate in a development environment: } ``` - + :::tip You can use [native type mapping attributes](/orm/prisma-migrate/workflows/native-database-types) in your schema to decide which exact database type to create (for example, `String` can map to `varchar(100)` or `text`). - + ::: @@ -101,6 +101,7 @@ To get started with Prisma Migrate in a development environment: ```prisma highlight=3;add model User { id Int @id @default(autoincrement()) + //add-next-line jobTitle String name String posts Post[] @@ -213,8 +214,10 @@ To include [unsupported database features](/orm/prisma-migrate/workflows/unsuppo ```sql highlight=3,4;add /* Generated migration SQL */ + //add-start CREATE UNIQUE INDEX tests_success_constraint ON posts (subject, target) WHERE success; + //add-end ``` - If the changes are significant, it can be easier to replace the entire migration file with the result of a database dump ([`mysqldump`](https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html), [`pg_dump`](https://www.postgresql.org/docs/12/app-pgdump.html)) diff --git a/content/200-orm/300-prisma-migrate/200-understanding-prisma-migrate/005-overview.mdx b/content/200-orm/300-prisma-migrate/200-understanding-prisma-migrate/005-overview.mdx index 8f30904435..7ab24e43dc 100644 --- a/content/200-orm/300-prisma-migrate/200-understanding-prisma-migrate/005-overview.mdx +++ b/content/200-orm/300-prisma-migrate/200-understanding-prisma-migrate/005-overview.mdx @@ -2,8 +2,12 @@ title: 'Overview' metaTitle: 'Prisma Migrate Overview' metaDescription: 'Learn everything you need to know about Prisma Migrate.' +hide_table_of_contents: true --- + +
+ **Does not apply for MongoDB**
Instead of `migrate dev` and related commands, use [`db push`](/orm/prisma-migrate/workflows/prototyping-your-schema) for [MongoDB](/orm/overview/databases/mongodb). @@ -22,10 +26,10 @@ Prisma Migrate can be considered a _hybrid_ database schema migration tool, mean - Declarative: The data model is described in a declarative way in the [Prisma schema](/orm/prisma-schema). Prisma Migrate generates SQL migration files from that data model. - Imperative: All generated SQL migration files are fully customizable. Prisma Migrate hence provides the flexibility of an imperative migration tool by enabling you to modify what and how migrations are executed (and allows you to run custom SQL to e.g. make use of native database feature, perform data migrations, ...). - +:::tip If you are prototyping, consider using the [`db push`](/orm/reference/prisma-cli-reference#db-push) command - see [Schema prototyping with `db push`](/orm/prisma-migrate/workflows/prototyping-your-schema) for examples. - +::: See the [Prisma Migrate reference](/orm/reference/prisma-cli-reference#prisma-migrate) for detailed information about the Prisma Migrate CLI commands. diff --git a/content/200-orm/300-prisma-migrate/200-understanding-prisma-migrate/010-mental-model.mdx b/content/200-orm/300-prisma-migrate/200-understanding-prisma-migrate/010-mental-model.mdx index 878cd65a7e..28e3aec478 100644 --- a/content/200-orm/300-prisma-migrate/200-understanding-prisma-migrate/010-mental-model.mdx +++ b/content/200-orm/300-prisma-migrate/200-understanding-prisma-migrate/010-mental-model.mdx @@ -2,7 +2,7 @@ title: 'Mental model' metaTitle: 'A mental model for Prisma Migrate' metaDescription: 'A mental model guide for working with Prisma Migrate in your project' -tocDepth: 4 +toc_max_heading_level: 4 --- @@ -94,7 +94,7 @@ This section describes how you can evolve your database schema in different envi ### Prisma Migrate in a development environment (local) -#### Track your migration history with prisma migrate dev +#### Track your migration history with `prisma migrate dev` The [`prisma migrate dev`](/orm/reference/prisma-cli-reference#migrate-dev) command allows you to track the changes you make to your database. The `prisma migrate dev` command automatically generates SQL migration files (saved in `/prisma/migrations`) and applies them to the database. When a migration is applied to the database, the migrations table (`_prisma_migrations`) in your database is also updated. @@ -121,7 +121,7 @@ If `prisma migrate dev` detects a schema drift or a migration history conflict, Expand to see the shadow database explained using a cartoon -![A cartoon that shows how the shadow database works.](shadow-database.png) +![A cartoon that shows how the shadow database works.](./shadow-database.png)
diff --git a/content/200-orm/300-prisma-migrate/200-understanding-prisma-migrate/200-shadow-database.mdx b/content/200-orm/300-prisma-migrate/200-understanding-prisma-migrate/200-shadow-database.mdx index e682866a9b..6a12099d20 100644 --- a/content/200-orm/300-prisma-migrate/200-understanding-prisma-migrate/200-shadow-database.mdx +++ b/content/200-orm/300-prisma-migrate/200-understanding-prisma-migrate/200-shadow-database.mdx @@ -10,15 +10,20 @@ The shadow database is a second, _temporary_ database that is **created and dele [`migrate diff` command](/orm/reference/prisma-cli-reference#migrate-diff) also requires a shadow database when diffing against a local `migrations` directory with `--from-migrations` or `--to-migrations`. - +* If your database does not allow creation and deleting of databases (e.g. in a cloud-hosted environment), you need to [create and configure the shadow database manually](#cloud-hosted-shadow-databases-must-be-created-manually). -\* If your database does not allow creation and deleting of databases (e.g. in a cloud-hosted environment), you need to [create and configure the shadow database manually](#cloud-hosted-shadow-databases-must-be-created-manually). - + -> **Important**: The shadow database is **not** required in production, and is not used by production-focused commands such as `prisma migrate resolve` and `prisma migrate deploy`. +The shadow database is **not** required in production, and is not used by production-focused commands such as `prisma migrate resolve` and `prisma migrate deploy`. -> **Note**: A shadow database is never used for MongoDB as `migrate dev` is not used there. + + + + +A shadow database is never used for MongoDB as `migrate dev` is not used there. + + @@ -29,11 +34,11 @@ When you run `prisma migrate dev` to create a new migration, Prisma Migrate uses - [Detect schema drift](#detecting-schema-drift), which means checking that no **unexpected changes** have been made to the development database - [Generate new migrations](#generating-new-migrations) and evaluate if those could lead to **data loss** when applied -
🎨 Expand to see the shadow database explained as a cartoon. +
-
+🎨 Expand to see the shadow database explained as a cartoon. -![A cartoon that shows how the shadow database works.](shadow-database.png) +![A cartoon that shows how the shadow database works.](./shadow-database.png)
@@ -82,6 +87,7 @@ In some cases it might make sense (e.g. when [creating and dropping databases is datasource db { provider = "postgresql" url = env("DATABASE_URL") + //highlight-next-line shadowDatabaseUrl = env("SHADOW_DATABASE_URL") } ``` @@ -100,6 +106,7 @@ Some cloud providers do not allow you to drop and create databases with SQL. Som datasource db { provider = "postgresql" url = env("DATABASE_URL") + //highlight-next-line shadowDatabaseUrl = env("SHADOW_DATABASE_URL") } ``` diff --git a/content/200-orm/300-prisma-migrate/200-understanding-prisma-migrate/600-legacy-migrate.mdx b/content/200-orm/300-prisma-migrate/200-understanding-prisma-migrate/600-legacy-migrate.mdx index d2620d34bc..f7a36a1786 100644 --- a/content/200-orm/300-prisma-migrate/200-understanding-prisma-migrate/600-legacy-migrate.mdx +++ b/content/200-orm/300-prisma-migrate/200-understanding-prisma-migrate/600-legacy-migrate.mdx @@ -3,7 +3,7 @@ title: 'Legacy Prisma Migrate' metaTitle: 'Legacy Prisma Migrate (Reference)' metaDescription: 'Legacy Prisma Migrate is a declarative data modeling and schema migration tool that is available via the Prisma CLI.' tocDepth: 3 -hidePage: true +unlisted: true --- @@ -227,8 +227,6 @@ With **legacy Prisma Migrate**, the workflow looks slightly different: 1. (Re-)generate Prisma Client 1. Use Prisma Client in your application code to access your database -![Typical workflow with legacy Prisma Migrate](../../../doc-images/unused/OImder6.png) - ### Troubleshooting Since legacy Prisma Migrate is currently Experimental, you might end up in a state where the `migrations` directory and/or the `_Migrations` table are out of sync with the actual state of the database. In these cases, it often helps to "reset" legacy Prisma Migrate by deleting the `migrations` folder and deleting all entries from the `_Migration` table. @@ -253,7 +251,7 @@ The `migrate` command creates and manages database migrations. It can be used to The `migrate` command includes a number of subcommands to specify the desired action. -### migrate save +### `migrate save` Saves a migration that defines the steps necessary to update your current schema. @@ -321,7 +319,7 @@ prisma migrate save --create-db --experimental prisma migrate save --preview --experimental ``` -### migrate up +### `migrate up` Migrate the database up to a specific state. @@ -398,7 +396,7 @@ prisma migrate up --create-db --experimental prisma migrate up --preview --experimental ``` -### migrate down +### `migrate down` Migrate the database down to a specific state. diff --git a/content/200-orm/300-prisma-migrate/200-understanding-prisma-migrate/index.mdx b/content/200-orm/300-prisma-migrate/200-understanding-prisma-migrate/index.mdx index 8a246de91a..9aa0963fca 100644 --- a/content/200-orm/300-prisma-migrate/200-understanding-prisma-migrate/index.mdx +++ b/content/200-orm/300-prisma-migrate/200-understanding-prisma-migrate/index.mdx @@ -2,6 +2,7 @@ title: 'Understanding Prisma Migrate' metaTitle: 'Understanding Prisma Migrate' metaDescription: 'Learn about the mental model and basic building blocks of Prisma Migrate.' +hide_table_of_contents: true --- ## In this section diff --git a/content/200-orm/300-prisma-migrate/300-workflows/10-seeding.mdx b/content/200-orm/300-prisma-migrate/300-workflows/10-seeding.mdx index d4e3b9a2a3..682d5b1edd 100644 --- a/content/200-orm/300-prisma-migrate/300-workflows/10-seeding.mdx +++ b/content/200-orm/300-prisma-migrate/300-workflows/10-seeding.mdx @@ -18,15 +18,16 @@ This guide describes how to seed your database using Prisma Client and Prisma OR Prisma ORM's integrated seeding functionality expects a command in the `"seed"` key in the `"prisma"` key of your `package.json` file. This can be any command, `prisma db seed` will just execute it. In this guide and as a default, we recommend writing a seed script inside your project's `prisma/` folder and starting it with the command. -, ]}> - - + + +
```json "prisma": { "seed": "ts-node prisma/seed.ts" }, ``` +
@@ -39,9 +40,10 @@ This can be useful to reduce memory usage (RAM) and increase execution speed of -
+ - + +
```json "prisma": { @@ -49,7 +51,7 @@ This can be useful to reduce memory usage (RAM) and increase execution speed of }, ``` -
+
@@ -73,14 +75,14 @@ Here we suggest some specific seed scripts for different situations. You are fre ### Seeding your database with TypeScript or JavaScript -, ]}> + - + 1. Create a new file named `seed.ts`. This can be placed anywhere within your projects folder structure. The below example places it in the `/prisma` folder. 2. In the `seed.ts` file, import Prisma Client, initialize it and create some records. As an example, take the following Prisma schema with a `User` and `Post` model: - ```prisma file=schema.prisma + ```prisma file=schema.prisma showLineNumbers model User { id Int @id @default(autoincrement()) email String @unique @@ -192,14 +194,14 @@ Here we suggest some specific seed scripts for different situations. You are fre npx prisma db seed ``` - + - + 1. Create a new file named `seed.js`. This can be placed anywhere within your projects folder structure. The below example places it in the `/prisma` folder. 2. In the `seed.js` file, import Prisma Client, initialize it and create some records. As an example, take the following Prisma schema with a `User` and `Post` model: - ```prisma file=schema.prisma + ```prisma file=schema.prisma showLineNumbers generator client { provider = "prisma-client-js" } @@ -302,7 +304,7 @@ Here we suggest some specific seed scripts for different situations. You are fre npx prisma db seed ``` - + @@ -310,12 +312,13 @@ Here we suggest some specific seed scripts for different situations. You are fre In addition to TypeScript and JavaScript, you can also use a Bash script (`seed.sh`) to seed your database in another language such as Go, or plain SQL. -, ]}> + - + +
The following example runs a Go script in the same folder as `seed.sh`: - +
```bash file=seed.sh #!/bin/sh # -e Exit immediately when a command returns a non-zero status. @@ -325,11 +328,13 @@ set -ex go run ./seed/ ``` -
+ - + +
The following example uses [psql](https://www.postgresql.org/docs/13/app-psql.html) to run a SQL script in the same folder as `seed.sh`: +
```bash file=seed.sh #!/bin/sh @@ -340,7 +345,7 @@ set -ex psql file.sql ``` -
+
diff --git a/content/200-orm/300-prisma-migrate/300-workflows/100-team-development.mdx b/content/200-orm/300-prisma-migrate/300-workflows/100-team-development.mdx index d058c52edb..12cbaef527 100644 --- a/content/200-orm/300-prisma-migrate/300-workflows/100-team-development.mdx +++ b/content/200-orm/300-prisma-migrate/300-workflows/100-team-development.mdx @@ -2,6 +2,7 @@ title: Team development metaTitle: Team development metaDescription: How to use Prisma Migrate when collaborating on a project as a team. +toc_max_heading_level: 2 --- @@ -17,7 +18,7 @@ To incorporate changes from collaborators: Migrations are **applied in the same order as they were created**. The creation date is part of the migration subfolder name - for example, `20210316081837-updated-fields` was created on `2021-03-16-08:08:37`. - + This guide **does not apply for MongoDB**.
Instead of `migrate dev`, [`db push`](/orm/prisma-migrate/workflows/prototyping-your-schema) is used for [MongoDB](/orm/overview/databases/mongodb). @@ -32,11 +33,11 @@ The following sample scenario demonstrates how a team of three developers share The following tabs show the team's Prisma schema before and after a round of changes: -, ]}> + - + -```prisma +```prisma file=schema.prisma model Post { id Int @id @default(autoincrement()) title String @@ -54,11 +55,11 @@ model User { } ``` - + - + -```prisma highlight=14,15,19-23;add +```prisma file=schema.prisma highlight=14,15,19-23;add model Post { id Int @id @default(autoincrement()) title String @@ -72,19 +73,23 @@ model User { id Int @id @default(autoincrement()) email String @unique name String? + //add-start favoriteColor String? // Added by Ania bestPacmanScore Int? // Added by you + //add-end posts Post[] } +//add-start // Added by Javier model Tag { tagName String @id tagCategory Category } +//add-end ``` - + ### The team's changes @@ -98,6 +103,7 @@ Your team members Ania and Javier make additive changes to the schema in their l ```prisma highlight=3;add model User { /* ... */ + //add-next-line favoriteColor String? } ``` @@ -118,10 +124,12 @@ Your team members Ania and Javier make additive changes to the schema in their l 1. Adds a new model to the schema: ```prisma highlight=1-4;add + //add-start model Tag { tagName String @id tagCategory Category } + //add-end ``` 1. Generates a migration: @@ -137,7 +145,7 @@ Your team members Ania and Javier make additive changes to the schema in their l The migration history now has **two** new migrations: -![A diagram showing changes by two separate developers converging in a single migration history.](migrate-team-dev.png) +![A diagram showing changes by two separate developers converging in a single migration history.](./migrate-team-dev.png) ### Integrating changes @@ -155,15 +163,18 @@ The migration history now has **two** new migrations: ```prisma highlight=3,7-11;add model User { /* ... */ + //add-next-line favoriteColor String? bestPacmanScore Int? } + //add-start model Tag { tagName String @id tagCategory Category posts Post[] } + //add-end ``` 1. Run the `migrate dev` command: @@ -185,7 +196,7 @@ The migration history now has **two** new migrations: Your `schema.prisma` and local database now include your team's changes, and the migration history includes your migration: -![A migration history with 5 migrations.](migration-history.png) +![A migration history with 5 migrations.](./migration-history.png) ## Source control @@ -196,5 +207,5 @@ You should commit the following files to source control: Source-controlling the `schema.prisma` file is not enough - you must include your migration history. This is because: -- As you start to [customize migrations](customizing-migrations), your migration history contains **information that cannot be represented in the Prisma schema**. For example, you can customize a migration to mitigate data loss that would be caused by a breaking change. +- As you start to [customize migrations](/orm/prisma-migrate/workflows/customizing-migrations), your migration history contains **information that cannot be represented in the Prisma schema**. For example, you can customize a migration to mitigate data loss that would be caused by a breaking change. - The `prisma migrate deploy` command, which is used to deploy changes to staging, testing, and production environments, _only_ runs migration files. Prisma Migrate only uses the schema file to read the `url` and `provider` fields, not models and fields. diff --git a/content/200-orm/300-prisma-migrate/300-workflows/110-native-database-types.mdx b/content/200-orm/300-prisma-migrate/300-workflows/110-native-database-types.mdx index 0a18c0ca1d..ce8b2ebec8 100644 --- a/content/200-orm/300-prisma-migrate/300-workflows/110-native-database-types.mdx +++ b/content/200-orm/300-prisma-migrate/300-workflows/110-native-database-types.mdx @@ -2,6 +2,7 @@ title: Native database types metaTitle: Native database types metaDescription: Native database types +toc_max_heading_level: 2 --- @@ -19,11 +20,11 @@ For a complete list of Prisma schema features, refer to: Prisma Migrate also supports mapping each field to a [specific native type](#mapping-fields-to-a-specific-native-type), and there are ways to [include features without a Prisma schema equivalent in your database](#handling-unsupported-database-features). - +:::note -¹ Comments and Prisma ORM-level functions (`uuid()` and `cuid()`) do not map to database features. +Comments and Prisma ORM-level functions (`uuid()` and `cuid()`) do not map to database features. - +::: diff --git a/content/200-orm/300-prisma-migrate/300-workflows/120-native-database-functions.mdx b/content/200-orm/300-prisma-migrate/300-workflows/120-native-database-functions.mdx index 461e1eba17..52bd3faf85 100644 --- a/content/200-orm/300-prisma-migrate/300-workflows/120-native-database-functions.mdx +++ b/content/200-orm/300-prisma-migrate/300-workflows/120-native-database-functions.mdx @@ -18,15 +18,17 @@ Do not activate extensions outside a migration file if you use Prisma Migrate. T In Prisma ORM versions 4.5.0 and later, you can activate the extension by declaring it in your Prisma schema with the [`postgresqlExtensions` preview feature](/orm/prisma-schema/postgresql-extensions): -```prisma file=schema.prisma highlight=3,9;add +```prisma file=schema.prisma highlight=3,9;add showLineNumbers generator client { provider = "prisma-client-js" + //add-next-line previewFeatures = ["postgresqlExtensions"] } datasource db { provider = "postgresql" url = env("DATABASE_URL") + //add-next-line extensions = [pgcrypto] } ``` diff --git a/content/200-orm/300-prisma-migrate/300-workflows/20-prototyping-your-schema.mdx b/content/200-orm/300-prisma-migrate/300-workflows/20-prototyping-your-schema.mdx index 6729c667bb..7d01979c79 100644 --- a/content/200-orm/300-prisma-migrate/300-workflows/20-prototyping-your-schema.mdx +++ b/content/200-orm/300-prisma-migrate/300-workflows/20-prototyping-your-schema.mdx @@ -25,7 +25,7 @@ The Prisma CLI has a dedicated command for prototyping schemas: [`db push`](/orm
-## Choosing db push or Prisma Migrate +## Choosing `db push` or Prisma Migrate `db push` works well if: @@ -42,7 +42,7 @@ See [Schema prototyping with `db push`](/orm/prisma-migrate/workflows/prototypin - You want to keep track of changes made to the database schema over time. `db push` does not create any artifacts that allow you to keep track of these changes. - You want the schema changes to be reversible. You can use `db push` again to revert to the original state, but this might result in data loss. -## Can I use Prisma Migrate and db push together? +## Can I use Prisma Migrate and `db push` together? Yes, you can [use `db push` and Prisma Migrate together in your development workflow](/orm/prisma-migrate/workflows/prototyping-your-schema) . For example, you can: @@ -130,6 +130,7 @@ The following scenario demonstrates how to use `db push` to synchronize a new sc model Post { id Int @id @default(autoincrement()) title String + //add-next-line description String published Boolean @default(true) content String @db.VarChar(500) @@ -157,11 +158,11 @@ The following scenario demonstrates how to use `db push` to synchronize a new sc ? To apply this step we need to reset the database, do you want to continue? All data will be lost. » (y/N) ``` - +:::tip Use the `--accept-data-loss` flag to skip this warning, or `--force-reset` to ignore all warnings. - +::: 6. Confirm data loss and apply changes to your database (or revisit your schema): @@ -279,10 +280,10 @@ The following scenario demonstrates how to use `db push` to prototype a change t 4. Prisma Migrate replays the existing migration history, generates a new migration based on your schema changes, and applies those changes to the database. - +:::tip When using `migrate dev`, if your schema changes mean that seed scripts will no longer work, you can use the `--skip-seed` flag to ignore seed scripts. - +::: At this point, the final result of your prototyping is preserved in a migration, and can be pushed to other environments (testing, production, or other members of your team). diff --git a/content/200-orm/300-prisma-migrate/300-workflows/200-troubleshooting.mdx b/content/200-orm/300-prisma-migrate/300-workflows/200-troubleshooting.mdx index 6d54b61c3e..01d04f10c9 100644 --- a/content/200-orm/300-prisma-migrate/300-workflows/200-troubleshooting.mdx +++ b/content/200-orm/300-prisma-migrate/300-workflows/200-troubleshooting.mdx @@ -11,7 +11,7 @@ This guide describes how to resolve issues with Prisma Migrate in a development - [Production troubleshooting](/orm/prisma-migrate/workflows/patching-and-hotfixing) - [Patching / hotfixing production databases](/orm/prisma-migrate/workflows/patching-and-hotfixing) - + This guide **does not apply for MongoDB**.
Instead of `migrate dev`, [`db push`](/orm/prisma-migrate/workflows/prototyping-your-schema) is used for [MongoDB](/orm/overview/databases/mongodb). @@ -89,7 +89,7 @@ If you made manual changes to the database that you want to keep, you can: A migration might fail if: -- You [modify a migration before running it](customizing-migrations) and introduce a syntax error +- You [modify a migration before running it](/orm/prisma-migrate/workflows/customizing-migrations) and introduce a syntax error - You add a mandatory (`NOT NULL`) column to a table that already has data - The migration process stopped unexpectedly - The database shut down in the middle of the migration process diff --git a/content/200-orm/300-prisma-migrate/300-workflows/30-baselining.mdx b/content/200-orm/300-prisma-migrate/300-workflows/30-baselining.mdx index 23daf7ff66..b8c668a31d 100644 --- a/content/200-orm/300-prisma-migrate/300-workflows/30-baselining.mdx +++ b/content/200-orm/300-prisma-migrate/300-workflows/30-baselining.mdx @@ -16,7 +16,7 @@ Baselining tells Prisma Migrate to assume that one or more migrations have **alr Baselining is part of [adding Prisma Migrate to a project with an existing database](/orm/prisma-migrate/getting-started#adding-prisma-migrate-to-an-existing-project). - + This guide **does not apply for MongoDB**.
Instead of `migrate deploy`, [`db push`](/orm/prisma-migrate/workflows/prototyping-your-schema) is used for [MongoDB](/orm/overview/databases/mongodb). @@ -29,27 +29,23 @@ Instead of `migrate deploy`, [`db push`](/orm/prisma-migrate/workflows/prototypi When you add Prisma Migrate to an existing project, your initial migration contains all the SQL required to recreate the state of the database **before you started using Prisma Migrate**: -![The image shows a database labelled 'Existing database', and a list of existing database features next to it - 24 tables, 13 relationships, 92 fields, 3 indexes. An arrow labelled 'represented by' connects the database features list to a box that represents a migration. The existing databases's features are represented by a single migration.](existing-database.png) +![The image shows a database labelled 'Existing database', and a list of existing database features next to it - 24 tables, 13 relationships, 92 fields, 3 indexes. An arrow labelled 'represented by' connects the database features list to a box that represents a migration. The existing databases's features are represented by a single migration.](./existing-database.png) - - - +:::tip You can edit the initial migration to include schema elements that cannot be represented in the Prisma schema - such as stored procedures or triggers. - - - +::: You need this initial migration to create and reset **development environments**: -![The image shows a migration history with three migrations. Each migration is represented by a file icon and a name, and all migrations are surrounded by a box labelled 'migration history'. The first migration has an additional label: "State of database before Prisma Migrate", and the two remaining migrations are labelled "Generated as part of the Prisma Migrate workflow". An arrow labelled "prisma migrate dev" connects the migration history box to a database labelled "new development database", signifying that all three migrations are applied to the development database - none are skipped.](new-dev-db.png) +![The image shows a migration history with three migrations. Each migration is represented by a file icon and a name, and all migrations are surrounded by a box labelled 'migration history'. The first migration has an additional label: "State of database before Prisma Migrate", and the two remaining migrations are labelled "Generated as part of the Prisma Migrate workflow". An arrow labelled "prisma migrate dev" connects the migration history box to a database labelled "new development database", signifying that all three migrations are applied to the development database - none are skipped.](./new-dev-db.png) However, when you `prisma migrate deploy` your migrations to databases that already exist and _cannot_ be reset - such as production - you **do not want to include the initial migrations**. The target database already contains the tables and columns created by the initial migration, and attempting to create these elements again will most likely result in an error. -![A migration history represented by three migration files (file icon and name), surrounded by a a box labelled 'migration history'. The first migration is marked 'do not apply', and the second two migrations are marked 'apply'. An arrow labelled with the command 'prisma migrate deploy' points from the migration history to a database labelled 'production'.](deploy-db.png) +![A migration history represented by three migration files (file icon and name), surrounded by a a box labelled 'migration history'. The first migration is marked 'do not apply', and the second two migrations are marked 'apply'. An arrow labelled with the command 'prisma migrate deploy' points from the migration history to a database labelled 'production'.](./deploy-db.png) Baselining solves this problem by telling Prisma Migrate to pretend that the initial migration(s) **have already been applied**. diff --git a/content/200-orm/300-prisma-migrate/300-workflows/40-customizing-migrations.mdx b/content/200-orm/300-prisma-migrate/300-workflows/40-customizing-migrations.mdx index 32717eaf11..1b612ebc5a 100644 --- a/content/200-orm/300-prisma-migrate/300-workflows/40-customizing-migrations.mdx +++ b/content/200-orm/300-prisma-migrate/300-workflows/40-customizing-migrations.mdx @@ -7,7 +7,7 @@ tocDepth: 3 - + This guide **does not apply for MongoDB**.
Instead of `migrate dev`, [`db push`](/orm/prisma-migrate/workflows/prototyping-your-schema) is used for [MongoDB](/orm/overview/databases/mongodb). @@ -50,6 +50,7 @@ To actually **rename** a field and avoid data loss when you run the migration in ```prisma highlight=3;normal; model Profile { id Int @id @default(autoincrement()) + //highlight-next-line biograpy String userId Int @unique user User @relation(fields: [userId], references: [id]) @@ -63,7 +64,9 @@ To rename the `biograpy` field to `biography`: ```prisma highlight=3;delete|4;add; model Profile { id Int @id @default(autoincrement()) + //delete-next-line biograpy String + //add-next-line biography String userId Int @unique user User @relation(fields: [userId], references: [id]) @@ -78,25 +81,25 @@ To rename the `biograpy` field to `biography`: 1. Edit the draft migration as shown, changing `DROP` / `DELETE` to a single `RENAME COLUMN`: - , ]}> + - + ```sql file=./prisma/migrations/20210308092620_rename_migration/migration.sql ALTER TABLE "Profile" DROP COLUMN "biograpy", ADD COLUMN "biography" TEXT NOT NULL; ``` - + - + ```sql file=./prisma/migrations/20210308092620_rename_migration/migration.sql ALTER TABLE "Profile" RENAME COLUMN "biograpy" TO "biography"; ``` - + @@ -124,6 +127,7 @@ With the _expand and contract_ pattern, renaming the field `bio` to `biography` model Profile { id Int @id @default(autoincrement()) bio String + //add-next-line biography String userId Int @unique user User @relation(fields: [userId], references: [id]) @@ -149,6 +153,7 @@ With the _expand and contract_ pattern, renaming the field `bio` to `biography` ```prisma highlight=3;delete; model Profile { id Int @id @default(autoincrement()) + //delete-next-line bio String biography String userId Int @unique @@ -214,9 +219,9 @@ To change the direction of a 1-1 relation: 1. Edit the draft migration as shown: - , ]}> + - + ```sql @@ -239,9 +244,9 @@ To change the direction of a 1-1 relation: ALTER TABLE "User" ADD FOREIGN KEY ("profileId") REFERENCES "Profile"("id") ON DELETE CASCADE ON UPDATE CASCADE; ``` - + - + ```sql @@ -271,7 +276,7 @@ To change the direction of a 1-1 relation: ALTER TABLE "User" ADD FOREIGN KEY ("profileId") REFERENCES "Profile"("id") ON DELETE CASCADE ON UPDATE CASCADE; ``` - + diff --git a/content/200-orm/300-prisma-migrate/300-workflows/45-data-migration.mdx b/content/200-orm/300-prisma-migrate/300-workflows/45-data-migration.mdx index 8d7a194e53..5c2fda3a5b 100644 --- a/content/200-orm/300-prisma-migrate/300-workflows/45-data-migration.mdx +++ b/content/200-orm/300-prisma-migrate/300-workflows/45-data-migration.mdx @@ -32,7 +32,7 @@ It also makes the following assumptions: For this guide, you will modify the following schema by replacing the `published` boolean field with a `status` enum: -```prisma file=prisma/schema.prisma +```prisma file=prisma/schema.prisma showLineNumbers generator client { provider = "prisma-client-js" } @@ -64,13 +64,15 @@ Make the following updates to your Prisma schema: - Add a `status` column to the `Post` model - Mark the `published` field as optional -```prisma file=prisma/schema.prisma highlight=5,6,9-15;edit +```prisma file=prisma/schema.prisma highlight=5,6,9-15;edit showLineNumbers model Post { id Int @id @default(autoincrement()) title String content String? + //edit-start published Boolean? @default(false) status Status + //edit-end } enum Status { @@ -112,12 +114,13 @@ Then run prisma migrate dev to apply it and verify it works. Exit from the migration step and update the schema by adding a default value for the `status` field by adding the `@default()` attribute function. -```prisma file=prisma/schema.prisma highlight=6;edit +```prisma file=prisma/schema.prisma highlight=6;edit showLineNumbers model Post { id Int @id @default(autoincrement()) title String content String? published Boolean? @default(false) + //edit-next-line status Status @default(Unknown) } @@ -223,6 +226,7 @@ model Post { id Int @id @default(autoincrement()) title String content String? + //delete-next-line published Boolean? @default(false) status Status @default(Unknown) } diff --git a/content/200-orm/300-prisma-migrate/300-workflows/50-squashing-migrations.mdx b/content/200-orm/300-prisma-migrate/300-workflows/50-squashing-migrations.mdx index 32e26652da..8faac3bf46 100644 --- a/content/200-orm/300-prisma-migrate/300-workflows/50-squashing-migrations.mdx +++ b/content/200-orm/300-prisma-migrate/300-workflows/50-squashing-migrations.mdx @@ -2,6 +2,7 @@ title: Squashing migrations metaTitle: Squashing migrations metaDescription: How to squash multiple migration files into a single migration +toc_max_heading_level: 2 --- diff --git a/content/200-orm/300-prisma-migrate/300-workflows/60-generating-down-migrations.mdx b/content/200-orm/300-prisma-migrate/300-workflows/60-generating-down-migrations.mdx index f21838bc72..5f20a17429 100644 --- a/content/200-orm/300-prisma-migrate/300-workflows/60-generating-down-migrations.mdx +++ b/content/200-orm/300-prisma-migrate/300-workflows/60-generating-down-migrations.mdx @@ -17,7 +17,7 @@ When generating a migration SQL file, you may wish to also create a "down migrat This guide explains how to use Prisma Migrate's [`migrate diff` command](/orm/reference/prisma-cli-reference#migrate-diff) to create a down migration, and how to apply it to your production database with the [`db execute`](/orm/reference/prisma-cli-reference#db-execute) command in the case of a failed up migration. - + This guide applies to generating SQL down migrations for relational databases only. It does not apply to MongoDB. @@ -47,7 +47,7 @@ This section describes how to generate a down migration SQL file along with the As an example, take the following Prisma schema with a `User` and `Post` model as a starting point: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model Post { id Int @id @default(autoincrement()) title String @db.VarChar(255) @@ -69,7 +69,7 @@ You will need to create the down migration first, before creating the correspond 1. Edit your Prisma schema to make the changes you require for your up migration. In this example, you will add a new `Profile` model: - ```prisma file=schema.prisma highlight=8-14;add|20;add + ```prisma file=schema.prisma highlight=8-14;add|20;add showLineNumbers model Post { id Int @id @default(autoincrement()) title String @db.VarChar(255) @@ -77,6 +77,7 @@ You will need to create the down migration first, before creating the correspond author User @relation(fields: [authorId], references: [id]) authorId Int } + //add-start model Profile { id Int @id @default(autoincrement()) @@ -84,11 +85,13 @@ You will need to create the down migration first, before creating the correspond user User @relation(fields: [userId], references: [id]) userId Int @unique } + //add-end model User { id Int @id @default(autoincrement()) name String? posts Post[] + //add-next-line profile Profile? } ``` diff --git a/content/200-orm/300-prisma-migrate/300-workflows/70-patching-and-hotfixing.mdx b/content/200-orm/300-prisma-migrate/300-workflows/70-patching-and-hotfixing.mdx index e940ee37db..6aedbda5a4 100644 --- a/content/200-orm/300-prisma-migrate/300-workflows/70-patching-and-hotfixing.mdx +++ b/content/200-orm/300-prisma-migrate/300-workflows/70-patching-and-hotfixing.mdx @@ -1,6 +1,5 @@ --- title: Patching & hotfixing -navTitle: Patching & hotfixing metaDescription: How to reconcile the migration history after applying a hotfix or patch to a production environment. --- @@ -10,7 +9,7 @@ Patching or hotfixing a database involves making an often time critical change d Patching the production database directly results in **schema drift**: your database schema has 'drifted away' from the source of truth, and is out of sync with your migration history. You can use the `prisma migrate resolve` command to reconcile your migration history _without_ having to remove and re-apply the hotfix with `prisma migrate deploy`. - + This guide **does not apply for MongoDB**.
Instead of `migrate dev`, [`db push`](/orm/prisma-migrate/workflows/prototyping-your-schema) is used for [MongoDB](/orm/overview/databases/mongodb). @@ -122,7 +121,7 @@ The following example demonstrates how to manually complete the steps of a migra prisma migrate resolve --applied "20201127134938_my_migration" ``` -## Fixing failed migrations with migrate diff and db execute +## Fixing failed migrations with `migrate diff` and `db execute` To help with fixing a failed migration, Prisma ORM provides the following commands for creating and executing a migration file: @@ -137,7 +136,7 @@ This section gives an example scenario of a failed migration, and explains how t Imagine that you have the following `User` model in your schema, in both your local development environment and your production environment: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model User { id Int @id name String @@ -148,7 +147,7 @@ At this point, your schemas are in sync, but the data in the two environments is You then decide to make changes to your data model, adding another `Post` model and making the `name` field on `User` unique: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model User { id Int @id name String @unique diff --git a/content/200-orm/300-prisma-migrate/300-workflows/80-unsupported-database-features.mdx b/content/200-orm/300-prisma-migrate/300-workflows/80-unsupported-database-features.mdx index d22ac1b1fb..d9876d6239 100644 --- a/content/200-orm/300-prisma-migrate/300-workflows/80-unsupported-database-features.mdx +++ b/content/200-orm/300-prisma-migrate/300-workflows/80-unsupported-database-features.mdx @@ -15,13 +15,13 @@ Prisma Migrate uses the Prisma schema to determine what features to create in th To add an unsupported feature to your database, you must [customize a migration](/orm/prisma-migrate/workflows/customizing-migrations) to include that feature before you apply it. - +:::tip The Prisma schema is able to represent [unsupported field types](/orm/prisma-schema/data-model/unsupported-database-features#unsupported-field-types) and [native database functions](/orm/prisma-migrate/workflows/native-database-functions). - +::: - + This guide **does not apply for MongoDB**.
Instead of `migrate dev`, [`db push`](/orm/prisma-migrate/workflows/prototyping-your-schema) is used for [MongoDB](/orm/overview/databases/mongodb). diff --git a/content/200-orm/300-prisma-migrate/300-workflows/90-development-and-production.mdx b/content/200-orm/300-prisma-migrate/300-workflows/90-development-and-production.mdx index b84c774059..5cc62ff938 100644 --- a/content/200-orm/300-prisma-migrate/300-workflows/90-development-and-production.mdx +++ b/content/200-orm/300-prisma-migrate/300-workflows/90-development-and-production.mdx @@ -21,7 +21,7 @@ npx prisma migrate dev ### Create and apply migrations - + `migrate dev` is a development command and should never be used in a production environment. @@ -48,7 +48,7 @@ You can also `reset` the database yourself to undo manual changes or `db push` e npx prisma migrate reset ``` - + `migrate reset` is a development command and should never be used in a production environment. diff --git a/content/200-orm/300-prisma-migrate/300-workflows/index.mdx b/content/200-orm/300-prisma-migrate/300-workflows/index.mdx index fcdb1e427e..f4a0252d40 100644 --- a/content/200-orm/300-prisma-migrate/300-workflows/index.mdx +++ b/content/200-orm/300-prisma-migrate/300-workflows/index.mdx @@ -2,6 +2,7 @@ title: 'Workflows' metaTitle: 'Workflows' metaDescription: 'Learn about important Prisma Migrate workflows, like seeding, prototyping, baselining, & more.' +hide_table_of_contents: true --- ## In this section diff --git a/content/200-orm/300-prisma-migrate/_category_.json b/content/200-orm/300-prisma-migrate/_category_.json new file mode 100644 index 0000000000..fc1ab2e766 --- /dev/null +++ b/content/200-orm/300-prisma-migrate/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Prisma Migrate", + "collapsible": false, + "collapsed": false +} \ No newline at end of file diff --git a/content/200-orm/300-prisma-migrate/index.mdx b/content/200-orm/300-prisma-migrate/index.mdx index 2dae4d4947..9d1718fbbd 100644 --- a/content/200-orm/300-prisma-migrate/index.mdx +++ b/content/200-orm/300-prisma-migrate/index.mdx @@ -3,7 +3,7 @@ title: 'Prisma Migrate' metaTitle: 'Prisma Migrate | Database, Schema, SQL Migration Tool' metaDescription: 'Prisma Migrate is a database migration tool available via the Prisma CLI that integrates with Prisma schema for data modeling.' staticLink: true -toc: false +hide_table_of_contents: true --- ## In this section diff --git a/content/200-orm/400-tools/05-prisma-cli.mdx b/content/200-orm/400-tools/05-prisma-cli.mdx index 3e9051a1af..e9841d5027 100644 --- a/content/200-orm/400-tools/05-prisma-cli.mdx +++ b/content/200-orm/400-tools/05-prisma-cli.mdx @@ -3,6 +3,7 @@ title: 'Prisma CLI' metaTitle: 'Prisma CLI' metaDescription: 'The Prisma command line interface (CLI) is the primary way to interact with your Prisma project from the command line.' toc: true +toc_max_heading_level: 2 --- diff --git a/content/200-orm/400-tools/06-prisma-studio.mdx b/content/200-orm/400-tools/06-prisma-studio.mdx index d86da69998..18ac4b4550 100644 --- a/content/200-orm/400-tools/06-prisma-studio.mdx +++ b/content/200-orm/400-tools/06-prisma-studio.mdx @@ -2,8 +2,17 @@ title: 'Prisma Studio' metaTitle: 'Prisma Studio' metaDescription: 'Prisma Studio is a visual database editor.' +toc_max_heading_level: 2 --- +import StudioStringSvg from './images/prisma-studio/string.svg'; +import StudioNumberSvg from './images/prisma-studio/number.svg'; +import StudioDatetimeSvg from './images/prisma-studio/datetime.svg'; +import StudioBooleanSvg from './images/prisma-studio/boolean.svg'; +import StudioEnumSvg from './images/prisma-studio/enum.svg'; +import StudioArraySvg from './images/prisma-studio/array.svg'; +import StudioObjectSvg from './images/prisma-studio/object.svg'; + Prisma Studio is a visual editor for the data in your database. Note that Prisma Studio is not open source but you can still create issues in the [`prisma/studio`](https://github.com/prisma/studio) repo. @@ -28,8 +37,9 @@ For more information, see [Defining models](/orm/prisma-schema/data-model/models You can select a model and its data opens in a new tab. Prisma Studio - Models view ### Open and close models @@ -39,7 +49,7 @@ To open another model, click the **+** button. To close a model, click the the **x** button in the model tab. Prisma Studio - Open and close models @@ -50,15 +60,15 @@ The data type for each field is indicated with an icon in the header. The table below lists all data types and their identifying icon. -| Field data type | Description | -| :-------------------------------------------------------------------------------: | ----------------------------------------------------------------------------------------------------------- | -| String type | Text | -| Number type | Integer | -| Datetime type | Date-time

| -| Boolean type | Boolean
| -| Enum type | Pre-defined list of values (`enum` data type) | -| Array type | List of related records from another model | -| Object type | The `{}` symbol can refer to one of the two types of fields.

• Relation field
• JSON field | +| Field data type | Description | +| :-------------------------------------------------------------------------------: | ------------------------------------ | +| | Text | +| | Integer | +| | Date-time

| +| | Boolean
| +| | Pre-defined list of values (`enum` data type) | +| | List of related records from another model | +| | The `{}` symbol can refer to one of the two types of fields.

• Relation field
• JSON field | ### Keyboard shortcuts in models @@ -72,7 +82,7 @@ With Prisma Studio open, you can open the keyboard shortcuts modal by pressing <
Prisma Studio - Keyboard shortcuts @@ -108,15 +118,15 @@ To paste in another cell, first double-click the cell to enter edit mode, and th 1. In the model view, click **Add record**. 2. Based on the data allowed in each field, type the data for the record. - | Field data type | Description | - | :-------------------------------------------------------------------------------: | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | String type | Text | - | Number type | Integer

If such a field has `autoincrement()` pre-filled, do not edit the cell and do not add a number manually. | - | Datetime type | Date-time

Date-time fields contain a long string of numbers, letters, and others. As a best practice, copy the value of another date-time cell and modify it as necessary before pasting in the field. | - | Boolean type | Boolean

Select `true` or `false`. | - | Enum type | Pre-defined list

Double-click a cell in the field and select one of the pre-defined options. | - | Array type | List of related records from another model

It typically refers to a list of records that exist in another model in the database. If you are adding a new record and records from the related model do not yet exist, you do not need to enter anything in the current model. | - | Object type | The `{}` symbol can refer to one of the two types of fields.

• Relation field
• JSON field

**Relation with a model defined separately in the database**

Typically, you need to select the same value as any of the previous records
Click the name of the model to see the list of values which you can then select for the related field.

**JSON field**

Double-click the field to edit the JSON data. As a best practice, validate the edited JSON data in a validator and paste it back in the cell. | + | Field data type | Description | + | :-------------------------------------------------------------------------------: | ------------------ | + | | Text | + | | Integer

If such a field has `autoincrement()` pre-filled, do not edit the cell and do not add a number manually. | + | | Date-time

Date-time fields contain a long string of numbers, letters, and others. As a best practice, copy the value of another date-time cell and modify it as necessary before pasting in the field. | + | | Boolean

Select `true` or `false`. | + | | Pre-defined list

Double-click a cell in the field and select one of the pre-defined options. | + | | List of related records from another model

It typically refers to a list of records that exist in another model in the database. If you are adding a new record and records from the related model do not yet exist, you do not need to enter anything in the current model. | + | | The `{}` symbol can refer to one of the two types of fields.

• Relation field
• JSON field

**Relation with a model defined separately in the database**

Typically, you need to select the same value as any of the previous records
Click the name of the model to see the list of values which you can then select for the related field.

**JSON field**

Double-click the field to edit the JSON data. As a best practice, validate the edited JSON data in a validator and paste it back in the cell. | 3. (Optional) If you are unhappy with your changes, click **Discard changes** and start over. 4. Click **Save 1 change**. @@ -146,10 +156,7 @@ Deleting a record is a separate operation that cannot be accumulated. If you del
-Prisma Studio - Save multiple data edits +![Prisma Studio - Save multiple data edits](./images/prisma-studio/04-save-multiple-changes.png) ## Filters @@ -167,7 +174,7 @@ When you add multiple conditions, Prisma Studio filters the results so that all - **Note**

+ **Note**
Click **Filters** again if you want to hide the menu.
@@ -189,7 +196,7 @@ When you add multiple conditions, Prisma Studio filters the results so that all 4. To add a new filter, click **Add a new filter** and repeat the steps above. 5. To remove a filter, click the **x** button on the right. Prisma Studio - add and remove filters @@ -206,9 +213,9 @@ You can select which fields to view or hide by using the **Fields** menu. -**What is a field?**

+**What is a field?**
-A **field** is a property of a model which you add in the data model definitions in the Prisma schema file. Depending on the database that you use, a field, such as the `title` field in `model User { title String }`, refers to a **column** in a relational database (PostgreSQL, MySQL, SQL Server, SQLite, CockroachDB) or a **document field** in MongoDB.

+A **field** is a property of a model which you add in the data model definitions in the Prisma schema file. Depending on the database that you use, a field, such as the `title` field in `model User { title String }`, refers to a **column** in a relational database (PostgreSQL, MySQL, SQL Server, SQLite, CockroachDB) or a **document field** in MongoDB.
For more information, see [Defining fields](/orm/prisma-schema/data-model/models#defining-fields).
@@ -218,7 +225,7 @@ For more information, see [Defining fields](/orm/prisma-schema/data-model/models 1. Click the **Fields** menu. 2. Select only the fields you want to see and deselect any fields you want to hide. Prisma Studio - show and hide fields @@ -235,7 +242,7 @@ You can also select to show or skip a specific number of records in the model vi -**What is a record?**

+**What is a record?**
A **record** refers to a **row of data in a table** in a relational database (PostgreSQL, MySQL, SQL Server, SQLite, CockroachDB) or a **document** in MongoDB. @@ -247,7 +254,7 @@ A **record** refers to a **row of data in a table** in a relational database (Po 2. In the **Take** box, specify the maximum number of records that you want the model view to show. 3. In the **Skip** box, specify how many of the first records you want to hide. Prisma Studio - Show and hide records @@ -265,7 +272,7 @@ Click a field title to sort by the field data. The first click sorts the data in ascending order, the second - in descending order. Prisma Studio - Sort data @@ -276,7 +283,7 @@ The first click sorts the data in ascending order, the second - in descending or Caching issues may cause Prisma Studio to use an older version of the query engine. You may see the following error: -``` +```terminal wrap Error in request: PrismaClientKnownRequestError: Failed to validate the query Error occurred during query validation & transformation ``` diff --git a/content/200-orm/400-tools/_category_.json b/content/200-orm/400-tools/_category_.json new file mode 100644 index 0000000000..7453ee16c0 --- /dev/null +++ b/content/200-orm/400-tools/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Tools", + "collapsible": false, + "collapsed": false +} \ No newline at end of file diff --git a/content/200-orm/400-tools/index.mdx b/content/200-orm/400-tools/index.mdx index 28dc9f58de..9e0fad0e7b 100644 --- a/content/200-orm/400-tools/index.mdx +++ b/content/200-orm/400-tools/index.mdx @@ -3,7 +3,7 @@ title: 'Tools' metaTitle: 'Tools' metaDescription: 'Learn about important Prisma tools.' staticLink: true -toc: false +hide_table_of_contents: true --- ## In this section diff --git a/content/200-orm/500-reference/050-prisma-client-reference.mdx b/content/200-orm/500-reference/050-prisma-client-reference.mdx index e8e1a4211d..86cb9f5f43 100644 --- a/content/200-orm/500-reference/050-prisma-client-reference.mdx +++ b/content/200-orm/500-reference/050-prisma-client-reference.mdx @@ -1,8 +1,8 @@ --- title: 'Prisma Client API reference' -navTitle: 'Prisma Client API' metaTitle: 'Prisma Client API' metaDescription: 'API reference documentation for Prisma Client.' +sidebar_label: 'Prisma Client API' tocDepth: 3 toc: true --- @@ -54,7 +54,7 @@ All example generated types (such as `UserSelect` and `UserWhereUniqueInput`) ar
-## PrismaClient +## `PrismaClient` This section describes the `PrismaClient` constructor and its parameters. @@ -62,7 +62,7 @@ This section describes the `PrismaClient` constructor and its parameters. - Parameters are validated at runtime. -### datasources +### `datasources` Programmatically overrides properties of the `datasource` block in the `schema.prisma` file - for example, as part of an integration test. See also: [Data sources](/orm/prisma-schema/overview/data-sources) @@ -104,7 +104,7 @@ datasource db { } ``` -### datasourceUrl +### `datasourceUrl` Programmatically overrides the [`datasource`](#datasources) block in the `schema.prisma` file. @@ -124,22 +124,22 @@ const prisma = new PrismaClient({ }) ``` -### log +### `log` Determines the type and level of logging. See also: [Logging](/orm/prisma-client/observability-and-logging/logging) #### Options -| Option | Example | Description | -| ------------------------ | ------------------------------------------------------------------------ | ----------- | -| Array of log levels | `[ "info", "query" ]` | | -| Array of log definitions | `[ { level: "info", emit: "event" }, { level: "warn", emit: "stdout" }]` | | +| Option | Example | +| ------------------------ | ------------------------------------------------------------------------ | +| Array of log levels | `[ "info", "query" ]` | +| Array of log definitions | `[ { level: "info", emit: "event" }, { level: "warn", emit: "stdout" }]` | ##### Log levels | Name | Example | | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `query` | Logs all queries run by Prisma.

For relational databases this logs all SQL queries. Example:
`prisma:query SELECT "public"."User"."id", "public"."User"."email" FROM "public"."User" WHERE ("public"."User"."id") IN (SELECT "t0"."id" FROM "public"."User" AS "t0" INNER JOIN "public"."Post" AS "j0" ON ("j0"."authorId") = ("t0"."id") WHERE ("j0"."views" > $1 AND "t0"."id" IS NOT NULL)) OFFSET $2`
For MongoDB this logs queries using the [`mongosh` shell](https://docs.mongodb.com/mongodb-shell/#mongodb-binary-bin.mongosh) format. Example:
`prisma:query db.User.deleteMany({ _id: ( $in: [ “6221ce49f756b0721fc00542”, ], }, })` | +| `query` | Logs all queries run by Prisma.

For relational databases this logs all SQL queries. Example:
`prisma:query SELECT "public"."User"."id", "public"."User"."email" FROM "public"."User" WHERE ("public"."User"."id") IN (SELECT "t0"."id" FROM "public"."User" AS "t0" INNER JOIN "public"."Post" AS "j0" ON ("j0"."authorId") = ("t0"."id") WHERE ("j0"."views" > $1 AND "t0"."id" IS NOT NULL)) OFFSET $2`

For MongoDB this logs queries using the [`mongosh` shell](https://docs.mongodb.com/mongodb-shell/#mongodb-binary-bin.mongosh) format. Example:
`prisma:query db.User.deleteMany({ _id: ( $in: [ “6221ce49f756b0721fc00542”, ], }, })` | | `info` | Example:
`prisma:info Started http server on http://127.0.0.1:58471` | | `warn` | Warnings. | | `error` | Errors. | @@ -330,7 +330,7 @@ main() -### errorFormat +### `errorFormat` Determines the level and formatting of errors returned by Prisma Client. @@ -377,7 +377,7 @@ const prisma = new PrismaClient({ }) ``` -### adapter +### `adapter` Defines an instance of a [driver adapter](/orm/overview/databases/database-drivers#driver-adapters). See also [Database drivers](/orm/overview/databases/database-drivers) . @@ -407,7 +407,7 @@ const adapter = new PrismaNeon(pool) const prisma = new PrismaClient({ adapter }) ``` -### rejectOnNotFound +### `rejectOnNotFound` @@ -467,7 +467,7 @@ const prisma = new PrismaClient({ }) ``` -### transactionOptions +### `transactionOptions` @@ -505,7 +505,7 @@ const prisma = new PrismaClient({ Use model queries to perform CRUD operations on your models. See also: [CRUD](/orm/prisma-client/queries/crud) -### findUnique() +### `findUnique()` `findUnique` query lets you retrieve a single database record: @@ -563,7 +563,9 @@ const result = await prisma.user.findUnique({ ##### Get the `User` record with `firstName` of `Alice` and `lastName` of `Smith` (`@@unique`) -
Expand for example User model with a @@unique block +
+ +Expand for example User model with a @@unique block ```prisma model User { @@ -590,7 +592,9 @@ const result = await prisma.user.findUnique({ ##### Get the `User` record with `firstName` of `Alice` and `lastName` of `Smith` (`@@id`) -
Expand for example User model with an @@id block +
+ +Expand for example User model with an @@id block ```prisma model User { @@ -614,7 +618,7 @@ const result = await prisma.user.findUnique({ }) ``` -### findUniqueOrThrow() +### `findUniqueOrThrow()` @@ -636,7 +640,7 @@ We introduced `findUniqueOrThrow` in v4.0.0. It replaces the [`rejectOnNotFound` }) ``` -### findFirst() +### `findFirst()` `findFirst` returns the first record in a list that matches your criteria. @@ -721,9 +725,7 @@ async function main() { main() ``` -### findFirstOrThrow() - - +### `findFirstOrThrow()` @@ -745,9 +747,7 @@ We introduced `findFirstOrThrow` in v4.0.0. It replaces the [`rejectOnNotFound`] }) ``` -### findMany() - - +### `findMany()` `findMany` returns a list of records. @@ -785,7 +785,7 @@ const user = await prisma.user.findMany({ }) ``` -### create() +### `create()` `create` creates a new database record. @@ -891,7 +891,7 @@ prisma:query COMMIT -### update() +### `update()` `update` updates an existing database record. @@ -929,7 +929,7 @@ const user = await prisma.user.update({ }) ``` -### upsert() +### `upsert()` @@ -1140,7 +1140,7 @@ prisma.user.upsert({ }) ``` -### delete() +### `delete()` `delete` deletes an existing database record. You can delete a record: @@ -1212,9 +1212,9 @@ const deleteUser = await prisma.user.delete({ -### createMany() +### `createMany()` -`createMany()` creates multiple records in a transaction. +`createMany` creates multiple records in a transaction. #### Options @@ -1249,7 +1249,7 @@ const users = await prisma.user.createMany({ }) ``` -### updateMany() +### `updateMany()` `updateMany` updates a batch of existing database records in bulk and returns the number of updated records. @@ -1305,7 +1305,7 @@ const deleteUser = await prisma.user.updateMany({ }) ``` -### deleteMany() +### `deleteMany()` `deleteMany` deletes multiple records in a transaction. @@ -1345,7 +1345,7 @@ const deletedUserCount = await prisma.user.deleteMany({ See [Filter conditions and operators](#filter-conditions-and-operators) for examples of how to filter the records to delete. -### count() +### `count()` #### Options @@ -1404,7 +1404,7 @@ const c = await prisma.user.count({ }) ``` -### aggregate() +### `aggregate()` See also: [Aggregation, grouping, and summarizing](/orm/prisma-client/queries/aggregation-grouping-summarizing#aggregate) @@ -1485,7 +1485,7 @@ const setValue = await prisma.user.aggregate({ -### groupBy() +### `groupBy()` See also: [Aggregation, grouping, and summarizing](/orm/prisma-client/queries/aggregation-grouping-summarizing#group-by) @@ -1568,7 +1568,7 @@ const groupUsers = await prisma.user.groupBy({ ## Model query options -### select +### `select` `select` defines which fields are included in the object that Prisma Client returns. See: [Select fields and include relations](/orm/prisma-client/queries/select-fields) . @@ -1801,7 +1801,7 @@ const selectNameEmailNotPosts = Prisma.validator()({ }) ``` -### include +### `include` `include` defines which relations are included in the result that Prisma Client returns. See: [Select fields and include relations](/orm/prisma-client/queries/select-fields) . @@ -1889,7 +1889,7 @@ const usersWithCount = await prisma.user.findMany({ -### relationLoadStrategy (Preview) +### `relationLoadStrategy` (Preview) `relationLoadStrategy` specifies how a relation should be loaded from the database. It has two possible values: @@ -1940,7 +1940,7 @@ const users = await prisma.user.findMany({ }) ``` -### where +### `where` `where` defines one or more [filters](#filter-conditions-and-operators), and can be used to filter on record properties (like a user's email address) or related record properties (like a user's top 10 most recent post titles). @@ -2052,7 +2052,7 @@ const whereEmailIsUnique = Prisma.validator()({ }) ``` -### orderBy +### `orderBy` Sorts a list of records. See also: [Sorting](/orm/prisma-client/queries/filtering-and-sorting) @@ -2064,14 +2064,14 @@ Sorts a list of records. See also: [Sorting](/orm/prisma-client/queries/filterin - In [4.1.0](https://github.com/prisma/prisma/releases/4.1.0) and later, you can [sort `null` records first or last](#sort-post-by-the-related-user-records-name-with-null-records-first). For details, see [Sort with nulls first or last](/orm/prisma-client/queries/filtering-and-sorting#sort-with-null-records-first-or-last). -#### Inputs for sort argument +#### Inputs for `sort` argument | Name | Description | | ------ | ---------------------------- | | `asc` | Sort ascending (A → Z) | | `desc` | Sort descending (Z → A) | -#### Inputs for nulls argument +#### Inputs for `nulls` argument Note: @@ -2552,7 +2552,7 @@ The following examples demonstrate how to use the [`validator`](/orm/prisma-clie }) ``` -### distinct +### `distinct` Deduplicate a list of records from [`findMany`](#findmany) or [`findFirst`](#findfirst). See also: [Aggregation, grouping, and summarizing](/orm/prisma-client/queries/aggregation-grouping-summarizing#select-distinct) @@ -2667,7 +2667,7 @@ const distinctCitiesAndCountries = await prisma.user.findMany({ ## Nested queries -### create +### `create` A nested `create` query adds a new related record or set of records to a parent record. See: [Working with relations](/orm/prisma-client/queries/relation-queries) . @@ -2768,7 +2768,7 @@ const user = await prisma.user.update({ }) ``` -### createMany +### `createMany` A nested `createMany` query adds a new set of records to a parent record. See: [Working with relations](/orm/prisma-client/queries/relation-queries) . @@ -2803,7 +2803,7 @@ const user = await prisma.user.update({ }) ``` -### set +### `set` `set` overwrites the value of a relation - for example, replacing a list of `Post` records with a different list. See: [Working with relations](/orm/prisma-client/queries/relation-queries) @@ -2822,9 +2822,7 @@ const user = await prisma.user.update({ }) ``` -### connect - - +### `connect` A nested `connect` query connects a record to an existing related record by specifying an ID or unique identifier. See: [Working with relations](/orm/prisma-client/queries/relation-queries) @@ -2915,9 +2913,7 @@ const user = await prisma.user.update({ }) ``` -### connectOrCreate - - +### `connectOrCreate` `connectOrCreate` _either_ connects a record to an existing related record by ID or unique identifier _or_ creates a new related record if the record does not exist. See: [Working with relations](/orm/prisma-client/queries/relation-queries) @@ -2927,8 +2923,8 @@ const user = await prisma.user.update({ - Multiple `connectOrCreate` queries that run _as concurrent transactions_ can result in a **race condition**. Consider the following example, where two queries attempt to `connectOrCreate` a blog post tag named `computing` at the same time (tag names must be unique): - , ]}> - + + ```ts const createPost = await prisma.post.create({ @@ -2954,8 +2950,8 @@ const user = await prisma.user.update({ }) ``` - - + + ```ts const createPost = await prisma.post.create({ @@ -2981,7 +2977,7 @@ const user = await prisma.user.update({ }) ``` - + If query A and query B overlap in the following way, query A results in an exception: @@ -3083,9 +3079,7 @@ const user = await prisma.user.update({ }) ``` -### disconnect - - +### `disconnect` A nested `disconnect` query breaks the connection between a parent record and a related record, but does not delete either record. See: [Working with relations](/orm/prisma-client/queries/relation-queries) @@ -3129,9 +3123,7 @@ const user = await prisma.user.update({ }) ``` -### update - - +### `update` A nested `update` query updates one or more related records where the parent record's ID is `n`. See: [Working with relations](/orm/prisma-client/queries/relation-queries#update-a-specific-related-record) @@ -3187,9 +3179,7 @@ const user = await prisma.user.update({ }) ``` -### upsert - - +### `upsert` @@ -3241,9 +3231,7 @@ const user = await prisma.user.update({ }) ``` -### delete - - +### `delete` A nested `delete` query deletes a related record. The parent record is not deleted. @@ -3279,9 +3267,7 @@ const user = await prisma.user.update({ }) ``` -### updateMany - - +### `updateMany` A nested `updateMany` updates a list of related records and supports filtering - for example, you can update a user's unpublished posts. @@ -3309,9 +3295,7 @@ const result = await prisma.user.update({ }) ``` -### deleteMany - - +### `deleteMany` A nested `deleteMany` deletes related records and supports filtering. For example, you can delete a user's posts while updating other properties of that user. @@ -3342,7 +3326,7 @@ const result = await prisma.user.update({ -### equals +### `equals` Value equals `n`. @@ -3370,7 +3354,7 @@ const result = await prisma.user.findMany({ }) ``` -### not +### `not` Value does not equal `n`. @@ -3388,7 +3372,7 @@ const result = await prisma.user.findMany({ }) ``` -### in +### `in` Value `n` exists in list. @@ -3455,7 +3439,7 @@ const getUser = await prisma.user.findMany({ }) ``` -### notIn +### `notIn` Value `n` does not exist in list. @@ -3475,7 +3459,7 @@ const getUser = await prisma.user.findMany({ }) ``` -### lt +### `lt` Value `n` is less than `x`. @@ -3493,7 +3477,7 @@ const getPosts = await prisma.post.findMany({ }) ``` -### lte +### `lte` Value `n` is less than _or_ equal to `x`. @@ -3511,7 +3495,7 @@ const getPosts = await prisma.post.findMany({ }) ``` -### gt +### `gt` Value `n` is greater than `x`. @@ -3529,7 +3513,7 @@ const getPosts = await prisma.post.findMany({ }) ``` -### gte +### `gte` Value `n` is greater than _or_ equal to `x`. @@ -3563,7 +3547,7 @@ const result = await prisma.post.findMany({ }) ``` -### contains +### `contains` Value `n` contains `x`. @@ -3595,7 +3579,7 @@ const result = await prisma.post.count({ }) ``` -### search +### `search` Use [Full-Text Search](/orm/prisma-client/queries/full-text-search) to search within a `String` field. @@ -3647,7 +3631,7 @@ const result = await prisma.post.findMany({ }) ``` -### mode +### `mode` #### Remarks @@ -3668,7 +3652,7 @@ const result = await prisma.post.findMany({ }) ``` -### startsWith +### `startsWith` #### Examples @@ -3684,7 +3668,7 @@ const result = await prisma.post.findMany({ }) ``` -### endsWith +### `endsWith` #### Get all `User` records where `email` ends with `prisma.io` @@ -3698,7 +3682,7 @@ const result = await prisma.user.findMany({ }) ``` -### AND +### `AND` All conditions must return `true`. Alternatively, pass a list of objects into the `where` clause - the [`AND` operator is not required](#get-all-post-records-where-the-content-field-contains-prisma-and-published-is-false-no-and). @@ -3768,7 +3752,7 @@ const result = await prisma.post.findMany({ }) ``` -### OR +### `OR` One or more conditions must return `true`. @@ -3849,7 +3833,7 @@ const result = await prisma.post.findMany({ }) ``` -### NOT +### `NOT` All conditions must return `false`. @@ -3919,7 +3903,7 @@ const result = await prisma.post.findMany({ ## Relation filters -### some +### `some` Returns all records where **one or more** ("some") _related_ records match filtering criteria. @@ -3945,7 +3929,7 @@ const result = await prisma.user.findMany({ } ``` -### every +### `every` Returns all records where **all** ("every") _related_ records match filtering criteria. @@ -3965,7 +3949,7 @@ const result = await prisma.user.findMany({ } ``` -### none +### `none` Returns all records where **zero** _related_ records match filtering criteria. @@ -4001,7 +3985,7 @@ const result = await prisma.user.findMany({ } ``` -### is +### `is` Returns all records where related record matches filtering criteria (for example, user's name `is` Bob). @@ -4021,7 +4005,7 @@ const result = await prisma.post.findMany({ } ``` -### isNot +### `isNot` Returns all records where related record matches filtering criteria (for example, user's name `isNot` Bob). @@ -4043,7 +4027,7 @@ const result = await prisma.post.findMany({ ## Scalar list methods -### set +### `set` Use `set` to overwrite the value of a scalar list field. @@ -4100,7 +4084,7 @@ const setTags = await prisma.post.update({ }) ``` -### push +### `push` `push` is available in version [2.20.0](https://github.com/prisma/prisma/releases/2.20.0) and later. Use `push` to add _one_ value or _multiple_ values to a scalar list field. @@ -4139,7 +4123,7 @@ const addTag = await prisma.post.update({ }) ``` -### unset +### `unset` @@ -4185,7 +4169,7 @@ Available for: - Scalar list / array filters [ignore `NULL` values](/orm/prisma-client/special-fields-and-types/working-with-scalar-lists-arrays#null-values-in-arrays) . Using `isEmpty` or `NOT` does not return records with `NULL` value lists / arrays, and `{ equals: null }` results in an error. -### has +### `has` The given value exists in the list. @@ -4217,7 +4201,7 @@ const posts = await client.post.findMany({ }) ``` -### hasEvery +### `hasEvery` Every value exists in the list. @@ -4235,7 +4219,7 @@ const posts = await prisma.post.findMany({ }) ``` -### hasSome +### `hasSome` At least one value exists in the list. @@ -4253,7 +4237,7 @@ const posts = await prisma.post.findMany({ }) ``` -### isEmpty +### `isEmpty` The list is empty. @@ -4271,7 +4255,7 @@ const posts = await prisma.post.findMany({ }) ``` -### isSet +### `isSet` @@ -4296,7 +4280,7 @@ const posts = await prisma.post.findMany({ }) ``` -### equals +### `equals` The list matches the given value exactly. @@ -4324,7 +4308,7 @@ Available for MongoDB only in Prisma `3.10.0` and later. Composite type methods allow you to create, update and delete [composite types](/orm/prisma-client/special-fields-and-types/composite-types). -### set +### `set` Use `set` to overwrite the value of a composite type. @@ -4340,7 +4324,7 @@ Use `set` to overwrite the value of a composite type. #### Examples -##### Set the shippingAddress composite type within a new order +##### Set the `shippingAddress` composite type within a new `order` ```ts const order = await prisma.order.create({ @@ -4361,7 +4345,7 @@ const order = await prisma.order.create({ }) ``` -##### Set an optional composite type to null +##### Set an optional composite type to `null` ```ts const order = await prisma.order.create({ @@ -4374,13 +4358,13 @@ const order = await prisma.order.create({ }) ``` -### unset +### `unset` Use `unset` to unset the value of a composite type. Unlike `set: null`, this removes the field entirely from the MongoDB document. #### Examples -##### Remove the billingAddress from an order +##### Remove the `billingAddress` from an `order` ```ts const order = await prisma.order.update({ @@ -4397,7 +4381,7 @@ const order = await prisma.order.update({ }) ``` -### update +### `update` Use `update` to update fields within a required composite type. @@ -4407,7 +4391,7 @@ The `update` method cannot be used on optional types. Instead, use [upsert](#ups #### Examples -##### Update the zip field of a shippingAddress composite type +##### Update the zip field of a `shippingAddress` composite type ```ts const order = await prisma.order.update({ @@ -4425,7 +4409,7 @@ const order = await prisma.order.update({ }) ``` -### upsert +### `upsert` Use `upsert` to update an existing optional composite type if it exists, and otherwise set the composite type. @@ -4435,7 +4419,7 @@ The `upsert` method cannot be used on required types. Instead, use [update](#upd #### Examples -##### Create a new billingAddress if it doesn't exist, and otherwise update it +##### Create a new `billingAddress` if it doesn't exist, and otherwise update it ```ts const order = await prisma.order.update({ @@ -4461,13 +4445,13 @@ const order = await prisma.order.update({ }) ``` -### push +### `push` Use `push` to push values to the end of a list of composite types. #### Examples -##### Add a new photo to the photos list +##### Add a new photo to the `photos` list ```ts const product = prisma.product.update({ @@ -4493,7 +4477,7 @@ Available for MongoDB only in Prisma `3.11.0` and later. Composite type filters allow you to filter the contents of [composite types](/orm/prisma-client/special-fields-and-types/composite-types). -### equals +### `equals` Use `equals` to filter results by matching a composite type or a list of composite types. Requires all required fields of the composite type to match. @@ -4511,7 +4495,7 @@ The ordering of fields and lists matters when using `equals`: #### Examples -##### Find orders that exactly match the given shippingAddress +##### Find orders that exactly match the given `shippingAddress` ```ts const orders = await prisma.order.findMany({ @@ -4527,7 +4511,7 @@ const orders = await prisma.order.findMany({ }) ``` -##### Find products with photos that match all of a list of urls +##### Find products with photos that match all of a list of `url`s ```ts const product = prisma.product.findMany({ @@ -4539,13 +4523,13 @@ const product = prisma.product.findMany({ }) ``` -### is +### `is` Use `is` to filter results by matching specific fields within composite types. #### Examples -##### Find orders with a shippingAddress that matches the given street name +##### Find orders with a `shippingAddress` that matches the given street name ```ts const orders = await prisma.order.findMany({ @@ -4559,13 +4543,13 @@ const orders = await prisma.order.findMany({ }) ``` -### isNot +### `isNot` Use `isNot` to filter results for composite type fields that do not match. #### Examples -##### Find orders with a shippingAddress that does not match the given zip code +##### Find orders with a `shippingAddress` that does not match the given zip code ```ts const orders = await prisma.order.findMany({ @@ -4579,7 +4563,7 @@ const orders = await prisma.order.findMany({ }) ``` -### isEmpty +### `isEmpty` Use `isEmpty` to filter results for an empty list of composite types. @@ -4597,13 +4581,13 @@ const product = prisma.product.findMany({ }) ``` -### every +### `every` Use `every` to filter for lists of composite types where every item in the list matches the condition #### Examples -##### Find the first product where every photo has a height of 200 +##### Find the first product where every photo has a `height` of `200` ```ts const product = prisma.product.findFirst({ @@ -4617,13 +4601,13 @@ const product = prisma.product.findFirst({ }) ``` -### some +### `some` Use `some` to filter for lists of composite types where one or more items in the list match the condition. #### Examples -##### Find the first product where one or more photos have a url of 2.jpg +##### Find the first product where one or more photos have a `url` of `2.jpg` ```ts const product = prisma.product.findFirst({ @@ -4637,13 +4621,13 @@ const product = prisma.product.findFirst({ }) ``` -### none +### `none` Use `none` to filter for lists of composite types where no items in the list match the condition. #### Examples -##### Find the first product where no photos have a url of 2.jpg +##### Find the first product where no photos have a `url` of `2.jpg` ```ts const product = prisma.product.findFirst({ @@ -4662,7 +4646,9 @@ const product = prisma.product.findFirst({ Atomic operations on update is available for number field types (`Float` and `Int`). This feature allows you to update a field based on its **current** value (such as _subtracting_ or _dividing_) without risking a race condition. -
Overview: Race conditions +
+ +Overview: Race conditions A race conditions occurs when two or more operations must be done in sequence in order to complete a task. In the following example, two clients try to increase the same field (`postCount`) by one: @@ -4736,7 +4722,7 @@ const updatePosts = await prisma.post.updateMany({ }) ``` -## Json filters +## `Json` filters For use cases and advanced examples, see: [Working with `Json` fields](/orm/prisma-client/special-fields-and-types/working-with-json-fields). @@ -4773,12 +4759,12 @@ The examples in this section assumes that the value of the `pet` field is: - The implementation of `Json` filtering [differs between database connectors](/orm/prisma-client/special-fields-and-types/working-with-json-fields) - Filtering is case sensitive in PostgreSQL and does not yet support `mode` -### path +### `path` `path` represents the location of a specific key. The following query returns all users where the nested `favourites` > `dogBreed` key equals `"Rottweiler"`. -, ]}> - + + ```ts const getUsers = await prisma.user.findMany({ @@ -4791,8 +4777,8 @@ const getUsers = await prisma.user.findMany({ }) ``` - - + + ```ts const getUsers = await prisma.user.findMany({ @@ -4805,13 +4791,13 @@ const getUsers = await prisma.user.findMany({ }) ``` - + The following query returns all users where the nested `owned` > `cats` array contains `"Elliott"`. -, ]}> - + + ```ts const getUsers = await prisma.user.findMany({ @@ -4824,8 +4810,8 @@ const getUsers = await prisma.user.findMany({ }) ``` - - + + ```ts const getUsers = await prisma.user.findMany({ @@ -4838,7 +4824,7 @@ const getUsers = await prisma.user.findMany({ }) ``` - + @@ -4849,9 +4835,6 @@ Filtering by the key values of objects inside an array (below) is only supported The following query returns all users where the nested `favorites` > `treats` array contains an object where the `name` value is `"Dreamies"`: -]}> - - ```ts const getUsers = await prisma.user.findMany({ where: { @@ -4863,20 +4846,12 @@ const getUsers = await prisma.user.findMany({ }) ``` - - - - - - - - -### string_contains +### `string_contains` The following query returns all users where the nested `favorites` > `catBreed` key value contains `"Van"`: -, ]}> - + + ```ts const getUsers = await prisma.user.findMany({ @@ -4889,8 +4864,8 @@ const getUsers = await prisma.user.findMany({ }) ``` - - + + ```ts const getUsers = await prisma.user.findMany({ @@ -4903,16 +4878,16 @@ const getUsers = await prisma.user.findMany({ }) ``` - + -### string_starts_with +### `string_starts_with` The following query returns all users where the nested `favorites` > `catBreed` key value starts with `"Turkish"`: -, ]}> - + + ```ts const getUsers = await prisma.user.findMany({ @@ -4925,9 +4900,9 @@ const getUsers = await prisma.user.findMany({ }) ``` - + - + ```ts const getUsers = await prisma.user.findMany({ @@ -4940,16 +4915,16 @@ const getUsers = await prisma.user.findMany({ }) ``` - + -### string_ends_with +### `string_ends_with` -The following query returns all users where the nested `favorites` > `catBreed` key value ends with `"Van"`: +The following query returns all users where the nested `favorites` \> `catBreed` key value ends with `"Van"`: -, ]}> - + + ```ts const getUsers = await prisma.user.findMany({ @@ -4962,9 +4937,9 @@ const getUsers = await prisma.user.findMany({ }) ``` - + - + ```ts const getUsers = await prisma.user.findMany({ @@ -4977,16 +4952,16 @@ const getUsers = await prisma.user.findMany({ }) ``` - + -### array_contains +### `array_contains` The following query returns all users where the `sanctuaries` array contains the value `"RSPCA"`: -, ]}> - + + ```ts const getUsers = await prisma.user.findMany({ @@ -5005,8 +4980,8 @@ const getUsers = await prisma.user.findMany({ - - + + ```ts const getUsers = await prisma.user.findMany({ @@ -5019,13 +4994,13 @@ const getUsers = await prisma.user.findMany({ }) ``` - + The following query returns all users where the `sanctuaries` array contains _all_ the values in the given array: -, ]}> - + + ```ts const getUsers = await prisma.user.findMany({ @@ -5038,8 +5013,8 @@ const getUsers = await prisma.user.findMany({ }) ``` - - + + ```ts const getUsers = await prisma.user.findMany({ @@ -5052,15 +5027,15 @@ const getUsers = await prisma.user.findMany({ }) ``` - + -### array_starts_with +### `array_starts_with` The following query returns all users where the `sanctuaries` array starts with the value `"RSPCA"`: -, ]}> - + + ```ts const getUsers = await prisma.user.findMany({ @@ -5073,9 +5048,9 @@ const getUsers = await prisma.user.findMany({ }) ``` - + - + ```ts const getUsers = await prisma.user.findMany({ @@ -5088,15 +5063,15 @@ const getUsers = await prisma.user.findMany({ }) ``` - + -### array_ends_with +### `array_ends_with` The following query returns all users where the `sanctuaries` array ends with the value `"Alley Cat Allies"`: -, ]}> - + + ```ts const getUsers = await prisma.user.findMany({ @@ -5109,8 +5084,8 @@ const getUsers = await prisma.user.findMany({ }) ``` - - + + ```ts const getUsers = await prisma.user.findMany({ @@ -5123,7 +5098,7 @@ const getUsers = await prisma.user.findMany({ }) ``` - + ## Client methods @@ -5142,7 +5117,7 @@ In addition, if you are using `$on` or `$use`, you will need to use these client -### $disconnect() +### `$disconnect()` The `$disconnect()` method closes the database connections that were established when `$connect` was called and stops the process that was running Prisma ORM's query engine. See [Connection management](/orm/prisma-client/setup-and-configuration/databases-connections/connection-management) for an overview of `$connect()` and `$disconnect()`. @@ -5150,7 +5125,7 @@ The `$disconnect()` method closes the database connections that were established - `$disconnect()` returns a `Promise`, so you should call it inside an `async` function with the `await` keyword. -### $connect() +### `$connect()` The `$connect()` method establishes a physical connection to the database via Prisma ORM's query engine. See [Connection management](/orm/prisma-client/setup-and-configuration/databases-connections/connection-management) for an overview of `$connect()` and `$disconnect()`. @@ -5158,7 +5133,7 @@ The `$connect()` method establishes a physical connection to the database via Pr - `$connect()` returns a `Promise`, so you should call it inside an `async` function with the `await` keyword. -### $on() +### `$on()` @@ -5168,7 +5143,7 @@ The `$connect()` method establishes a physical connection to the database via Pr The `$on()` method allows you to subscribe to [logging events](#log) or the [exit hook](/orm/prisma-client/setup-and-configuration/databases-connections/connection-management#exit-hooks). -### $use() +### `$use()` @@ -5187,11 +5162,11 @@ prisma.$use(async (params, next) => { }) ``` -#### next +#### `next` `next` represents the "next level" in the middleware stack, which could be the next middleware or the Prisma Query, depending on [where in the stack you are](/orm/prisma-client/client-extensions/middleware#running-order-and-the-middleware-stack). -#### params +#### `params` `params` is an object with information to use in your middleware. @@ -5203,11 +5178,11 @@ prisma.$use(async (params, next) => { | `model` | The model type - for example, `Post` or `User`. | | `runInTransaction` | Returns `true` if the query ran in the context of a [transaction](#transaction). | - +:::tip If you need the `model` property as a string, use: `String(params.model)` - +::: Example parameter values: @@ -5225,23 +5200,23 @@ Example parameter values: See [middleware examples](/orm/prisma-client/client-extensions/middleware#samples) . -### $executeRaw() +### `$executeRaw()` See: [Raw database access (`$executeRaw()`)](/orm/prisma-client/queries/raw-database-access/raw-queries#executeraw). -### $queryRaw() +### `$queryRaw()` See: [Raw database access (`$queryRaw()`)](/orm/prisma-client/queries/raw-database-access/raw-queries#queryraw). -### $runCommandRaw() +### `$runCommandRaw()` See: [Raw database access (`$runCommandRaw()`)](/orm/prisma-client/queries/raw-database-access/raw-queries#runcommandraw). -### $transaction() +### `$transaction()` See: [Transactions](/orm/prisma-client/queries/transactions). -### $metrics +### `$metrics` Prisma Client metrics give you a detailed insight into how Prisma Client interacts with your database. You can use this insight to help diagnose performance issues with your application. Learn more: [Metrics](/orm/prisma-client/observability-and-logging/metrics). @@ -5250,7 +5225,7 @@ Prisma Client metrics has the following methods: - `$metrics.json()`: [Retrieves Prisma Client metrics in JSON format](/orm/prisma-client/observability-and-logging/metrics#retrieve-metrics-in-json-format). - `$metrics.prometheus()`: [Retrieves Prisma Client metrics in Prometheus format](/orm/prisma-client/observability-and-logging/metrics#retrieve-metrics-in-prometheus-format). -### $extends +### `$extends` With `$extends`, you can create and use Prisma Client extensions to add functionality to Prisma Client in the following ways: @@ -5265,7 +5240,7 @@ Learn more: [Prisma Client extensions](/orm/prisma-client/client-extensions). Utility types are helper functions and types that live on the `Prisma` namespace. They are useful for keeping your application type safe. -### Prisma.validator +### `Prisma.validator` The `validator` helps you create re-usable query parameters based on your schema models while making sure that the objects you create are valid. See also: [Using `Prisma.validator`](/orm/prisma-client/type-safety/prisma-validator) @@ -5401,7 +5376,7 @@ await prisma.order.findMany({ However, you can compare fields in separate models with [standard queries](#model-queries). -#### In groupBy model queries, put your referenced fields in the by argument +#### In `groupBy` model queries, put your referenced fields in the `by` argument If you use the [groupBy](#groupby) model query with the `having` option, then you must put your referenced fields in the `by` argument. @@ -5438,7 +5413,7 @@ await prisma.user.findMany({ }) ``` -## Filter on non-unique fields with UserWhereUniqueInput +## Filter on non-unique fields with `UserWhereUniqueInput` From version 5.0.0, the generated type `UserWhereUniqueInput` on [`where`](#where) exposes all fields on the model, not just unique fields. This was available under the [`extendedWhereUnique` Preview flag](/orm/reference/preview-features/client-preview-features#preview-features-promoted-to-general-availability) between versions 4.5.0 to 4.16.2 @@ -5515,9 +5490,9 @@ In the following example, we do not want to return a post if it is soft-deleted. prisma.Post.findUnique({ where: { id: postId, isDeleted: false } }) ``` -### UserWhereUniqueInput considerations +### `UserWhereUniqueInput` considerations -#### Boolean operators with UserWhereUniqueInput +#### Boolean operators with `UserWhereUniqueInput` With `UserWhereUniqueInput`, you must specify at least one unique field outside of the boolean operators `AND`, `OR`, `NOT`. You can still use these boolean operators in conjunction with any other unique fields or non-unique fields in your filter. @@ -5620,7 +5595,7 @@ await prisma.user.update({ }) ``` -## PrismaPromise behavior +## `PrismaPromise` behavior All Prisma Client queries return an instance of `PrismaPromise`. This is a ["thenable"](https://masteringjs.io/tutorials/fundamentals/thenable), meaning a `PrismaPromise` only executes when you call `await` or `.then()` or `.catch()`. This behavior is different from a regular JavaScript [`Promise`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise), which starts executing immediately. diff --git a/content/200-orm/500-reference/100-prisma-schema-reference.mdx b/content/200-orm/500-reference/100-prisma-schema-reference.mdx index 1fdb4adfee..ff5bc03922 100644 --- a/content/200-orm/500-reference/100-prisma-schema-reference.mdx +++ b/content/200-orm/500-reference/100-prisma-schema-reference.mdx @@ -1,13 +1,13 @@ --- title: 'Prisma schema reference' -navTitle: 'Prisma Schema' metaTitle: 'Prisma Schema API' metaDescription: 'API reference documentation for the Prisma Schema Language (PSL).' +sidebar_label: 'Prisma Schema' tocDepth: 3 toc: true --- -## datasource +## `datasource` Defines a [data source](/orm/prisma-schema/overview/data-sources) in the Prisma schema. @@ -155,9 +155,7 @@ datasource db { The format for connection strings is the same as for PostgreSQL. Learn more about PostgreSQL connection strings [here](/orm/overview/databases/postgresql). -## generator - - +## `generator` Defines a [generator](/orm/prisma-schema/overview/generators) in the Prisma schema. @@ -166,14 +164,14 @@ Defines a [generator](/orm/prisma-schema/overview/generators) in the Prisma sche A `generator` block accepts the following fields: | Name | Required | Type | Description | -| ----------------- | -------- | ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --- | +| ----------------- | -------- | ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `provider` | **Yes** | String (file path) or Enum (`prisma-client-js`) | Describes which [generator](/orm/prisma-schema/overview/generators) to use. This can point to a file that implements a generator or specify a built-in generator directly. | | `output` | No | String (file path) | Determines the location for the generated client, [learn more](/orm/prisma-client/setup-and-configuration/generating-prisma-client#using-a-custom-output-path). **Default**: `node_modules/.prisma/client` | | `previewFeatures` | No | List of Enums | Use intellisense to see list of currently available Preview features (`Ctrl+Space` in Visual Studio Code) **Default**: none | | | `engineType` | No | Enum (`library` or `binary`) | Defines the [query engine](/orm/more/under-the-hood/engines) type to download and use. **Default**: `library` | | `binaryTargets` | No | List of Enums (see below) | Specify the OS on which the Prisma Client will run to ensure compatibility of the [query engine](/orm/more/under-the-hood/engines). **Default**: `native` | -#### binaryTargets options +#### `binaryTargets` options The following tables list all supported operating systems with the name of platform to specify in [`binaryTargets`](/orm/prisma-schema/overview/generators#binary-targets). @@ -328,7 +326,7 @@ generator client { } ``` -## model +## `model` Defines a Prisma [model](/orm/prisma-schema/data-model/models#defining-models) . @@ -357,8 +355,8 @@ Defines a Prisma [model](/orm/prisma-schema/data-model/models#defining-models) . #### A model named `User` with two scalar fields -, ]}> - + + ```prisma model User { @@ -367,8 +365,8 @@ model User { } ``` - - + + ```prisma model User { @@ -378,10 +376,10 @@ model User { } ``` - + -## model fields +## `model` fields [Fields](/orm/prisma-schema/data-model/models#defining-fields) are properties of models. @@ -395,13 +393,13 @@ model User { > **Note**: You can use the [`@map` attribute](#map) to [map a field name to a column](/orm/prisma-client/setup-and-configuration/custom-model-and-field-names) with a different name that does not match field naming conventions: e.g. `myField @map("my_field")`. -## model field scalar types +## `model` field scalar types The _data source connector_ determines what _native database type_ each of Prisma ORM scalar type maps to. Similarly, the _generator_ determines what _type in the target programming language_ each of these types map to. Prisma models also have [model field types](/orm/prisma-schema/data-model/relations) that define relations between models. -### String +### `String` Variable length text. @@ -432,9 +430,9 @@ Variable length text. #### MySQL -| Native database type | Native database type attribute | Notes | -| :------------------- | :----------------------------- | ----- | -| `VARCHAR(x)` | `@db.VarChar(x)` | | +| Native database type | Native database type attribute | +| :------------------- | :----------------------------- | +| `VARCHAR(x)` | `@db.VarChar(x)` | | `TEXT` | `@db.Text` | | `CHAR(x)` | `@db.Char(x)` | | `TINYTEXT` | `@db.TinyText` | @@ -461,12 +459,12 @@ model Model { #### Microsoft SQL Server -| Native database type | Native database type attribute | Notes | -| :------------------- | :----------------------------- | ----- | +| Native database type | Native database type attribute | +| :------------------- | :----------------------------- | | `char(x)` | `@db.Char(x)` | | `nchar(x)` | `@db.NChar(x)` | | `varchar(x)` | `@db.VarChar(x)` | -| `nvarchar(x)` | `@db.NVarChar(x)` | | +| `nvarchar(x)` | `@db.NVarChar(x)` | | `text` | `@db.Text` | | `ntext` | `@db.NText` | | `xml` | `@db.Xml` | @@ -496,7 +494,7 @@ Note that the `xml` and `citext` types supported in PostgreSQL are not currently | ---------------- | | `string` | -### Boolean +### `Boolean` True or false value. @@ -550,7 +548,7 @@ True or false value. | ---------------- | | `boolean` | -### Int +### `Int` #### Default type mappings @@ -626,7 +624,7 @@ True or false value. | ---------------- | | `number` | -### BigInt +### `BigInt` `BigInt` is available in version [2.17.0](https://github.com/prisma/prisma/releases/tag/2.17.0) and later. @@ -682,7 +680,7 @@ True or false value. | :--------------- | :-------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------- | | Prisma Client JS | [`BigInt`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt) | See [examples of working with `BigInt`](/orm/prisma-client/special-fields-and-types#working-with-bigint) | -### Float +### `Float` Floating point number. @@ -743,7 +741,7 @@ Floating point number. | ---------------- | | `number` | -### Decimal +### `Decimal` #### Default type mappings @@ -804,7 +802,7 @@ Floating point number. | :--------------- | :------------------------------------------------- | :--------------------------------------------------------------------------------------------------------- | | Prisma Client JS | [`Decimal`](https://mikemcl.github.io/decimal.js/) | See [examples of working with `Decimal`](/orm/prisma-client/special-fields-and-types#working-with-decimal) | -### DateTime +### `DateTime` #### Remarks @@ -884,7 +882,7 @@ yearField Int @db.Year | ---------------- | | `Date` | -### Json +### `Json` A JSON object. @@ -940,7 +938,7 @@ Not supported | ---------------- | | `object` | -### Bytes +### `Bytes` `Bytes` is available in version [2.17.0](https://github.com/prisma/prisma/releases/tag/2.17.0) and later. @@ -1006,7 +1004,7 @@ Not supported | :--------------- | :--------------------------------------------- | :------------------------------------------------------------------------------------------------------ | | Prisma Client JS | [`Buffer`](https://nodejs.org/api/buffer.html) | See [examples of working with `Buffer`](/orm/prisma-client/special-fields-and-types#working-with-bytes) | -### Unsupported +### `Unsupported` @@ -1032,9 +1030,6 @@ The `Unsupported` type was introduced in [2.17.0](https://github.com/prisma/pris #### Examples -]}> - - ```prisma model Star { id Int @id @default(autoincrement()) @@ -1044,15 +1039,9 @@ model Star { } ``` - - - - - - -## model field type modifiers +## `model` field type modifiers -### [] modifier +### `[]` modifier Makes a field a list. @@ -1072,57 +1061,61 @@ Makes a field a list. ##### Define a scalar list -, ]}> - + + ```prisma highlight=3;normal model User { id Int @id @default(autoincrement()) + //highlight-next-line favoriteColors String[] } ``` - - + + ```prisma highlight=3;normal model User { id String @id @default(auto()) @map("_id") @db.ObjectId + //highlight-next-line favoriteColors String[] } ``` - + ##### Define a scalar list with a default value Available in version 4.0.0 and later. -, ]}> - + + ```prisma highlight=3;normal model User { id Int @id @default(autoincrement()) + //highlight-next-line favoriteColors String[] @default(["red", "blue", "green"]) } ``` - - + + ```prisma highlight=3;normal model User { id String @id @default(auto()) @map("_id") @db.ObjectId + //highlight-next-line favoriteColors String[] @default(["red", "blue", "green"]) } ``` - + -### ? modifier +### `?` modifier Makes a field optional. @@ -1137,6 +1130,7 @@ Makes a field optional. ```prisma highlight=3;normal model User { id Int @id @default(autoincrement()) + //highlight-next-line name String? } ``` @@ -1152,9 +1146,7 @@ Some attributes take arguments. Arguments in attributes are always named, but in > **Note**: The leading underscore in a signature means the _argument name_ can be omitted. -### @id - - +### `@id` Defines a single-field ID on the model. @@ -1231,10 +1223,7 @@ Defines a single-field ID on the model. In most cases, you want your database to create the ID. To do this, annotate the ID field with the `@default` attribute and initialize the field with a [function](#attribute-functions). -##### Generate autoincrementing integers as IDs - -]}> - +##### Generate autoincrementing integers as IDs (Relational databases only) ```prisma model User { @@ -1243,17 +1232,8 @@ model User { } ``` - - - - - - ##### Generate `ObjectId` as IDs (MongoDB only) -]}> - - ```prisma model User { id String @id @default(auto()) @map("_id") @db.ObjectId @@ -1261,16 +1241,10 @@ model User { } ``` - - - - - - ##### Generate `cuid()` values as IDs -, ]}> - + + ```prisma model User { @@ -1279,8 +1253,8 @@ model User { } ``` - - + + ```prisma model User { @@ -1299,14 +1273,14 @@ id String @id @default(auto()) @db.ObjectId @map("_id") - + ##### Generate `uuid()` values as IDs -, ]}> + - + ```prisma model User { @@ -1315,9 +1289,9 @@ model User { } ``` - + - + ```prisma model User { @@ -1335,7 +1309,7 @@ id String @id @default(auto()) @db.ObjectId @map("_id") ``` - + @@ -1343,8 +1317,8 @@ id String @id @default(auto()) @db.ObjectId @map("_id") In the following example, `id` does not have a default value: -, ]}> - + + ```prisma model User { @@ -1353,27 +1327,29 @@ model User { } ``` - - + + ```prisma model User { id String @id @map("_id") @db.ObjectId name String +} ``` ```prisma model User { id String @id @map("_id") name String +} ``` - + Note that in the above case, you _must_ provide your own ID values when creating new records for the `User` model using Prisma Client, e.g.: -```ts +```ts const newUser = await prisma.user.create({ data: { id: 1, @@ -1386,8 +1362,8 @@ const newUser = await prisma.user.create({ In the following example, `authorId` is a both a relation scalar and the ID of `Profile`: -, ]}> - + + ```prisma model Profile { @@ -1404,8 +1380,8 @@ model User { } ``` - - + + ```prisma model Profile { @@ -1422,7 +1398,7 @@ model User { } ``` - + In this scenario, you cannot create a `Profile` only - you must use Prisma Client's [nested writes](/orm/prisma-client/queries/relation-queries#nested-writes) create a `User` **or** connect the profile to an existing user. @@ -1459,7 +1435,7 @@ const profileWithUser = await prisma.profile.create({ }) ``` -### @@id +### `@@id` @@ -1511,10 +1487,7 @@ The name of the `fields` argument on the `@@id` attribute can be omitted: #### Examples -##### Specify a multi-field ID on two `String` fields - -]}> - +##### Specify a multi-field ID on two `String` fields (Relational databases only) ```prisma model User { @@ -1527,16 +1500,8 @@ model User { } ``` - - - - - When you create a user, you must provide a unique combination of `firstName` and `lastName`: -]}> - - ```ts const user = await prisma.user.create({ data: { @@ -1546,16 +1511,8 @@ const user = await prisma.user.create({ }) ``` - - - - - To retrieve a user, use the generated composite ID field (`firstName_lastName`): -]}> - - ```ts const user = await prisma.user.findUnique({ where: { @@ -1567,15 +1524,7 @@ const user = await prisma.user.findUnique({ }) ``` - - - - - -##### Specify a multi-field ID on two `String` fields and one `Boolean` field - -]}> - +##### Specify a multi-field ID on two `String` fields and one `Boolean` field (Relational databases only) ```prisma model User { @@ -1588,16 +1537,8 @@ model User { } ``` - - - - - When creating new `User` records, you now must provide a unique combination of values for `firstName`, `lastName` and `isAdmin`: -]}> - - ```ts const user = await prisma.user.create({ data: { @@ -1608,15 +1549,7 @@ const user = await prisma.user.create({ }) ``` - - - - - -##### Specify a multi-field ID that includes a relation field - -]}> - +##### Specify a multi-field ID that includes a relation field (Relational databases only) ```prisma model Post { @@ -1636,16 +1569,8 @@ model User { } ``` - - - - - When creating new `Post` records, you now must provide a unique combination of values for `authorId` (foreign key) and `title`: -]}> - - ```ts const post = await prisma.post.create({ data: { @@ -1659,14 +1584,7 @@ const post = await prisma.post.create({ }) ``` - - - - - -### @default - - +### `@default` Defines a [default value for a field](/orm/prisma-schema/data-model/models#defining-a-default-value) . @@ -1730,8 +1648,8 @@ id Int @id @default(autoincrement()) ##### Default value for an `Int` -, ]}> - + + ```prisma model User { @@ -1740,8 +1658,8 @@ model User { } ``` - - + + ```prisma model User { @@ -1750,13 +1668,13 @@ model User { } ``` - + ##### Default value for a `Float` -, ]}> - + + ```prisma model User { @@ -1765,8 +1683,8 @@ model User { } ``` - - + + ```prisma model User { @@ -1775,13 +1693,13 @@ model User { } ``` - + ##### Default value for `Decimal` -, ]}> - + + ```prisma model User { @@ -1790,18 +1708,18 @@ model User { } ``` - - + + [Not supported](https://github.com/prisma/prisma/issues/12637). - + ##### Default value for `BigInt` -, ]}> - + + ```prisma model User { @@ -1810,8 +1728,8 @@ model User { } ``` - - + + ```prisma model User { @@ -1820,13 +1738,13 @@ model User { } ``` - + ##### Default value for a `String` -, ]}> - + + ```prisma model User { @@ -1835,8 +1753,8 @@ model User { } ``` - - + + ```prisma model User { @@ -1845,13 +1763,13 @@ model User { } ``` - + ##### Default value for a `Boolean` -, ]}> - + + ```prisma model User { @@ -1860,8 +1778,8 @@ model User { } ``` - - + + ```prisma model User { @@ -1870,15 +1788,15 @@ model User { } ``` - + ##### Default value for a `DateTime` Note that static default values for `DateTime` are based on the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) standard. -, ]}> - + + ```prisma model User { @@ -1887,8 +1805,8 @@ model User { } ``` - - + + ```prisma model User { @@ -1897,13 +1815,13 @@ model User { } ``` - + ##### Default value for a `Bytes` -, ]}> - + + ```prisma model User { @@ -1912,8 +1830,8 @@ model User { } ``` - - + + ```prisma model User { @@ -1922,13 +1840,13 @@ model User { } ``` - + ##### Default value for an `enum` -, ]}> - + + ```prisma enum Role { @@ -1942,14 +1860,15 @@ model User { id Int @id @default(autoincrement()) email String @unique name String? + //highlight-next-line role Role @default(USER) posts Post[] profile Profile? } ``` - - + + ```prisma enum Role { @@ -1963,24 +1882,26 @@ model User { id String @id @default(auto()) @map("_id") @db.ObjectId email String @unique name String? + //highlight-next-line role Role @default(USER) posts Post[] profile Profile? } ``` - + ##### Default values for scalar lists -, ]}> - + + ```prisma highlight=4;normal model User { id Int @id @default(autoincrement()) posts Post[] + //highlight-next-line favoriteColors String[] @default(["red", "yellow", "purple"]) roles Role[] @default([USER, DEVELOPER]) } @@ -1992,13 +1913,14 @@ enum Role { } ``` - - + + ```prisma highlight=4;normal model User { id String @id @default(auto()) @map("_id") @db.ObjectId posts Post[] + //highlight-next-line favoriteColors String[] @default(["red", "yellow", "purple"]) roles Role[] @default([USER, DEVELOPER]) } @@ -2010,10 +1932,10 @@ enum Role { } ``` - + -### @unique +### `@unique` Defines a unique constraint for this field. @@ -2070,8 +1992,8 @@ Defines a unique constraint for this field. ##### Specify a unique attribute on a required `String` field -, ]}> - + + ```prisma model User { @@ -2080,8 +2002,8 @@ model User { } ``` - - + + ```prisma model User { @@ -2090,13 +2012,13 @@ model User { } ``` - + ##### Specify a unique attribute on an optional `String` field -, ]}> - + + ```prisma model User { @@ -2106,8 +2028,8 @@ model User { } ``` - - + + ```prisma model User { @@ -2117,13 +2039,13 @@ model User { } ``` - + ##### Specify a unique attribute on relation scalar field `authorId` -, ]}> - + + ```prisma model Post { @@ -2141,8 +2063,8 @@ model User { } ``` - - + + ```prisma model Post { @@ -2160,13 +2082,13 @@ model User { } ``` - + ##### Specify a unique attribute with `cuid()` values as default values -, ]}> - + + ```prisma model User { @@ -2175,8 +2097,8 @@ model User { } ``` - - + + ```prisma model User { @@ -2186,10 +2108,10 @@ model User { } ``` - + -### @@unique +### `@@unique` Defines a compound [unique constraint](/orm/prisma-schema/data-model/models#defining-a-unique-field) for the specified fields. @@ -2234,7 +2156,7 @@ Defines a compound [unique constraint](/orm/prisma-schema/data-model/models#defi #### Arguments | Name | Required | Type | Description | -| ----------- | -------- | ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --- | +| ----------- | -------- | ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `fields` | **Yes** | `FieldReference[]` | A list of field names - for example, `["firstname", "lastname"]`. Fields must be mandatory - see remarks. | | `name` | **No** | `String` | The name of the unique combination of fields - defaults to `fieldName1_fieldName2_fieldName3` | | `map` | **No** | `String` | @@ -2279,8 +2201,8 @@ The `length` and `sort` arguments are added to the relevant field names: ##### Specify a multi-field unique attribute on two `String` fields -, ]}> - + + ```prisma model User { @@ -2293,8 +2215,8 @@ model User { } ``` - - + + ```prisma model User { @@ -2307,7 +2229,7 @@ model User { } ``` - + To retrieve a user, use the generated field name (`firstname_lastname`): @@ -2326,8 +2248,8 @@ const user = await prisma.user.findUnique({ ##### Specify a multi-field unique attribute on two `String` fields and one `Boolean` field -, ]}> - + + ```prisma model User { @@ -2340,8 +2262,8 @@ model User { } ``` - - + + ```prisma model User { @@ -2354,13 +2276,13 @@ model User { } ``` - + ##### Specify a multi-field unique attribute that includes a relation field -, ]}> - + + ```prisma model Post { @@ -2380,8 +2302,8 @@ model User { } ``` - - + + ```prisma model Post { @@ -2401,13 +2323,13 @@ model User { } ``` - + ##### Specify a custom `name` for a multi-field unique attribute -, ]}> - + + ```prisma model User { @@ -2420,8 +2342,8 @@ model User { } ``` - - + + ```prisma model User { @@ -2434,7 +2356,7 @@ model User { } ``` - + To retrieve a user, use the custom field name (`admin_identifier`): @@ -2451,7 +2373,7 @@ const user = await prisma.user.findUnique({ }) ``` -### @@index +### `@@index` Defines an index in the database. @@ -2521,10 +2443,7 @@ The `length` and `sort` arguments are added to the relevant field names: Assume you want to add an index for the `title` field of the `Post` model -##### Define a single-column index - -]}> - +##### Define a single-column index (Relational databases only) ```prisma model Post { @@ -2536,15 +2455,7 @@ model Post { } ``` - - - - - -##### Define a multi-column index - -]}> - +##### Define a multi-column index (Relational databases only) ```prisma model Post { @@ -2556,15 +2467,7 @@ model Post { } ``` - - - - - -##### Define an index with a name - -]}> - +##### Define an index with a name (Relational databases only) ```prisma model Post { @@ -2576,15 +2479,7 @@ model Post { } ``` - - - - - -##### Define an index on a composite type field - -]}> - +##### Define an index on a composite type field (Relational databases only) ```prisma type Address { @@ -2601,12 +2496,7 @@ model User { } ``` - - - - - -### @relation +### `@relation` Defines meta information about the relation. [Learn more](/orm/prisma-schema/data-model/relations#the-relation-attribute). @@ -2667,7 +2557,7 @@ With SQLite, the signature changes to: See: [The `@relation` attribute](/orm/prisma-schema/data-model/relations#the-relation-attribute). -### @map +### `@map` Maps a field name or enum value from the Prisma schema to a column or document field with a different name in the database. If you do not use `@map`, the Prisma field name matches the column name or document field name exactly. @@ -2713,8 +2603,8 @@ The name of the `name` argument on the `@map` attribute can be omitted: ##### Map the `firstName` field to a column called `first_name` -, ]}> - + + ```prisma model User { @@ -2723,8 +2613,8 @@ model User { } ``` - - + + ```prisma model User { @@ -2733,7 +2623,7 @@ model User { } ``` - + The generated client: @@ -2755,7 +2645,7 @@ enum Role { } ``` -### @@map +### `@@map` Maps the Prisma schema model name to a table (relational databases) or collection (MongoDB) with a different name, or an enum name to a different underlying enum in the database. If you do not use `@@map`, the model name matches the table (relational databases) or collection (MongoDB) name exactly. @@ -2784,8 +2674,8 @@ The name of the `name` argument on the `@@map` attribute can be omitted ##### Map the `User` model to a database table/collection named `users` -, ]}> - + + ```prisma model User { @@ -2796,8 +2686,8 @@ model User { } ``` - - + + ```prisma model User { @@ -2808,7 +2698,7 @@ model User { } ``` - + The generated client: @@ -2833,7 +2723,7 @@ enum Role { } ``` -### @updatedAt +### `@updatedAt` Automatically stores the time when a record was last updated. If you do not supply a time yourself, Prisma Client will automatically set the value for fields with this attribute. @@ -2854,8 +2744,8 @@ N/A #### Examples -, ]}> - + + ```prisma line-number model Post { @@ -2864,8 +2754,8 @@ model Post { } ``` - - + + ```prisma line-number model Post { @@ -2874,12 +2764,10 @@ model Post { } ``` - + -### @ignore - - +### `@ignore` Add `@ignore` to a field that you want to exclude from Prisma Client (for example, a field that you do not want Prisma Client users to update). Ignored fields are excluded from the generated Prisma Client. The model's `create` method is disabled when doing this for _required_ fields with no `@default` (because the database cannot create an entry without that data). @@ -2895,13 +2783,12 @@ The following example demonstrates manually adding `@ignore` to exclude the `ema model User { id Int @id name String + //highlight-next-line email String @ignore // this field will be excluded } ``` -### @@ignore - - +### `@@ignore` Add `@@ignore` to a model that you want to exclude from Prisma Client (for example, a model that you do not want Prisma users to update). Ignored models are excluded from the generated Prisma Client. @@ -2920,6 +2807,7 @@ model Post { author User @relation(fields: [authorId], references: [id]) authorId Int + //highlight-next-line @@ignore } ``` @@ -2933,19 +2821,19 @@ model Post { author User @relation(fields: [authorId], references: [id]) authorId Int + //highlight-next-line @@ignore } model User { id Int @id @default(autoincrement()) name String? + //highlight-next-line posts Post[] @ignore } ``` -### @@schema - - +### `@@schema` @@ -2981,12 +2869,14 @@ The name of the `name` argument on the `@@schema` attribute can be omitted ```prisma highlight=3,9,16;normal generator client { provider = "prisma-client-js" + //highlight-next-line previewFeatures = ["multiSchema"] } datasource db { provider = "postgresql" url = env("DATABASE_URL") + //highlight-next-line schemas = ["auth"] } @@ -2994,6 +2884,7 @@ model User { id Int @id @default(autoincrement()) name String + //highlight-next-line @@schema("auth") } ``` @@ -3006,7 +2897,7 @@ For more information about using the `multiSchema` feature, refer to [this guide ## Attribute functions -### auto() +### `auto()` This function is available on MongoDB only. @@ -3030,10 +2921,7 @@ The `auto()` function is not available on relational databases. #### Example -##### Generate ObjectId (MongoDB only) - -]}> - +##### Generate `ObjectId` (MongoDB only) ```prisma model User { @@ -3042,12 +2930,7 @@ model User { } ``` - - - - - -### autoincrement() +### `autoincrement()` @@ -3072,10 +2955,7 @@ Create a sequence of integers in the underlying database and assign the incremen #### Examples -##### Generate autoincrementing integers as IDs - -]}> - +##### Generate autoincrementing integers as IDs (Relational databases only) ```prisma model User { @@ -3084,12 +2964,7 @@ model User { } ``` - - - - - -### sequence() +### `sequence()` @@ -3115,9 +2990,6 @@ Create a sequence of integers in the underlying database and assign the incremen ##### Generate sequencing integers as IDs -]}> - - ```prisma model User { id Int @id @default(sequence(maxValue: 4294967295)) @@ -3125,12 +2997,7 @@ model User { } ``` - - - - - -### cuid() +### `cuid()` Generate a globally unique identifier based on the [`cuid`](https://github.com/ericelliott/cuid) spec. @@ -3148,8 +3015,8 @@ Generate a globally unique identifier based on the [`cuid`](https://github.com/e ##### Generate `cuid()` values as IDs -, ]}> - + + ```prisma model User { @@ -3158,8 +3025,8 @@ model User { } ``` - - + + ```prisma model User { @@ -3168,10 +3035,10 @@ model User { } ``` - + -### uuid() +### `uuid()` Generate a globally unique identifier based on the [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier) spec, version 4 (random). @@ -3194,8 +3061,8 @@ Generate a globally unique identifier based on the [UUID](https://en.wikipedia.o ##### Generate `uuid()` values as IDs -, ]}> - + + ```prisma model User { @@ -3204,8 +3071,8 @@ model User { } ``` - - + + ```prisma model User { @@ -3214,10 +3081,10 @@ model User { } ``` - + -### now() +### `now()` Set a timestamp of the time when a record is created. @@ -3246,8 +3113,8 @@ Set a timestamp of the time when a record is created. ##### Set current timestamp value when a record is created -, ]}> - + + ```prisma model User { @@ -3256,8 +3123,8 @@ model User { } ``` - - + + ```prisma model User { @@ -3266,10 +3133,10 @@ model User { } ``` - + -### dbgenerated() +### `dbgenerated()` Represents **default values** that cannot be expressed in the Prisma schema (such as `random()`). @@ -3290,38 +3157,24 @@ Represents **default values** that cannot be expressed in the Prisma schema (suc ##### Set default value for `Unsupported` type -]}> - - ```prisma circle Unsupported("circle")? @default(dbgenerated("'<(10,4),11>'::circle")) ``` - - - - - ##### Override default value behavior for supported types -]}> - - You can also use `dbgenerated()` to set the default value for supported types. For example, in PostgreSQL you can generate UUIDs at the database level rather than rely on Prisma ORM's `uuid()`: ```prisma highlight=2;add|3;delete model User { + //add-next-line id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid + //delete-next-line id String @id @default(uuid()) @db.Uuid test String? } ``` - - - - - **Note**: [`gen_random_uuid()` is a PostgreSQL function](https://www.postgresql.org/docs/13/functions-uuid.html). To use it in PostgreSQL versions 12.13 and earlier, you must enable the `pgcrypto` extension.

In Prisma ORM versions 4.5.0 and later, you can declare the `pgcrypto` extension in your Prisma schema with the [`postgresqlExtensions` preview feature](/orm/prisma-schema/postgresql-extensions). @@ -3330,19 +3183,19 @@ model User { ## Attribute argument types -### FieldReference[] +### `FieldReference[]` An array of [field](#model-fields) names: `[id]`, `[firstName, lastName]` -### String +### `String` A variable length text in double quotes: `""`, `"Hello World"`, `"Alice"` -### Expression +### `Expression` An expression that can be evaluated by Prisma ORM: `42.0`, `""`, `Bob`, `now()`, `cuid()` -## enum +## `enum` @@ -3368,8 +3221,8 @@ Defines an [enum](/orm/prisma-schema/data-model/models#defining-enums) . #### Specify an `enum` with two possible values -, ]}> - + + ```prisma enum Role { @@ -3383,8 +3236,8 @@ model User { } ``` - - + + ```prisma enum Role { @@ -3398,13 +3251,13 @@ model User { } ``` - + #### Specify an `enum` with two possible values and set a default value -, ]}> - + + ```prisma enum Role { @@ -3418,8 +3271,8 @@ model User { } ``` - - + + ```prisma enum Role { @@ -3433,10 +3286,10 @@ model User { } ``` - + -## type +## `type` diff --git a/content/200-orm/500-reference/200-prisma-cli-reference.mdx b/content/200-orm/500-reference/200-prisma-cli-reference.mdx index 282b69ab7a..ea0ad721b2 100644 --- a/content/200-orm/500-reference/200-prisma-cli-reference.mdx +++ b/content/200-orm/500-reference/200-prisma-cli-reference.mdx @@ -1,8 +1,8 @@ --- title: 'Prisma CLI reference' -navTitle: 'Prisma CLI' metaTitle: 'Prisma CLI' metaDescription: 'This page gives an overview of all available Prisma CLI commands, explains their options and shows numerous usage examples.' +sidebar_label: 'Prisma CLI' tocDepth: 3 --- @@ -14,7 +14,7 @@ This document describes the Prisma CLI commands, arguments, and options. ## Commands -### version (-v) +### `version` (`-v`) The `version` command outputs information about your current `prisma` version, platform, and engine binaries. @@ -58,7 +58,7 @@ Studio : 0.365.0 -##### Output version information (-v) +##### Output version information (`-v`) @@ -120,7 +120,7 @@ Environment variables loaded from .env -### init +### `init` Bootstraps a fresh Prisma ORM project within the current directory. @@ -312,7 +312,7 @@ A file to define environment variables for your project: DATABASE_URL="mysql://user:password@localhost:3306/mydb" ``` -### generate +### `generate` The `generate` command generates assets like Prisma Client based on the [`generator`](/orm/prisma-schema/overview/generators) and [`data model`](/orm/prisma-schema/data-model/models) blocks defined in your `prisma/schema.prisma` file. @@ -435,7 +435,7 @@ prisma generate --generator client --generator zod_schemas The `prisma-client-js` generator creates a customized client for working with your database within the `./node_modules/.prisma/client` directory by default - you can [customize the output folder](/orm/prisma-client/setup-and-configuration/generating-prisma-client#using-a-custom-output-path). -### introspect +### `introspect` @@ -444,7 +444,7 @@ From Prisma ORM 3.0.0 onwards, the `prisma introspect` command is deprecated and -### validate +### `validate` Validates the [Prisma Schema Language](/orm/prisma-schema) of the Prisma schema file. @@ -510,7 +510,7 @@ Prisma CLI Version : 4.5.0 -### format +### `format` Formats the Prisma schema file, which includes validating, formatting, and persisting the schema. @@ -576,7 +576,7 @@ Prisma CLI Version : 4.5.0 -### debug +### `debug` Prints information for debugging and bug reports. @@ -699,9 +699,9 @@ If you're using an older version of Prisma, you can use this command by running: npx prisma@latest debug ``` -## db +## `db` -### db pull +### `db pull` The `db pull` command connects to your database and adds Prisma models to your Prisma schema that reflect the current database schema. @@ -849,7 +849,7 @@ model Profile { -### db push +### `db push` The `db push` command pushes the state of your Prisma schema file to the database without using migrations. It creates the database if the database does not exist. @@ -908,7 +908,7 @@ Push the schema with a custom schema location: prisma db push --schema=/tmp/schema.prisma ``` -### db seed +### `db seed` `db seed` changed from Preview to Generally Available (GA) in 3.0.1. @@ -929,7 +929,7 @@ The `--` argument/ [delimiter](https://pubs.opengroup.org/onlinepubs/9699919799/ prisma db seed ``` -### db execute +### `db execute` @@ -1014,7 +1014,7 @@ Instead of `migrate dev` and related commands, [`db push`](/orm/prisma-migrate/w -### migrate dev +### `migrate dev` **For use in development environments only, requires shadow database** @@ -1074,7 +1074,7 @@ Apply all migrations and create a new migration if there are schema changes, but prisma migrate dev --create-only ``` -### migrate reset +### `migrate reset` **For use in development environments only** @@ -1112,7 +1112,7 @@ This command is not supported on [MongoDB](/orm/overview/databases/mongodb). Use prisma migrate reset ``` -### migrate deploy +### `migrate deploy` The `migrate deploy` command applies all pending migrations, and creates the database if it does not exist. Primarily used in non-development environments. This command: @@ -1144,7 +1144,7 @@ This command is not supported on [MongoDB](/orm/overview/databases/mongodb). Use prisma migrate deploy ``` -### migrate resolve +### `migrate resolve` The `migrate resolve` command allows you to solve migration history issues in production by marking a failed migration as already applied (supports baselining) or rolled back. @@ -1182,7 +1182,7 @@ prisma migrate resolve --applied 20201231000000_add_users_table prisma migrate resolve --rolled-back 20201231000000_add_users_table ``` -### migrate status +### `migrate status` The `prisma migrate status` command looks up the migrations in `./prisma/migrations/*` folder and the entries in the `_prisma_migrations` table and compiles information about the state of the migrations in your database. @@ -1235,7 +1235,7 @@ In versions 4.3.0 and later, `prisma migrate status` exits with exit code 1 in t prisma migrate status ``` -### migrate diff +### `migrate diff` @@ -1347,7 +1347,7 @@ Other options: ## Prisma Data Platform -### platform ([Early Access](/platform/maturity-levels#early-access)) +### `platform` ([Early Access](/platform/maturity-levels#early-access)) The `platform` command provides access to the Prisma Data Platform through the Prisma CLI starting in version `5.10.0` or later. @@ -1393,7 +1393,7 @@ You can find the complete list of available commands with the arguments [here](/ ## Studio -### studio +### `studio` The `studio` command allows you to interact with and manage your data interactively. It does this by starting a local web server with a web app configured with your project's data schema and records. @@ -1452,9 +1452,9 @@ prisma studio --browser firefox prisma studio --browser none ``` -## package.json entry options +## `package.json` entry options -### schema +### `schema` The path to the desired `schema.prisma` file can be specified with the `prisma.schema` entry in the `package.json` file. The path defines the file the Prisma CLI should use when you run any of the CLI commands. Both absolute and relative paths are supported. @@ -1470,7 +1470,7 @@ The path to the desired `schema.prisma` file can be specified with the `prisma.s This is available from version 2.7.0 and later. -### seed +### `seed` The command used to populate the datasource is specified in the `prisma.seed` entry in the `package.json` file. It is used when `prisma db seed` is invoked or triggered. diff --git a/content/200-orm/500-reference/250-error-reference.mdx b/content/200-orm/500-reference/250-error-reference.mdx index ff968a5a33..8fd5b53e20 100644 --- a/content/200-orm/500-reference/250-error-reference.mdx +++ b/content/200-orm/500-reference/250-error-reference.mdx @@ -1,8 +1,8 @@ --- title: 'Error message reference' -navTitle: 'Errors' metaTitle: 'Errors' metaDescription: 'Prisma Client, Migrate, Introspection error message reference' +sidebar_label: 'Errors' tocDepth: 3 --- @@ -16,7 +16,7 @@ For more information about how to work with exceptions and error codes, see [Han Prisma Client throws different kinds of errors. The following lists the exception types, and their documented data fields: -### PrismaClientKnownRequestError +### `PrismaClientKnownRequestError` Prisma Client throws a `PrismaClientKnownRequestError` exception if the query engine returns a known error related to the request - for example, a unique constraint violation. @@ -27,7 +27,7 @@ Prisma Client throws a `PrismaClientKnownRequestError` exception if the query en | `message` | Error message associated with [error code](#error-codes). | | `clientVersion` | Version of Prisma Client (for example, `2.19.0`) | -### PrismaClientUnknownRequestError +### `PrismaClientUnknownRequestError` Prisma Client throws a `PrismaClientUnknownRequestError` exception if the query engine returns an error related to a request that does not have an error code. @@ -36,7 +36,7 @@ Prisma Client throws a `PrismaClientUnknownRequestError` exception if the query | `message` | Error message associated with [error code](#error-codes). | | `clientVersion` | Version of Prisma Client (for example, `2.19.0`) | -### PrismaClientRustPanicError +### `PrismaClientRustPanicError` Prisma Client throws a `PrismaClientRustPanicError` exception if the underlying engine crashes and exits with a non-zero exit code. In this case, Prisma Client or the whole Node process must be restarted. @@ -45,7 +45,7 @@ Prisma Client throws a `PrismaClientRustPanicError` exception if the underlying | `message` | Error message associated with [error code](#error-codes). | | `clientVersion` | Version of Prisma Client (for example, `2.19.0`) | -### PrismaClientInitializationError +### `PrismaClientInitializationError` Prisma Client throws a `PrismaClientInitializationError` exception if something goes wrong when the query engine is started and the connection to the database is created. This happens either: @@ -66,7 +66,7 @@ Errors that can occur include: | `message` | Error message associated with [error code](#error-codes). | | `clientVersion` | Version of Prisma Client (for example, `2.19.0`) | -### PrismaClientValidationError +### `PrismaClientValidationError` Prisma Client throws a `PrismaClientValidationError` exception if validation fails - for example: @@ -82,47 +82,47 @@ Prisma Client throws a `PrismaClientValidationError` exception if validation fai ### Common -#### P1000 +#### `P1000` "Authentication failed against database server at `{database_host}`, the provided database credentials for `{database_user}` are not valid. Please make sure to provide valid database credentials for the database server at `{database_host}`." -#### P1001 +#### `P1001` "Can't reach database server at `{database_host}`:`{database_port}` Please make sure your database server is running at `{database_host}`:`{database_port}`." -#### P1002 +#### `P1002` "The database server at `{database_host}`:`{database_port}` was reached but timed out. Please try again. Please make sure your database server is running at `{database_host}`:`{database_port}`. " -#### P1003 +#### `P1003` -"Database {database_file_name} does not exist at {database_file_path}" +"Database \{database_file_name} does not exist at \{database_file_path}" "Database `{database_name}.{database_schema_name}` does not exist on the database server at `{database_host}:{database_port}`." "Database `{database_name}` does not exist on the database server at `{database_host}:{database_port}`." -#### P1008 +#### `P1008` "Operations timed out after `{time}`" -#### P1009 +#### `P1009` "Database `{database_name}` already exists on the database server at `{database_host}:{database_port}`" -#### P1010 +#### `P1010` "User `{database_user}` was denied access on the database `{database_name}`" -#### P1011 +#### `P1011` -"Error opening a TLS connection: {message}" +"Error opening a TLS connection: \{message}" -#### P1012 +#### `P1012` **Note:** If you get error code P1012 after you upgrade Prisma ORM to version 4.0.0 or later, see the [version 4.0.0 upgrade guide](/orm/more/upgrade-guides/upgrading-versions/upgrading-to-prisma-4#upgrade-your-prisma-schema). A schema that was valid before version 4.0.0 might be invalid in version 4.0.0 and later. The upgrade guide explains how to update your schema to make it valid. -"{full_error}" +"\{full_error}" Possible P1012 error messages: @@ -158,179 +158,179 @@ Possible P1012 error messages: - "Expected a {} value, but failed while parsing `{}`: {}." - "Error validating model `{}`: {}" - "Error validating field `{}` in model `{}`: {}" -- "Error validating datasource `{datasource}`: {message}"" +- "Error validating datasource `{datasource}`: \{message}" - "Error validating enum `{}`: {}" - "Error validating: {}" -#### P1013 +#### `P1013` -"The provided database string is invalid. {details}" +"The provided database string is invalid. \{details}" -#### P1014 +#### `P1014` -"The underlying {kind} for model `{model}` does not exist." +"The underlying \{kind} for model `{model}` does not exist." -#### P1015 +#### `P1015` -"Your Prisma schema is using features that are not supported for the version of the database.
Database version: {database_version}
Errors:
{errors}" +"Your Prisma schema is using features that are not supported for the version of the database.
Database version: \{database_version}
Errors:
\{errors}" -#### P1016 +#### `P1016` "Your raw query had an incorrect number of parameters. Expected: `{expected}`, actual: `{actual}`." -#### P1017 +#### `P1017` "Server has closed the connection." ### Prisma Client (Query Engine) -#### P2000 +#### `P2000` -"The provided value for the column is too long for the column's type. Column: {column_name}" +"The provided value for the column is too long for the column's type. Column: \{column_name}" -#### P2001 +#### `P2001` "The record searched for in the where condition (`{model_name}.{argument_name} = {argument_value}`) does not exist" -#### P2002 +#### `P2002` -"Unique constraint failed on the {constraint}" +"Unique constraint failed on the \{constraint}" -#### P2003 +#### `P2003` "Foreign key constraint failed on the field: `{field_name}`" -#### P2004 +#### `P2004` "A constraint failed on the database: `{database_error}`" -#### P2005 +#### `P2005` "The value `{field_value}` stored in the database for the field `{field_name}` is invalid for the field's type" -#### P2006 +#### `P2006` "The provided value `{field_value}` for `{model_name}` field `{field_name}` is not valid" -#### P2007 +#### `P2007` "Data validation error `{database_error}`" -#### P2008 +#### `P2008` "Failed to parse the query `{query_parsing_error}` at `{query_position}`" -#### P2009 +#### `P2009` "Failed to validate the query: `{query_validation_error}` at `{query_position}`" -#### P2010 +#### `P2010` "Raw query failed. Code: `{code}`. Message: `{message}`" -#### P2011 +#### `P2011` -"Null constraint violation on the {constraint}" +"Null constraint violation on the \{constraint}" -#### P2012 +#### `P2012` "Missing a required value at `{path}`" -#### P2013 +#### `P2013` "Missing the required argument `{argument_name}` for field `{field_name}` on `{object_name}`." -#### P2014 +#### `P2014` -"The change you are trying to make would violate the required relation '{relation_name}' between the `{model_a_name}` and `{model_b_name}` models." +"The change you are trying to make would violate the required relation '\{relation_name}' between the `{model_a_name}` and `{model_b_name}` models." -#### P2015 +#### `P2015` -"A related record could not be found. {details}" +"A related record could not be found. \{details}" -#### P2016 +#### `P2016` -"Query interpretation error. {details}" +"Query interpretation error. \{details}" -#### P2017 +#### `P2017` "The records for relation `{relation_name}` between the `{parent_name}` and `{child_name}` models are not connected." -#### P2018 +#### `P2018` -"The required connected records were not found. {details}" +"The required connected records were not found. \{details}" -#### P2019 +#### `P2019` -"Input error. {details}" +"Input error. \{details}" -#### P2020 +#### `P2020` -"Value out of range for the type. {details}" +"Value out of range for the type. \{details}" -#### P2021 +#### `P2021` "The table `{table}` does not exist in the current database." -#### P2022 +#### `P2022` "The column `{column}` does not exist in the current database." -#### P2023 +#### `P2023` -"Inconsistent column data: {message}" +"Inconsistent column data: \{message}" -#### P2024 +#### `P2024` -"Timed out fetching a new connection from the connection pool. (More info: [http://pris.ly/d/connection-pool](http://pris.ly/d/connection-pool) (Current connection pool timeout: {timeout}, connection limit: {connection_limit})" +"Timed out fetching a new connection from the connection pool. (More info: [http://pris.ly/d/connection-pool](http://pris.ly/d/connection-pool) (Current connection pool timeout: \{timeout}, connection limit: \{connection_limit})" -#### P2025 +#### `P2025` -"An operation failed because it depends on one or more records that were required but not found. {cause}" +"An operation failed because it depends on one or more records that were required but not found. \{cause}" -#### P2026 +#### `P2026` -"The current database provider doesn't support a feature that the query used: {feature}" +"The current database provider doesn't support a feature that the query used: \{feature}" -#### P2027 +#### `P2027` -"Multiple errors occurred on the database during query execution: {errors}" +"Multiple errors occurred on the database during query execution: \{errors}" -#### P2028 +#### `P2028` -"Transaction API error: {error}" +"Transaction API error: \{error}" -#### P2029 +#### `P2029` -"Query parameter limit exceeded error: {message}" +"Query parameter limit exceeded error: \{message}" -#### P2030 +#### `P2030` "Cannot find a fulltext index to use for the search, try adding a @@fulltext([Fields...]) to your schema" -#### P2031 +#### `P2031` "Prisma needs to perform transactions, which requires your MongoDB server to be run as a replica set. See details: [https://pris.ly/d/mongodb-replica-set](https://pris.ly/d/mongodb-replica-set)" -#### P2033 +#### `P2033` "A number used in the query does not fit into a 64 bit signed integer. Consider using `BigInt` as field type if you're trying to store large integers" -#### P2034 +#### `P2034` "Transaction failed due to a write conflict or a deadlock. Please retry your transaction" -#### P2035 +#### `P2035` -"Assertion violation on the database: {database_error}" +"Assertion violation on the database: \{database_error}" -#### P2036 +#### `P2036` -"Error in external connector (id {id})" +"Error in external connector (id \{id})" -#### P2037 +#### `P2037` -"Too many database connections opened: {message}" +"Too many database connections opened: \{message}" ### Prisma Migrate (Schema Engine) @@ -340,113 +340,113 @@ The Schema Engine was previously called Migration Engine. This change was introd
-#### P3000 +#### `P3000` -"Failed to create database: {database_error}" +"Failed to create database: \{database_error}" -#### P3001 +#### `P3001` -"Migration possible with destructive changes and possible data loss: {migration_engine_destructive_details}" +"Migration possible with destructive changes and possible data loss: \{migration_engine_destructive_details}" -#### P3002 +#### `P3002` -"The attempted migration was rolled back: {database_error}" +"The attempted migration was rolled back: \{database_error}" -#### P3003 +#### `P3003` "The format of migrations changed, the saved migrations are no longer valid. To solve this problem, please follow the steps at: [https://pris.ly/d/migrate](https://pris.ly/d/migrate)" -#### P3004 +#### `P3004` "The `{database_name}` database is a system database, it should not be altered with prisma migrate. Please connect to another database." -#### P3005 +#### `P3005` "The database schema is not empty. Read more about how to baseline an existing production database: [https://pris.ly/d/migrate-baseline](https://pris.ly/d/migrate-baseline)" -#### P3006 +#### `P3006` -"Migration `{migration_name}` failed to apply cleanly to the shadow database.
{error_code}Error:
{inner_error}" +"Migration `{migration_name}` failed to apply cleanly to the shadow database.
\{error_code}Error:
\{inner_error}" -#### P3007 +#### `P3007` -"Some of the requested preview features are not yet allowed in schema engine. Please remove them from your data model before using migrations. (blocked: {list_of_blocked_features})" +"Some of the requested preview features are not yet allowed in schema engine. Please remove them from your data model before using migrations. (blocked: \{list_of_blocked_features})" -#### P3008 +#### `P3008` "The migration `{migration_name}` is already recorded as applied in the database." -#### P3009 +#### `P3009` -"migrate found failed migrations in the target database, new migrations will not be applied. Read more about how to resolve migration issues in a production database: [https://pris.ly/d/migrate-resolve](https://pris.ly/d/migrate-resolve)
{details}" +"migrate found failed migrations in the target database, new migrations will not be applied. Read more about how to resolve migration issues in a production database: [https://pris.ly/d/migrate-resolve](https://pris.ly/d/migrate-resolve)
\{details}" -#### P3010 +#### `P3010` "The name of the migration is too long. It must not be longer than 200 characters (bytes)." -#### P3011 +#### `P3011` "Migration `{migration_name}` cannot be rolled back because it was never applied to the database. Hint: did you pass in the whole migration name? (example: \"20201207184859_initial_migration\")" -#### P3012 +#### `P3012` "Migration `{migration_name}` cannot be rolled back because it is not in a failed state." -#### P3013 +#### `P3013` "Datasource provider arrays are no longer supported in migrate. Please change your datasource to use a single provider. Read more at [https://pris.ly/multi-provider-deprecation](https://pris.ly/multi-provider-deprecation)" -#### P3014 +#### `P3014` "Prisma Migrate could not create the shadow database. Please make sure the database user has permission to create databases. Read more about the shadow database (and workarounds) at [https://pris.ly/d/migrate-shadow](https://pris.ly/d/migrate-shadow). -Original error: {error_code}
{inner_error}" +Original error: \{error_code}
\{inner_error}" -#### P3015 +#### `P3015` -"Could not find the migration file at {migration_file_path}. Please delete the directory or restore the migration file." +"Could not find the migration file at \{migration_file_path}. Please delete the directory or restore the migration file." -#### P3016 +#### `P3016` -"The fallback method for database resets failed, meaning Migrate could not clean up the database entirely. Original error: {error_code}
{inner_error}" +"The fallback method for database resets failed, meaning Migrate could not clean up the database entirely. Original error: \{error_code}
\{inner_error}" -#### P3017 +#### `P3017` -"The migration {migration_name} could not be found. Please make sure that the migration exists, and that you included the whole name of the directory. (example: \"20201207184859_initial_migration\")" +"The migration \{migration_name} could not be found. Please make sure that the migration exists, and that you included the whole name of the directory. (example: \"20201207184859_initial_migration\")" -#### P3018 +#### `P3018` -"A migration failed to apply. New migrations cannot be applied before the error is recovered from. Read more about how to resolve migration issues in a production database: https://pris.ly/d/migrate-resolve

Migration name: {migration_name}

Database error code: {database_error_code}

Database error:
{database_error} " +"A migration failed to apply. New migrations cannot be applied before the error is recovered from. Read more about how to resolve migration issues in a production database: https://pris.ly/d/migrate-resolve

Migration name: \{migration_name}

Database error code: \{database_error_code}

Database error:
\{database_error} " -#### P3019 +#### `P3019` "The datasource provider `{provider}` specified in your schema does not match the one specified in the migration_lock.toml, `{expected_provider}`. Please remove your current migration directory and start a new migration history with prisma migrate dev. Read more: [https://pris.ly/d/migrate-provider-switch](https://pris.ly/d/migrate-provider-switch)" -#### P3020 +#### `P3020` "The automatic creation of shadow databases is disabled on Azure SQL. Please set up a shadow database using the `shadowDatabaseUrl` datasource attribute.
Read the docs page for more details: [https://pris.ly/d/migrate-shadow](https://pris.ly/d/migrate-shadow)" -#### P3021 +#### `P3021` "Foreign keys cannot be created on this database. Learn more how to handle this: [https://pris.ly/d/migrate-no-foreign-keys](https://pris.ly/d/migrate-no-foreign-keys)" -#### P3022 +#### `P3022` "Direct execution of DDL (Data Definition Language) SQL statements is disabled on this database. Please read more here about how to handle this: [https://pris.ly/d/migrate-no-direct-ddl](https://pris.ly/d/migrate-no-direct-ddl)" -### prisma db pull +### `prisma db pull` -#### P4000 +#### `P4000` -"Introspection operation failed to produce a schema file: {introspection_error}" +"Introspection operation failed to produce a schema file: \{introspection_error}" -#### P4001 +#### `P4001` "The introspected database was empty." -#### P4002 +#### `P4002` -"The schema of the introspected database was inconsistent: {explanation}" +"The schema of the introspected database was inconsistent: \{explanation}" @@ -454,43 +454,43 @@ Original error: {error_code}
{inner_error}" Prisma Accelerate-related errors start with `P6xxx`. -#### P6000 (ServerError) +#### `P6000` (`ServerError`) Generic error to catch all other errors. -#### P6001 (InvalidDataSource) +#### `P6001` (`InvalidDataSource`) The URL is malformed; for instance, it does not use the `prisma://` protocol. -#### P6002 (Unauthorized) +#### `P6002` (`Unauthorized`) The API Key in the connection string is invalid. -#### P6003 (PlanLimitReached) +#### `P6003` (`PlanLimitReached`) The included usage of the current plan has been exceeded. This can only occur on the [free plan](https://www.prisma.io/pricing). -#### P6004 (QueryTimeout) +#### `P6004` (`QueryTimeout`) The global timeout of Accelerate has been exceeded. You can find the limit [here](/accelerate/limitations#query-timeout-limit). > Also see the [troubleshooting guide](/accelerate/troubleshoot#p6004-querytimeout) for more information. -#### P6005 (InvalidParameters) +#### `P6005` (`InvalidParameters`) The user supplied invalid parameters. Currently only relevant for transaction methods. For example, setting a timeout that is too high. You can find the limit [here](/accelerate/limitations#interactive-transactions-query-timeout-limit). -#### P6006 (VersionNotSupported) +#### `P6006` (`VersionNotSupported`) The chosen Prisma version is not compatible with Accelerate. This may occur when a user uses an unstable development version that we occasionally prune. -#### P6008 (ConnectionError|EngineStartError) +#### `P6008` (`ConnectionError|EngineStartError`) The engine failed to start. For example, it couldn't establish a connection to the database. > Also see the [troubleshooting guide](/accelerate/troubleshoot#p6008-connectionerrorenginestarterror) for more information. -#### P6009 (ResponseSizeLimitExceeded) +#### `P6009` (`ResponseSizeLimitExceeded`) The global response size limit of Accelerate has been exceeded. You can find the limit [here](/accelerate/limitations#response-size-limit). @@ -498,35 +498,35 @@ The global response size limit of Accelerate has been exceeded. You can find the ### Prisma Pulse -Prisma Pulse-related errors start with P61xx. +Prisma Pulse-related errors start with `P61xx`. -#### P6100 (ServerError) – HTTP Status 500 +#### `P6100` (`ServerError`) – HTTP Status `500` An unexpected server error occurred. This can happen due to a technical issue within the Prisma Pulse or its infrastructure. For any incidents related to Prisma Pulse, you can refer to our status page [here](https://www.prisma-status.com/) and reach out to our support team through one of our available [channels](/platform/support) to report your issue. -#### P6101 (DatasourceError) – HTTP Status 400 +#### `P6101` (`DatasourceError`) – HTTP Status `400` Reasons: 1. The datasource is not reachable by Prisma Pulse. The Console will validate the connection when enabling Pulse to reduce the likelihood of this error. However, the datasource may become unavailable after the configuration step, resulting in this error. 2. The datasource is reachable, but did not meet the requirements for Prisma Pulse. The Console will validate the configuration when enabling Pulse to reduce the likelihood of this error. However, the datasource may change after the configuration step, resulting in this error. -#### P6102 (Unauthorized) – HTTP Status 400 +#### `P6102` (`Unauthorized`) – HTTP Status `400` The API key is invalid. -#### P6103 (ProjectDisabledError) – HTTP Status 400 +#### `P6103` (`ProjectDisabledError`) – HTTP Status `400` Prisma Pulse is not enabled for the configured API key. -#### P6104 (AccountHoldError) – HTTP Status 400 +#### `P6104` (`AccountHoldError`) – HTTP Status `400` Your Prisma Data Platform account has been blocked, potentially due to exceeding the usage limit included in your current plan. Please review the error message for further information. If you require further assistance, please get in touch with us via one of our support [channels](/platform/support). -#### P6105 (VersionNotSupported) – HTTP Status 400 +#### `P6105` (`VersionNotSupported`) – HTTP Status `400` The Prisma version of the project is not compatible with Prisma Pulse. diff --git a/content/200-orm/500-reference/300-environment-variables-reference.mdx b/content/200-orm/500-reference/300-environment-variables-reference.mdx index 5d674bfa0c..407c6bf4fe 100644 --- a/content/200-orm/500-reference/300-environment-variables-reference.mdx +++ b/content/200-orm/500-reference/300-environment-variables-reference.mdx @@ -1,8 +1,8 @@ --- title: 'Environment variables reference' -navTitle: 'Environment variables' metaTitle: 'Prisma environment variables' metaDescription: 'This page gives an overview of all environment variables available for use.' +sidebar_label: 'Environment variables' tocDepth: 3 --- @@ -14,7 +14,7 @@ This document describes different environment variables and their use cases. ## Prisma Client -### DEBUG +### `DEBUG` `DEBUG` is used to enable debugging output in Prisma Client. @@ -27,7 +27,7 @@ export DEBUG="prisma:client" See [Debugging](/orm/prisma-client/debugging-and-troubleshooting/debugging) for more information. -### NO_COLOR +### `NO_COLOR` `NO_COLOR` if [truthy](https://developer.mozilla.org/en-US/docs/Glossary/Truthy) will activate the `colorless` setting for error formatting and strip colors from error messages. @@ -35,7 +35,7 @@ See [Formatting via environment variables](/orm/prisma-client/setup-and-configur ## Prisma Studio -### BROWSER +### `BROWSER` `BROWSER` is for Prisma Studio to force which browser it should be open in, if not set it will open in the default browser. @@ -53,27 +53,27 @@ See [Studio](/orm/reference/prisma-cli-reference#studio) documentation for more ## Prisma CLI -### PRISMA_HIDE_PREVIEW_FLAG_WARNINGS +### `PRISMA_HIDE_PREVIEW_FLAG_WARNINGS` `PRISMA_HIDE_PREVIEW_FLAG_WARNINGS` hides the warning message that states that a preview feature flag can be removed. It is a truthy value. -### PRISMA_HIDE_UPDATE_MESSAGE +### `PRISMA_HIDE_UPDATE_MESSAGE` `PRISMA_HIDE_UPDATE_MESSAGE` is used to hide the update notification message that is shown when a newer Prisma CLI version is available. It's a truthy value. -### PRISMA_GENERATE_SKIP_AUTOINSTALL +### `PRISMA_GENERATE_SKIP_AUTOINSTALL` `PRISMA_GENERATE_SKIP_AUTOINSTALL` can be set to a truthy value to skip the auto-install of `prisma` CLI and `@prisma/client` dependencies (if they are missing), if the `prisma-client-js` generator is defined in the Prisma Schema, when using the `prisma generate` command. -### PRISMA_SKIP_POSTINSTALL_GENERATE +### `PRISMA_SKIP_POSTINSTALL_GENERATE` `PRISMA_SKIP_POSTINSTALL_GENERATE` can be set to a truthy value to skip the auto-generation of Prisma Client when its `postinstall` hook is triggered by a package manager. The `postinstall` hook of the `@prisma/client` package is triggered when the package is installed, or its version is updated. -### PRISMA_DISABLE_WARNINGS +### `PRISMA_DISABLE_WARNINGS` Disables all CLI warnings generated by `logger.warn`. -### PRISMA_GENERATE_NO_ENGINE +### `PRISMA_GENERATE_NO_ENGINE` @@ -83,7 +83,7 @@ This environment variable is available since version `5.2.0` `PRISMA_GENERATE_NO_ENGINE` can be set to a truthy value to generate a Prisma Client without an included [query engine](/orm/more/under-the-hood/engines) in order to reduce deployed application size when paired with [Prisma Accelerate](/accelerate). -### PRISMA_SCHEMA_DISABLE_ADVISORY_LOCK +### `PRISMA_SCHEMA_DISABLE_ADVISORY_LOCK` @@ -97,7 +97,7 @@ This environment variable is available since version `5.3.0` The Prisma CLI supports custom HTTP(S) proxies to download the Prisma engines. These can be helpful to use when working behind a corporate firewall. See [Using a HTTP proxy for the CLI](/orm/reference/prisma-cli-reference#using-a-http-proxy-for-the-cli) for more information. -### NO_PROXY +### `NO_PROXY` `NO_PROXY` is a comma-separated list of hostnames or IP addresses that do not require a proxy. @@ -105,7 +105,7 @@ The Prisma CLI supports custom HTTP(S) proxies to download the Prisma engines. T NO_PROXY=myhostname.com,10.11.12.0/16,172.30.0.0/16 ``` -### HTTP_PROXY +### `HTTP_PROXY` `HTTP_PROXY` is set with the hostname or IP address of a proxy server. @@ -113,7 +113,7 @@ NO_PROXY=myhostname.com,10.11.12.0/16,172.30.0.0/16 HTTP_PROXY=http://proxy.example.com ``` -### HTTPS_PROXY +### `HTTPS_PROXY` `HTTPS_PROXY` is set with the hostname or IP address of a proxy server. @@ -125,7 +125,7 @@ HTTPS_PROXY=https://proxy.example.com ### Configuring Query Engine Type -#### PRISMA_CLI_QUERY_ENGINE_TYPE +#### `PRISMA_CLI_QUERY_ENGINE_TYPE` `PRISMA_CLI_QUERY_ENGINE_TYPE` is used to [define the query engine type Prisma CLI downloads and uses](/orm/more/under-the-hood/engines#configuring-the-query-engine). Defaults to `library`, but can be set to `binary`: @@ -133,7 +133,7 @@ HTTPS_PROXY=https://proxy.example.com PRISMA_CLI_QUERY_ENGINE_TYPE=binary ``` -#### PRISMA_CLIENT_ENGINE_TYPE +#### `PRISMA_CLIENT_ENGINE_TYPE` `PRISMA_CLIENT_ENGINE_TYPE` is used to [define the query engine type Prisma Client downloads and uses](/orm/more/under-the-hood/engines#configuring-the-query-engine). Defaults to `library`, but can be set to `binary`: @@ -147,7 +147,7 @@ It is the environment variable equivalent for the [`engineType` property of the ### Downloading Engines -#### PRISMA_ENGINES_MIRROR +#### `PRISMA_ENGINES_MIRROR` `PRISMA_ENGINES_MIRROR` can be used to specify a custom CDN (or server) endpoint to download the engines files for the CLI/Client. The default value is `https://binaries.prisma.sh`, where Prisma hosts the engine files. @@ -159,7 +159,7 @@ See [Prisma engines](/orm/more/under-the-hood/engines#hosting-engines) for a con Note: This environment variable used to be available as `PRISMA_BINARIES_MIRROR`, which was deprecated in Prisma ORM 3.0.1. It is discouraged to use anymore and will be removed in the future. -#### PRISMA_ENGINES_CHECKSUM_IGNORE_MISSING +#### `PRISMA_ENGINES_CHECKSUM_IGNORE_MISSING` @@ -180,7 +180,7 @@ Note: we might change the overall download behavior in a future release in a way By default, all engine files are downloaded when you install Prisma CLI, copied when generating Prisma Client, and put into known locations. There are however situations where you may want to use a custom engine file from custom locations: -#### PRISMA_QUERY_ENGINE_BINARY +#### `PRISMA_QUERY_ENGINE_BINARY` `PRISMA_QUERY_ENGINE_BINARY` is used to set a custom location for your own query engine binary. @@ -194,7 +194,7 @@ For Prisma Client, on build time (during `prisma generate`), it defines where th Note: This can only have an effect if the engine type of CLI or Client are set to `binary`. If the engine type is `library` (the default), use PRISMA_QUERY_ENGINE_LIBARY instead. -#### PRISMA_QUERY_ENGINE_LIBRARY +#### `PRISMA_QUERY_ENGINE_LIBRARY` `PRISMA_QUERY_ENGINE_LIBRARY` is used to set a custom location for your own query engine library. @@ -208,7 +208,7 @@ For Prisma Client, on build time (during `prisma generate`), it defines where th Note: This can only have an effect if the engine type of CLI or Client are set to `library` (the default) -#### PRISMA_SCHEMA_ENGINE_BINARY +#### `PRISMA_SCHEMA_ENGINE_BINARY` `PRISMA_SCHEMA_ENGINE_BINARY` is used to set a custom location for your Schema engine binary. @@ -216,7 +216,7 @@ Note: This can only have an effect if the engine type of CLI or Client are set t PRISMA_SCHEMA_ENGINE_BINARY=custom/my-schema-engine-unix ``` -#### PRISMA_MIGRATION_ENGINE_BINARY +#### `PRISMA_MIGRATION_ENGINE_BINARY` @@ -230,7 +230,7 @@ PRISMA_SCHEMA_ENGINE_BINARY=custom/my-schema-engine-unix PRISMA_MIGRATION_ENGINE_BINARY=custom/my-migration-engine-unix ``` -#### PRISMA_INTROSPECTION_ENGINE_BINARY +#### `PRISMA_INTROSPECTION_ENGINE_BINARY` `PRISMA_INTROSPECTION_ENGINE_BINARY` is used to set a custom location for your own introspection engine binary. @@ -244,9 +244,9 @@ The Introspection Engine is served by the Migration Engine from [4.9.0](https:// -#### PRISMA_FMT_BINARY +#### `PRISMA_FMT_BINARY` - + This functionality has been removed in Prisma CLI version 4.10.0. It only works in earlier versions. @@ -266,7 +266,7 @@ The `PRISMA_FMT_BINARY` variable is used in versions [4.2.0](https://github.com/ ### CLI Binary Targets -#### PRISMA_CLI_BINARY_TARGETS +#### `PRISMA_CLI_BINARY_TARGETS` `PRISMA_CLI_BINARY_TARGETS` can be used to specify one or more binary targets that Prisma CLI will download during installation (so it must be provided during `npm install` of Prisma CLI and does not affect runtime of Prisma CLI or Prisma Client). diff --git a/content/200-orm/500-reference/350-database-features.mdx b/content/200-orm/500-reference/350-database-features.mdx index 1b2b3a4d58..8ca4514a45 100644 --- a/content/200-orm/500-reference/350-database-features.mdx +++ b/content/200-orm/500-reference/350-database-features.mdx @@ -70,26 +70,6 @@ Algorithm specified via `USING`: - \* Only available if natively supported by database. - † Available with the PostgreSQL connector only in Prisma ORM versions `4.0.0` and later. - - ### Misc | Feature | PostgreSQL | Microsoft SQL Server | MySQL | SQLite | CockroachDB | Prisma schema | Prisma Client | Prisma Migrate | @@ -104,14 +84,10 @@ Lock option (MySQL): | Table inheritance | ✔️ | ✔️ | No | No | ✔️ | Not yet | ✔️\* | Not yet | | Authorization and user management | ✔️ | ✔️ | ✔️ | No | ✔️ | Not yet | Not yet | Not yet | - - - \* Only available if natively supported by database. - † Only supports JSON through SQL functions, but doesn't have a JSON column type. Therefore client JSON operations are not supported. - ‡ JSON arrays are not yet supported: see the [CockroachDB connector page](/orm/overview/databases/cockroachdb) for details - - ## NoSQL database features This section describes which database features exist on the NoSQL databases that are currently supported by Prisma ORM. diff --git a/content/200-orm/500-reference/380-connection-urls.mdx b/content/200-orm/500-reference/380-connection-urls.mdx index 2849411bd8..ebb7287c3d 100644 --- a/content/200-orm/500-reference/380-connection-urls.mdx +++ b/content/200-orm/500-reference/380-connection-urls.mdx @@ -44,7 +44,7 @@ Here are examples for the connection URLs of the databases Prisma ORM supports: ### PostgreSQL -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers datasource db { provider = "postgresql" url = "postgresql://janedoe:mypassword@localhost:5432/mydb?schema=sample" @@ -53,7 +53,7 @@ datasource db { ### MySQL -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers datasource db { provider = "mysql" url = "mysql://janedoe:mypassword@localhost:3306/mydb" @@ -62,7 +62,7 @@ datasource db { ### Microsoft SQL Server -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers datasource db { provider = "sqlserver" url = "sqlserver://localhost:1433;initial catalog=sample;user=sa;password=mypassword;" @@ -71,7 +71,7 @@ datasource db { ### SQLite -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers datasource db { provider = "sqlite" url = "file:./dev.db" @@ -80,7 +80,7 @@ datasource db { ### CockroachDB -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers datasource db { provider = "cockroachdb" url = "postgresql://janedoe:mypassword@localhost:26257/mydb?schema=public" @@ -89,7 +89,7 @@ datasource db { ### MongoDB -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers datasource db { provider = "mongodb" url = "mongodb+srv://root:@cluster0.ab1cd.mongodb.net/myDatabase?retryWrites=true&w=majority" @@ -100,7 +100,7 @@ datasource db { You can also provide the connection URL as an environment variable: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers datasource db { provider = "postgresql" url = env("DATABASE_URL") diff --git a/content/200-orm/500-reference/500-preview-features/050-client-preview-features.mdx b/content/200-orm/500-reference/500-preview-features/050-client-preview-features.mdx index 56e36beb10..c3659a4fdc 100644 --- a/content/200-orm/500-reference/500-preview-features/050-client-preview-features.mdx +++ b/content/200-orm/500-reference/500-preview-features/050-client-preview-features.mdx @@ -58,7 +58,7 @@ To enable a Prisma Client Preview feature: In the list below, you can find a history of Prisma Client and Prisma schema features that were in Preview and are now in general availability. The features are sorted by the most recent version in which they were promoted to general availability. | Feature | Released into Preview | Released into General Availability | -| -------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | +| -------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `jsonProtocol` | [4.11.0](https://github.com/prisma/prisma/releases/tag/4.11.0) | [5.0.0](https://github.com/prisma/prisma/releases/tag/5.0.0) | | [`extendedWhereUnique`](/orm/reference/prisma-client-reference#filter-on-non-unique-fields-with-userwhereuniqueinput) | [4.5.0](https://github.com/prisma/prisma/releases/tag/4.5.0) | [5.0.0](https://github.com/prisma/prisma/releases/tag/5.0.0) | | [`fieldReference`](/orm/reference/prisma-client-reference#compare-columns-in-the-same-table) | [4.3.0](https://github.com/prisma/prisma/releases/tag/4.3.0) | [5.0.0](https://github.com/prisma/prisma/releases/tag/5.0.0) | diff --git a/content/200-orm/500-reference/500-preview-features/080-cli-preview-features.mdx b/content/200-orm/500-reference/500-preview-features/080-cli-preview-features.mdx index cec13a9203..bbd3d3fe95 100644 --- a/content/200-orm/500-reference/500-preview-features/080-cli-preview-features.mdx +++ b/content/200-orm/500-reference/500-preview-features/080-cli-preview-features.mdx @@ -17,20 +17,6 @@ For more information, see [ORM releases and maturity levels](/orm/more/releases) There are currently no [Preview](/orm/more/releases#preview) features for Prisma CLI. - - ## Preview features promoted to general availability In the list below, you can find a history of Prisma CLI features that were in Preview and are now in general availability. The features are sorted by the most recent version in which they were promoted to general availability. diff --git a/content/200-orm/500-reference/500-preview-features/index.mdx b/content/200-orm/500-reference/500-preview-features/index.mdx index b031f62281..105849eb7e 100644 --- a/content/200-orm/500-reference/500-preview-features/index.mdx +++ b/content/200-orm/500-reference/500-preview-features/index.mdx @@ -2,6 +2,7 @@ title: 'Preview features' metaTitle: 'Preview features (Reference)' metaDescription: 'Previews are typically available behind a feature flag or require some form of opt-in.' +hide_table_of_contents: true hiddenPage: false --- @@ -9,8 +10,8 @@ hiddenPage: false Some Prisma ORM features are released as [Previews](/orm/more/releases#preview). [Share your feedback on all Preview features on GitHub](https://github.com/prisma/prisma/issues/3108). For information about available preview features and how to enable them, see: -- [Prisma Client and Prisma schema preview features](client-preview-features) -- [Prisma CLI preview features](cli-preview-features) +- [Prisma Client and Prisma schema preview features](/orm/reference/preview-features/client-preview-features) +- [Prisma CLI preview features](/orm/reference/preview-features/cli-preview-features) For information regarding upgrading Prisma ORM and enabling Preview features see [Upgrading to use Preview features](/orm/more/upgrade-guides/upgrading-to-use-preview-features). diff --git a/content/200-orm/500-reference/_category_.json b/content/200-orm/500-reference/_category_.json new file mode 100644 index 0000000000..6a03fc6cc2 --- /dev/null +++ b/content/200-orm/500-reference/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Reference", + "collapsible": false, + "collapsed": false +} \ No newline at end of file diff --git a/content/200-orm/500-reference/index.mdx b/content/200-orm/500-reference/index.mdx index c0a3fdee97..614cab3217 100644 --- a/content/200-orm/500-reference/index.mdx +++ b/content/200-orm/500-reference/index.mdx @@ -3,7 +3,7 @@ title: 'Reference' metaTitle: 'Reference' metaDescription: 'Reference for Prisma Client API, Prisma CLI, errors & more.' staticLink: true -toc: false +hide_table_of_contents: true --- diff --git a/content/200-orm/800-more/100-under-the-hood/100-engines.mdx b/content/200-orm/800-more/100-under-the-hood/100-engines.mdx index 21c612ba19..ce4d5be496 100644 --- a/content/200-orm/800-more/100-under-the-hood/100-engines.mdx +++ b/content/200-orm/800-more/100-under-the-hood/100-engines.mdx @@ -26,7 +26,7 @@ A Prisma engine is the **direct interface to the database**, any higher-level in As an example, Prisma Client connects to the [query engine](/orm/more/under-the-hood/engines) in order to read and write data in a database: -![Prisma engine](typical-flow-query-engine-at-runtime.png) +![Prisma engine](./typical-flow-query-engine-at-runtime.png) ### Using custom engine libraries or binaries @@ -60,25 +60,22 @@ You can define environment variables globally on your machine or in the `.env` f Add the environment variable to the [`.env` file](/orm/more/development-environment/environment-variables/env-files). -, ]} - defaultTabType="OS" -> + - + ``` PRISMA_QUERY_ENGINE_BINARY=custom/my-query-engine-unix ``` - - + + ``` PRISMA_QUERY_ENGINE_BINARY=c:\custom\path\my-query-engine-binary.exe ``` - + > **Note**: It is possible to [use an `.env` file in a location outside the `prisma` folder](/orm/more/development-environment/environment-variables/managing-env-files-and-setting-variables). @@ -87,26 +84,23 @@ PRISMA_QUERY_ENGINE_BINARY=c:\custom\path\my-query-engine-binary.exe Run the following command to set the environment variable globally (in this example, `PRISMA_QUERY_ENGINE_BINARY`): -, ]} - defaultTabType="OS" -> + - + ```terminal export PRISMA_QUERY_ENGINE_BINARY=/custom/my-query-engine-unix ``` - + - + ```terminal set PRISMA_QUERY_ENGINE_BINARY=c:\custom\my-query-engine-windows.exe ``` - + @@ -120,13 +114,9 @@ npx prisma -v The output shows that the query engine path comes from the `PRISMA_QUERY_ENGINE_BINARY` environment variable: -, ]} - defaultTabType="OS" -> - - + + ```terminal highlight=2;normal Current platform : darwin Query Engine : query-engine d6ff7119649922b84e413b3b69660e2f49e2ddf3 (at /custom/my-query-engine-unix) @@ -134,8 +124,8 @@ Migration Engine : migration-engine-cli d6ff7119649922b84e413b3b69660e2f49e2 Introspection Engine : introspection-core d6ff7119649922b84e413b3b69660e2f49e2ddf3 (at /myproject/node_modules/@prisma/engines/introspection-engine-unix) ``` - - + + ```terminal highlight=2;normal Current platform : windows @@ -144,7 +134,7 @@ Migration Engine : migration-engine-cli d6ff7119649922b84e413b3b69660e2f49e2 Introspection Engine : introspection-core d6ff7119649922b84e413b3b69660e2f49e2ddf3 (at c:\myproject\node_modules\@prisma\engines\introspection-engine-windows.exe) ``` - + @@ -170,7 +160,7 @@ Note that the query engine is implemented in Rust. The source code is located in By default, Prisma Client loads the query engine as a [Node-API library](https://nodejs.org/api/n-api.html). You can alternatively [configure Prisma to use the query engine compiled as an executable binary](#configuring-the-query-engine), which is run as a sidecar process alongside your application. The Node-API library approach is recommended since it reduces the communication overhead between Prisma Client and the query engine. -![Diagram showing the query engine and Node.js at runtime](query-engine-node-js-at-runtime.png) +![Diagram showing the query engine and Node.js at runtime](./query-engine-node-js-at-runtime.png) The query engine is started when the first Prisma Client query is invoked or when the [`$connect()`](/orm/prisma-client/setup-and-configuration/databases-connections/connection-management) method is called on your `PrismaClient` instance. Once the query engine is started, it creates a [connection pool](/orm/prisma-client/setup-and-configuration/databases-connections/connection-pool) and manages the physical connections to the database. From that point onwards, Prisma Client is ready to send [queries](/orm/prisma-client/queries/crud) to the database (e.g. `findUnique`, `findMany`, `create`, ...). @@ -190,7 +180,7 @@ The following diagram depicts a "typical flow": 1. The query engine closes the database connections 1. The query engine is stopped -![Typical flow of the query engine at run time](typical-flow-query-engine-at-runtime.png) +![Typical flow of the query engine at run time](./typical-flow-query-engine-at-runtime.png) ## Responsibilities of the query engine @@ -212,7 +202,7 @@ export DEBUG="engine" You can also get more visibility into the SQL queries that are generated by the query engine by setting the [`query` log level](/orm/reference/prisma-client-reference#log-levels) in Prisma Client: -```ts +```ts showLineNumbers const prisma = new PrismaClient({ log: ['query'], }) diff --git a/content/200-orm/800-more/100-under-the-hood/index.mdx b/content/200-orm/800-more/100-under-the-hood/index.mdx index f96f651788..af51f9c7e9 100644 --- a/content/200-orm/800-more/100-under-the-hood/index.mdx +++ b/content/200-orm/800-more/100-under-the-hood/index.mdx @@ -2,6 +2,7 @@ title: 'Under the hood' metaTitle: 'Under the hood' metaDescription: 'Learn about Prisma ORM internals and how it works "under the hood". Prisma ORM tools are based on an engine-layer which manages the communication with the database.' +hide_table_of_contents: true --- diff --git a/content/200-orm/800-more/300-upgrade-guides/200-upgrading-versions/600-upgrading-to-prisma-5/001-rejectonnotfound-changes.mdx b/content/200-orm/800-more/300-upgrade-guides/200-upgrading-versions/600-upgrading-to-prisma-5/001-rejectonnotfound-changes.mdx index 61b772a058..b7acc332e9 100644 --- a/content/200-orm/800-more/300-upgrade-guides/200-upgrading-versions/600-upgrading-to-prisma-5/001-rejectonnotfound-changes.mdx +++ b/content/200-orm/800-more/300-upgrade-guides/200-upgrading-versions/600-upgrading-to-prisma-5/001-rejectonnotfound-changes.mdx @@ -18,7 +18,7 @@ A full list of Prisma ORM 5 changes can be found [in our release notes](https:// -## Replacing rejectOnNotFound enabled at the query level +## Replacing `rejectOnNotFound` enabled at the query level If you previously enabled `rejectOnNotFound` on a per-query basis, you will need to replace your usage at the _query level_. You can use our `*OrThrow` query variants, `findFirstOrThrow` or `findUniqueOrThrow` instead of supplying the parameter to `findFirst` and `findUnique`. @@ -82,7 +82,7 @@ const user = await prisma.user.findFirstOrThrow({ }).catch(adaptError(() => new MyCustomError()) ``` -## Replacing rejectOnNotFound enabled at the Client level +## Replacing `rejectOnNotFound` enabled at the Client level ### `rejectOnNotFound` via Prisma Client Constructor diff --git a/content/200-orm/800-more/300-upgrade-guides/200-upgrading-versions/600-upgrading-to-prisma-5/101-jsonprotocol-changes.mdx b/content/200-orm/800-more/300-upgrade-guides/200-upgrading-versions/600-upgrading-to-prisma-5/101-jsonprotocol-changes.mdx index 46d2ca27b2..a2d6ca728e 100644 --- a/content/200-orm/800-more/300-upgrade-guides/200-upgrading-versions/600-upgrading-to-prisma-5/101-jsonprotocol-changes.mdx +++ b/content/200-orm/800-more/300-upgrade-guides/200-upgrading-versions/600-upgrading-to-prisma-5/101-jsonprotocol-changes.mdx @@ -14,11 +14,11 @@ A full list of Prisma ORM 5 changes can be found [in our release notes](https:// -## jsonProtocol specific changes +## `jsonProtocol` specific changes Below are changes that result directly from the `jsonProtocol` feature becoming the default in Prisma ORM 5. -### Removal of jsonProtocol Preview Feature +### Removal of `jsonProtocol` Preview Feature In Prisma ORM 5, `jsonProtocol` is the default and only protocol in Prisma Client. The `jsonProtocol` Preview feature is no longer needed. @@ -72,7 +72,7 @@ Invalid `prisma.user.create()` invocation in Argument `hubspot_id` must not be null. ``` -## jsonProtocol related changes +## `jsonProtocol` related changes Below are changes that are related to the switch to the new protocol. If you were using the `jsonProtocol` Preview Feature, you most likely ran into these issues. @@ -80,7 +80,7 @@ Below are changes that are related to the switch to the new protocol. If you wer Several array shortcuts were removed as a part of this major update. These shortcuts were a way to add a single element as a value to an array-based operator. -#### OR operators +#### `OR` operators The following code in Prisma ORM 4 and lower: @@ -104,7 +104,7 @@ prisma.user.findMany({ `OR` operators will only accept array values. -#### in and notIn operators +#### `in` and `notIn` operators Similar to `OR`, `in` and `notIn` require array values. @@ -165,7 +165,7 @@ prisma.user.findMany({
-#### path argument for filtering on JSON fields in PostgreSQL +#### `path` argument for filtering on JSON fields in PostgreSQL [When filtering on JSON fields in a PostgreSQL model](/orm/prisma-client/special-fields-and-types/working-with-json-fields#filter-on-a-json-field) the `path` argument now only accepts an array. diff --git a/content/200-orm/800-more/300-upgrade-guides/200-upgrading-versions/600-upgrading-to-prisma-5/index.mdx b/content/200-orm/800-more/300-upgrade-guides/200-upgrading-versions/600-upgrading-to-prisma-5/index.mdx index aa1a923623..3ecbc72dec 100644 --- a/content/200-orm/800-more/300-upgrade-guides/200-upgrading-versions/600-upgrading-to-prisma-5/index.mdx +++ b/content/200-orm/800-more/300-upgrade-guides/200-upgrading-versions/600-upgrading-to-prisma-5/index.mdx @@ -14,40 +14,40 @@ This guide explains how upgrading might affect your application and gives instru -## Upgrade the prisma and @prisma/client packages to Prisma ORM 5 +## Upgrade the `prisma` and `@prisma/client` packages to version 5 To upgrade to Prisma ORM 5 from an earlier version, you need to update both the `prisma` and `@prisma/client` packages. -, , ]}> + - + ```terminal npm install @prisma/client@5 npm install -D prisma@5 ``` - + - + ```terminal yarn up prisma@5 @prisma/client@5 ``` - + - + ```terminal pnpm upgrade prisma@5 @prisma/client@5 ``` - + - + Before you upgrade, check each breaking change below to see how the upgrade might affect your application. @@ -90,7 +90,7 @@ With Prisma ORM version 5.0.0, we have upgraded the embedded version of SQLite f This section gives an overview of the main breaking changes in Prisma ORM 5. -### Removal of rejectOnNotFound parameter +### Removal of `rejectOnNotFound` parameter With Prisma ORM 5, the deprecated parameter `rejectOnNotFound` has been removed. Depending on if your project used `rejectOnNotFound` per query or globally, there will be be different ways of updating your code. @@ -98,7 +98,7 @@ If you are using the `rejectOnNotFound` parameter on a per-query basis, then fol If instead you have set up the `rejectOnNotFound` parameter at the client level, you will need to follow [the steps for updating your code at the client level](/orm/more/upgrade-guides/upgrading-versions/upgrading-to-prisma-5/rejectonnotfound-changes#replacing-rejectonnotfound-enabled-at-the-client-level). -### jsonProtocol out of Preview +### `jsonProtocol` out of Preview The `jsonProtocol` preview feature is now Generally Available. This new protocol leads to [significantly improved startup times](https://www.prisma.io/blog/prisma-5-f66prwkjx72s#improved-startup-performance-in-prisma-client) when compared to our previous GraphQL-based protocol. When upgrading to Prisma ORM 5, make sure to remove `jsonProtocol` from your preview features, if added. @@ -138,7 +138,7 @@ In most cases, the fix will be as simple as wrapping the existing value in an ar While `OR`, `in`, and `notIn` operators are affected, `AND` and `NOT` are not affected by this change. -### cockroachdb provider is now required when connecting to a CockroachDB database +### `cockroachdb` provider is now required when connecting to a CockroachDB database With Prisma ORM version 5.0.0, we require the `cockroachdb` provider to be used when connecting to CockroachDB databases. Previously, we had accepted `postgresql` as well, but we are removing that option. @@ -151,11 +151,11 @@ If you were using [native database types](/orm/reference/prisma-schema-reference 5. Delete your existing migrations. We will be [performing a baseline](/getting-started/setup-prisma/add-to-existing-project/relational-databases/baseline-your-database-typescript-cockroachdb) in order to make your local setup agree with your existing CockroachDB instance. 6. Perform the [baselining steps](/getting-started/setup-prisma/add-to-existing-project/relational-databases/baseline-your-database-typescript-cockroachdb). After these steps, you'll have migrated successfully from the `postgresql` provider to the `cockroachdb` provider! -### Removal of runtime/index.js from generated client +### Removal of `runtime/index.js` from generated client The `runtime/index.js` file has been removed from Prisma Client. -#### Using public APIs from @prisma/client/runtime +#### Using public APIs from `@prisma/client/runtime` Importing from `@prisma/client/runtime` is no longer available in Prisma ORM 5. If you were using public APIs available in this namespace before, you can instead import `Prisma` and access them. For example: @@ -179,7 +179,7 @@ We highly discourage the use of internal private APIs as they can change without ### Generated type changes -#### Changes to RelationFilterInput to account for nullability +#### Changes to `RelationFilterInput` to account for nullability Prior to Prisma ORM 5, there was a long-standing bug that caused nullable reverse relations to not be marked as nullable in our generated types. For example, take the following schema: @@ -211,7 +211,7 @@ In the generated types, `Address.user` and `Post.user` would use the same type, If you import generated types in your code, you will need to update instances like this to utilize the new `Nullable` types. -#### Changes to UncheckedUpdateManyInput to avoid name collisions +#### Changes to `UncheckedUpdateManyInput` to avoid name collisions In certain instances it was possible for name collisions to occur when one model had two foreign keys to two other models that had the same property name for the reverse relation. As an example, the following schema: @@ -261,7 +261,7 @@ The outdated use of `db push --force` can be replaced with the newer implementat All other flags are from previous APIs and are no longer needed. -### Removal of the beforeExit hook from the library engine +### Removal of the `beforeExit` hook from the library engine The `beforeExit` hook has been removed from the Prisma ORM library engine. While this functionality is still required for the Prisma ORM binary engine in order to run last minute queries or perform shutdown related operations, it provides no benefit over native Node.js exit hooks in the library engine. Instead of this hook we recommend using built-in Node.js exit events. @@ -313,19 +313,19 @@ Instead, use the built-in `enableShutdownHooks` method in NestJS if you need to + app.enableShutdownHooks() ``` -### Removal of deprecated prisma2 executable +### Removal of deprecated `prisma2` executable When we released Prisma ORM 2, the `prisma2` executable was used in order to differentiate from Prisma 1. In a later release, the `prisma2` cli took over the `prisma` executable name. Needless to say, the `prisma2` executable has been deprecated for some time and is now removed. If your scripts use Prisma CLI as `prisma2`, please replace it with simply `prisma`. -### Removal of deprecated experimentalFeatures property +### Removal of deprecated `experimentalFeatures` property The `previewFeatures` field of the [generator block](/orm/reference/prisma-schema-reference#fields-1) used to be called `experimentalFeatures`. We are removing that deprecated property. In Prisma ORM 5, you will need to update references of `experimentalFeatures` to `previewFeatures` manually or use the new code action in the Prisma VSCode extension. -### migration-engine renamed to schema-engine +### `migration-engine` renamed to `schema-engine` The engine responsible for commands like `prisma migrate` and `prisma db` has been renamed from `migration-engine` to `schema-engine` to better describe its use. For many users, no changes will be required. However, if you need to explicitly include or exclude this engine file, or refer to the engine name for any other reason, you will need to update your code references. diff --git a/content/200-orm/800-more/300-upgrade-guides/200-upgrading-versions/700-upgrading-to-prisma-4.mdx b/content/200-orm/800-more/300-upgrade-guides/200-upgrading-versions/700-upgrading-to-prisma-4.mdx index d6e35de6b6..50bc18d483 100644 --- a/content/200-orm/800-more/300-upgrade-guides/200-upgrading-versions/700-upgrading-to-prisma-4.mdx +++ b/content/200-orm/800-more/300-upgrade-guides/200-upgrading-versions/700-upgrading-to-prisma-4.mdx @@ -83,29 +83,31 @@ For more details, see the [Upgrading from previous versions](/orm/prisma-schema/ For database connectors that support scalar lists (PostgreSQL, CockroachDB and MongoDB), Prisma ORM 4 introduces the ability to set a default value in your Prisma schema file with the `@default` attribute: -, ]}> - + + ```prisma highlight=4;normal model User { id Int @id @default(autoincrement()) posts Post[] + //highlight-next-line favoriteColors String[] @default(["red", "yellow", "purple"]) } ``` - - + + ```prisma highlight=4;normal model User { id String @id @default(auto()) @map("_id") @db.ObjectId posts Post[] + //highlight-next-line favoriteColors String[] @default(["red", "yellow", "purple"]) } ``` - + ##### Upgrade path @@ -115,12 +117,12 @@ This is a breaking change if you previously had defaults defined for scalar list 1. Upgrade to the new Prisma ORM 4 packages following [these instructions](#upgrade-the-prisma-and-prismaclient-packages-to-prisma-orm-4) 1. Run `npx prisma db pull` afterwards to retrieve any existing configuration of indexes and constraints. This needs to be done before running any `npx prisma db push` or `npx prisma migrate dev` command, or you will lose any defaults that are defined in the database but not previously represented in the Prisma schema. -#### Explicit @unique constraints on one-to-one relations +#### Explicit `@unique` constraints on one-to-one relations When using one-to-one relations in Prisma ORM 4, you will need to explicitly add the `@unique` attribute to the relation scalar field. For example, for this one-to-one relation between a `User` and a `Profile` model, you will need to add the `@unique` attribute to the `profileId` field: -, ]}> - + + ```prisma model User { @@ -135,8 +137,8 @@ model Profile { } ``` - - + + ```prisma model User { @@ -151,7 +153,7 @@ model Profile { } ``` - + ##### Upgrade path @@ -163,14 +165,14 @@ After you upgrade to Prisma ORM 4, any one-to-one relations without a `@unique` 1. Manually fix the validation errors in your Prisma schema by adding the explicit `@unique` or `@id` attribute to your data model. 1. Push the changes to your database using `prisma db push` for MongoDB or `prisma migrate dev` for MySQL. -#### Enforced use of @unique or @id attribute for one-to-one and one-to-many relations (MySQL and MongoDB) +#### Enforced use of `@unique` or `@id` attribute for one-to-one and one-to-many relations (MySQL and MongoDB) When you use one-to-one and one-to-many relations in Prisma ORM 4, you will need to use a `@unique` attribute on the relation field to guarantee that the singular side(s) of the relation has only one record. This is now enforced for MySQL and MongoDB, bringing them into line with other connectors. Missing `@unique` attributes will now trigger a validation error. In the following example of a _one-to-many relation_ between a `User` and `Post` model, the `@unique` attribute must be added to the `email` field: -, ]}> - + + ```prisma model User { @@ -186,8 +188,8 @@ model Post { } ``` - - + + ```prisma model User { @@ -203,13 +205,13 @@ model Post { } ``` - + In the following example of a _one-to-one relation_ between a `User` and `Profile` model, the `@unique` attribute must be added to the `email` field: -, ]}> - + + ```prisma model User { @@ -226,8 +228,8 @@ model Profile { } ``` - - + + ```prisma model User { @@ -244,7 +246,7 @@ model Profile { } ``` - + ##### Upgrade path @@ -258,7 +260,7 @@ After you upgrade to Prisma ORM 4, any one-to-one or one-to-many relations witho When using [implicit many-to-many relations](/orm/prisma-schema/data-model/relations/many-to-many-relations#implicit-many-to-many-relations) in Prisma ORM 4, you will no longer be able to use the `references` argument, which was previously optional. For example, the following relation would now trigger a validation error: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model Post { id Int @id @default(autoincrement()) categories Category[] @relation("my-relation", references: [id]) // <-- validation error @@ -272,7 +274,7 @@ model Category { Instead, you can write: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model Post { id Int @id @default(autoincrement()) categories Category[] @relation("my-relation") @@ -379,7 +381,7 @@ If you use `$queryRaw` or parametrized `$queryRawUnsafe`queries with a PostgreSQ - Update the input types of any integers in your user-defined functions to `INT8`, or - Cast any integers in your query parameters to `INT4`. -#### DbNull, JsonNull and AnyNull are now objects +#### `DbNull`, `JsonNull` and `AnyNull` are now objects JavaScript `null` is ambiguous for JSON columns, so Prisma ORM uses `DbNull`, `JsonNull`, and `AnyNull` to distinguish between the database `NULL` value and the JSON `null` value. Before version 4.0.0, `DbNull`, `JsonNull`, and `AnyNull` were string constants. From version 4.0.0, they are objects. @@ -443,35 +445,35 @@ Note: - You can use `getDmmf()`from `@prisma/internals` to access the schema property. - We still export `Prisma.dmmf.datamodel` into the generated Prisma Client. -## Upgrade the prisma and @prisma/client packages to Prisma ORM 4 +## Upgrade the `prisma` and `@prisma/client` packages to version 4 To upgrade to Prisma ORM 4 from an earlier version, you need to update both the `prisma` and `@prisma/client` packages. Both the `prisma` and `@prisma/client` packages install with a caret `^` in their version number. This allows upgrades to new minor versions, but not major versions, to safeguard against breaking changes. To ignore the caret `^` and upgrade across major versions, you can use the `@4` tag when you upgrade with `npm`, or `yarn`: - + Before you upgrade, check each **breaking change** to see how the upgrade might affect your application. -, ]}> + - + ```terminal npm install prisma@4 @prisma/client@4 ``` - + - + ```terminal yarn up prisma@4 @prisma/client@4 ``` - + diff --git a/content/200-orm/800-more/300-upgrade-guides/200-upgrading-versions/800-upgrading-to-prisma-3/100-named-constraints.mdx b/content/200-orm/800-more/300-upgrade-guides/200-upgrading-versions/800-upgrading-to-prisma-3/100-named-constraints.mdx index 35d262c6bd..393d65ffb4 100644 --- a/content/200-orm/800-more/300-upgrade-guides/200-upgrading-versions/800-upgrading-to-prisma-3/100-named-constraints.mdx +++ b/content/200-orm/800-more/300-upgrade-guides/200-upgrading-versions/800-upgrading-to-prisma-3/100-named-constraints.mdx @@ -69,6 +69,7 @@ To keep existing names, run `prisma db pull` against the target environment. Thi id Int @id @default(autoincrement()) title String authorName String @default("Anonymous") + //highlight-next-line author User? @relation(fields: [authorName], references: [name], map: "Custom_Foreign_Key_Constraint") } ``` @@ -132,6 +133,7 @@ model Post { id Int @id @default(autoincrement()) title String authorName String @default("Anonymous") + //highlight-next-line author User? @relation(fields: [authorName], references: [name], map: "Custom_Foreign_Key_Constraint") } ``` @@ -143,6 +145,7 @@ model Post { id Int @id @default(autoincrement()) title String authorName String @default("Anonymous") + //highlight-next-line author User? @relation(fields: [authorName], references: [name], map: "Custom_Production_Name") } ``` diff --git a/content/200-orm/800-more/300-upgrade-guides/200-upgrading-versions/800-upgrading-to-prisma-3/150-referential-actions.mdx b/content/200-orm/800-more/300-upgrade-guides/200-upgrading-versions/800-upgrading-to-prisma-3/150-referential-actions.mdx index c4ba05fa2b..57db73f8cf 100644 --- a/content/200-orm/800-more/300-upgrade-guides/200-upgrading-versions/800-upgrading-to-prisma-3/150-referential-actions.mdx +++ b/content/200-orm/800-more/300-upgrade-guides/200-upgrading-versions/800-upgrading-to-prisma-3/150-referential-actions.mdx @@ -3,6 +3,7 @@ title: 'Referential actions upgrade path' metaTitle: 'Referential actions upgrade path' metaDescription: 'Guides on how to upgrade depending on your workflow using Prisma Introspect or Prisma Migrate' tocDepth: 4 +toc_max_heading_level: 4 toc: true --- @@ -50,13 +51,13 @@ You can also decide to skip checking the defaults and run a migration to update ### Using Introspection -If you [Introspect](/orm/prisma-schema/introspection) your database, the referential actions configured at the database level will be reflected in your Prisma Schema. If you have been using Prisma Migrate or `prisma db push` to manage the database schema, these are likely to be the [<=2.25.0 default values](#prisma-orm-2x-default-referential-actions). +If you [Introspect](/orm/prisma-schema/introspection) your database, the referential actions configured at the database level will be reflected in your Prisma Schema. If you have been using Prisma Migrate or `prisma db push` to manage the database schema, these are likely to be the [\<=2.25.0 default values](#prisma-orm-2x-default-referential-actions). When you run an Introspection, Prisma ORM compares all the foreign keys in the database with the schema, if the SQL statements `ON DELETE` and `ON UPDATE` do **not** match the default values, they will be explicitly set in the schema file. After introspecting, you can review the non-default clauses in your schema. The most important clause to review is `onDelete`, which defaults to `Cascade` in version 2.25.0 and earlier. - + If you are using either the [`delete()`](/orm/prisma-client/queries/crud#delete-a-single-record) or [`deleteAll()`](/orm/prisma-client/queries/crud#delete-all-records) methods, **cascading deletes will now be performed, as the safety net in Prisma Client that previously prevented cascading deletes at runtime is removed**. Be sure to check your code and make any adjustments accordingly. @@ -75,6 +76,7 @@ The following example would result in a cascading delete, meaning that if the `U model Post { id Int @id @default(autoincrement()) title String + //add-next-line author User @relation(fields: [authorId], references: [id], onDelete: Cascade) authorId Int } @@ -114,7 +116,7 @@ The following example uses the below blog schema with a 1-m relationship between This means that if a user has a post, that user (and their posts) **cannot** be deleted. -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model Post { id Int @id @default(autoincrement()) title String @@ -130,7 +132,7 @@ model User { Prior to upgrading, the error code you would receive when trying to delete a user which has posts would be `P2014` and it's message: -> "The change you are trying to make would violate the required relation '{relation_name}' between the {model_a_name} and {model_b_name} models." +> "The change you are trying to make would violate the required relation '\{relation_name}' between the \{model_a_name} and \{model_b_name} models." ```ts import { PrismaClient } from '@prisma/client' @@ -166,7 +168,7 @@ main() To make sure you are checking for the correct errors in your code, modify your check to look for `P2003`, which will deliver the message: -> "Foreign key constraint failed on the field: {field_name}" +> "Foreign key constraint failed on the field: \{field_name}" ```ts highlight=14;delete|15;add import { PrismaClient } from '@prisma/client' @@ -182,7 +184,9 @@ async function main() { }) } catch (error) { if (error instanceof Prisma.PrismaClientKnownRequestError) { + //delete-next-line if (error.code === 'P2014') { + //add-next-line if (error.code === 'P2003') { console.log(error.message) } diff --git a/content/200-orm/800-more/300-upgrade-guides/200-upgrading-versions/800-upgrading-to-prisma-3/index.mdx b/content/200-orm/800-more/300-upgrade-guides/200-upgrading-versions/800-upgrading-to-prisma-3/index.mdx index c8f31dc29b..dc8fcae2b9 100644 --- a/content/200-orm/800-more/300-upgrade-guides/200-upgrading-versions/800-upgrading-to-prisma-3/index.mdx +++ b/content/200-orm/800-more/300-upgrade-guides/200-upgrading-versions/800-upgrading-to-prisma-3/index.mdx @@ -128,34 +128,34 @@ They also do not apply to the `array_contains` operator because there can only b -## Upgrading the prisma and @prisma/client packages to Prisma ORM 3 +## Upgrading the `prisma` and `@prisma/client` packages to Prisma ORM 3 To upgrade from version 2.x to 3.x, you need to update both the `prisma` and `@prisma/client` packages. Both the `prisma` and `@prisma/client` packages install with a caret `^` in their version number to safe guard against breaking changes. To ignore the caret `^` and upgrade across major versions, you can use the `@3` tag when upgrading with `npm`, or `yarn` . - + Before upgrading, check each **breaking change** to see how the upgrade might affect your application. -, ]}> + - + ```terminal npm install prisma@3 @prisma/client@3 ``` - + - + ```terminal yarn up prisma@3 @prisma/client@3 ``` - + - + \ No newline at end of file diff --git a/content/200-orm/800-more/300-upgrade-guides/200-upgrading-versions/index.mdx b/content/200-orm/800-more/300-upgrade-guides/200-upgrading-versions/index.mdx index 928c3736df..e9c621506f 100644 --- a/content/200-orm/800-more/300-upgrade-guides/200-upgrading-versions/index.mdx +++ b/content/200-orm/800-more/300-upgrade-guides/200-upgrading-versions/index.mdx @@ -16,11 +16,11 @@ To upgrade to the latest version of Prisma ORM: 1. Upgrade your codebase where applicable. Breaking changes may require you to change your Prisma schema or the way you use Prisma Client. - +:::tip -[codemods](codemods) help you refactor your code to account for breaking changes - for example, the 2.12.0 codemod automatically renames `findOne` to `findUnique`. +[codemods](/orm/more/upgrade-guides/upgrading-versions/codemods) help you refactor your code to account for breaking changes - for example, the 2.12.0 codemod automatically renames `findOne` to `findUnique`. - +::: @@ -38,7 +38,7 @@ To upgrade to the latest version of Prisma ORM: ## Testing new features, without upgrading -### dev distribution tag +### `dev` distribution tag The `dev` [Npm distribution tag](http://npm.github.io/publishing-pkgs-docs/updating/using-tags.html) points to the most recent development version of the package, which is published for each commit to the main branch of `prisma/prisma`. You can use the `dev` distribution tag to verify a fix or test a feature before it is officially released. @@ -48,7 +48,7 @@ To install the latest `dev` distribution tag: npm install @prisma/client@dev prisma@dev ``` - + Do not use the `dev` distribution tag in production - wait until the official release that contains the features and fixes you are interested in is released. For example, fixes present `@prisma/client@2.23.0-dev.25` will eventually be released as part of `@prisma/client@2.23.0`. diff --git a/content/200-orm/800-more/300-upgrade-guides/250-upgrading-to-use-preview-features.mdx b/content/200-orm/800-more/300-upgrade-guides/250-upgrading-to-use-preview-features.mdx index 793f39ca0b..816fd2be41 100644 --- a/content/200-orm/800-more/300-upgrade-guides/250-upgrading-to-use-preview-features.mdx +++ b/content/200-orm/800-more/300-upgrade-guides/250-upgrading-to-use-preview-features.mdx @@ -2,7 +2,7 @@ title: 'Upgrading to use Preview features' metaTitle: 'Upgrading to use Preview features (Guides)' metaDescription: 'Upgrading your project to use a Preview feature.' -toc: false +hide_table_of_contents: true --- diff --git a/content/200-orm/800-more/300-upgrade-guides/800-upgrade-from-prisma-1/01-how-to-upgrade.mdx b/content/200-orm/800-more/300-upgrade-guides/800-upgrade-from-prisma-1/01-how-to-upgrade.mdx index 46d75957b6..400fac4a4c 100644 --- a/content/200-orm/800-more/300-upgrade-guides/800-upgrade-from-prisma-1/01-how-to-upgrade.mdx +++ b/content/200-orm/800-more/300-upgrade-guides/800-upgrade-from-prisma-1/01-how-to-upgrade.mdx @@ -89,7 +89,7 @@ For the **initial setup**: 1. You set up Prisma ORM by installing the Prisma ORM versions 2._x_ and later CLI and running `npx prisma init`. 1. You connect to your database and introspect it with `npx prisma db pull`. -![Prisma CLI introspection flow](images/prisma-cli-introspection-flow.png) +![Prisma CLI introspection flow](./images/prisma-cli-introspection-flow.png) For **fixing the schema incompatibilities**: @@ -100,7 +100,7 @@ For **fixing the schema incompatibilities**: 1. You run the `npx prisma-upgrade` command again. 1. The Upgrade CLI adjusts the Prisma schema (version 2._x_ and later) by adding missing attributes. -![Fixing the schema incompatibilities](images/fix-schema-incompatibilities.png) +![Fixing the schema incompatibilities](./images/fix-schema-incompatibilities.png) Note that the Upgrade CLI is designed in a way that **you can stop and re-start the process at any time**. Once you ran a SQL command that was generated by the Upgrade CLI against your database, the SQL command will not show up the next time you invoke the Upgrade CLI. That way, you can gradually resolve all schema incompatibilities when it's convenient for you. diff --git a/content/200-orm/800-more/300-upgrade-guides/800-upgrade-from-prisma-1/02-schema-incompatibilities-mysql.mdx b/content/200-orm/800-more/300-upgrade-guides/800-upgrade-from-prisma-1/02-schema-incompatibilities-mysql.mdx new file mode 100644 index 0000000000..fd1e825330 --- /dev/null +++ b/content/200-orm/800-more/300-upgrade-guides/800-upgrade-from-prisma-1/02-schema-incompatibilities-mysql.mdx @@ -0,0 +1,776 @@ +--- +title: 'Schema incompatibilities' +metaTitle: 'Schema Incompatibilities | MySQL' +metaDescription: 'Problems and workarounds for Prisma 1 and 2.0 schemas with MySQL' +dbSwitcher: ['postgresql', 'mysql'] +sidebar_class_name: hidden-sidebar +pagination_next: orm/more/upgrade-guides/upgrade-from-prisma-1/upgrading-the-prisma-layer-mysql +slugSwitch: /orm/more/upgrade-guides/upgrade-from-prisma-1/schema-incompatibilities- +--- + +## Overview + +Each section on this page describes a potential problem when upgrading from Prisma 1 to Prisma ORM 2._x_ and later and explains the available workarounds. + +## Default values aren't represented in database + +### Problem + +When adding the `@default` directive in a Prisma 1 datamodel, the default values for this field are generated by the Prisma 1 server at runtime. There's no `DEFAULT` constraint added to the database column. Because this constraint is not reflected in the database itself, the Prisma ORM 2._x_ and later versions of introspection can't recognize it. + +### Example + +#### Prisma 1 datamodel + +```graphql +type Post { + id: ID! @id + published: Boolean @default(value: false) +} +``` + +#### Prisma 1 generated SQL migration + +```sql +CREATE TABLE "Post" ( + id VARCHAR(25) PRIMARY KEY NOT NULL, + published BOOLEAN NOT NULL +); +``` + +#### Result of introspection in Prisma ORM versions 2._x_ and later + +```prisma file=schema.prisma showLineNumbers +model Post { + id String @id + published Boolean +} +``` + +Because the `DEFAULT` constraint has not been added to the database when mapping the Prisma 1 datamodel to the database with `prisma deploy`, Prisma ORM v2 (and later versions) doesn't recognize it during introspection. + +### Workarounds + +#### Manually add a `DEFAULT` constraint to the database column + +You can alter the column to add the `DEFAULT` constraint as follows: + +```sql +ALTER TABLE `Post` + ALTER COLUMN published SET DEFAULT false; +``` + +After this adjustment, you can re-introspect your database and the `@default` attribute will be added to the `published` field: + +```prisma line-number file=schema.prisma highlight=3;normal showLineNumbers +model Post { + id String @id + //highlight-next-line + published Boolean @default(false) +} +``` + +#### Manually add a `@default` attribute to the Prisma model + +You can add the `@default` attribute to the Prisma model: + +```prisma line-number file=schema.prisma highlight=3;add showLineNumbers +model Post { + id String + //add-next-line + published Boolean @default(false) +} +``` + +If the `@default` attribute is set in the Prisma schema and you run `prisma generate`, the resulting Prisma Client code will generate the specified default values at runtime (similar to what the Prisma 1 server did in Prisma 1). + +## Generated CUIDs as ID values aren't represented in database + +### Problem + +Prisma 1 auto-generates ID values as CUIDs for `ID` fields when they're annotated with the `@id` directive. These CUIDs are generated by the Prisma 1 server at runtime. Because this behavior is not reflected in the database itself, the introspection in Prisma ORM 2._x_ and later can't recognize it. + +### Example + +#### Prisma 1 datamodel + +```graphql +type Post { + id: ID! @id +} +``` + +#### Prisma 1 generated SQL migration + +```sql +CREATE TABLE "Post" ( + id VARCHAR(25) PRIMARY KEY NOT NULL +); +``` + +#### Result of introspection in Prisma ORM versions 2._x_ and later + +```prisma file=schema.prisma showLineNumbers +model Post { + id String @id +} +``` + +Because there's no indication of the CUID behavior in the database, Prisma ORM's introspection doesn't recognize it. + +### Workaround + +As a workaround, you can manually add the `@default(cuid())` attribute to the Prisma model: + +```prisma line-number file=schema.prisma highlight=2;add showLineNumbers +model Post { + //add-next-line + id String @id @default(cuid()) +} +``` + +If the `@default` attribute is set in the Prisma schema and you run `prisma generate`, the resulting Prisma Client code will generate the specified default values at runtime (similar to what the Prisma 1 server did in Prisma 1). + +Note that you'll have to re-add the attribute after each introspection because introspection removes it (as the previous version of the Prisma schema is overwritten)! + +## `@createdAt` isn't represented in database + +### Problem + +Prisma 1 auto-generates values for `DateTime` fields when they're annotated with the `@createdAt` directive. These values are generated by the Prisma 1 server at runtime. Because this behavior is not reflected in the database itself, the introspection in Prisma ORM 2._x_ and later can't recognize it. + +### Example + +#### Prisma 1 datamodel + +```graphql line-number highlight=3;normal +type Post { + id: ID! @id + createdAt: DateTime! @createdAt +} +``` + +#### Prisma 1 generated SQL migration + +```sql +CREATE TABLE "Post" ( + id VARCHAR(25) PRIMARY KEY NOT NULL, + "createdAt" TIMESTAMP NOT NULL +); +``` + +#### Result of introspection in Prisma ORM 2._x_ and later versions + +```prisma file=schema.prisma showLineNumbers +model Post { + id String @id + createdAt DateTime +} +``` + +### Workarounds + +#### Manually add `DEFAULT CURRENT_TIMESTAMP` to the database column + +You can alter the column to add the `DEFAULT` constraint as follows: + +```sql +ALTER TABLE "Post" + ALTER COLUMN "createdAt" SET DEFAULT CURRENT_TIMESTAMP; +``` + +After this adjustment, you can re-introspect your database and the `@default` attribute will be added to the `createdAt` field: + +```prisma file=schema.prisma showLineNumbers +model Post { + id String + createdAt DateTime @default(now()) +} +``` + +#### Manually add the `@default(now())` attribute to the Prisma model + +As a workaround, you can manually add the `@default(now())` attribute to the Prisma model: + +```prisma line-number file=schema.prisma highlight=3;normal showLineNumbers +model Post { + id String @id + //highlight-next-line + createdAt DateTime @default(now()) +} +``` + +If the `@default` attribute is set in the Prisma schema and you run `prisma generate`, the resulting Prisma Client code will generate the specified default values at runtime (similar to what the Prisma 1 server did in Prisma 1). + +Note that you'll have to re-add the attribute after each introspection because introspection removes it (as the previous version of the Prisma schema is overwritten)! + +## `@updatedAt` isn't represented in database + +### Problem + +Prisma 1 auto-generates values for `DateTime` fields when they're annotated with the `@updatedAt` directive. These values are generated by the Prisma 1 server at runtime. Because this behavior is not reflected in the database itself, the introspection in Prisma ORM 2._x_ and later can't recognize it.. + +### Example + +#### Prisma 1 datamodel + +```graphql +type Post { + id: ID! @id + updatedAt: DateTime! @updatedAt +} +``` + +#### Prisma 1 generated SQL migration + +```sql +CREATE TABLE "Post" ( + id VARCHAR(25) PRIMARY KEY NOT NULL, + updatedAt TIMESTAMP +); +``` + +#### Result of introspection in Prisma ORM 2._x_ and later versions + +```prisma file=schema.prisma showLineNumbers +model Post { + id String @id + updatedAt DateTime +} +``` + +### Workarounds + +#### Manually add the `@updatedAt` attribute to the Prisma model + +As a workaround, you can manually add the `@updatedAt` attribute to the Prisma model: + +```prisma line-number file=schema.prisma highlight=3;add showLineNumbers +model Post { + id String @id + //add-next-line + updatedAt DateTime @updatedAt +} +``` + +If the `@updatedAt` attribute is set in the Prisma schema and you run `prisma generate`, the resulting Prisma Client code will automatically generate values for this column when an existing record is updated (similar to what the Prisma 1 server did in Prisma 1). + +Note that you'll have to re-add the attribute after each introspection because introspection removes it (as the previous version of the Prisma schema is overwritten)! + +## Inline 1-1 relations are recognized as 1-n (missing `UNIQUE` constraint) + +### Problem + +In the [datamodel v1.1](https://www.prisma.io/blog/datamodel-v11-lrzqy1f56c90) that was introduced in Prisma ORM v1.31, 1-1 relations can be declared as _inline_. In that case, the relation will not be maintained via a [relation table](/orm/prisma-schema/data-model/relations/many-to-many-relations#relation-tables) but via a single foreign key on one of the two tables involved. + +When this approach is used, Prisma ORM doesn't add a `UNIQUE` constraint to the foreign key column which means that after introspection in Prisma ORM version 2._x_ and later, this former 1-1 relation will be added as a 1-n relation to the Prisma schema. + +### Example + +#### Prisma ORM datamodel v1.1 (available from Prisma ORM v1.31) + +```graphql +type User { + id: ID! @id + profile: Profile @relation(link: INLINE) +} + +type Profile { + id: ID! @id + user: User +} +``` + +Note that omitting the `@relation` directive in this case would result in the same behavior because `link: INLINE` is the _default_ for 1-1 relations. + +#### Prisma 1 generated SQL migration + +```sql +CREATE TABLE "User" ( + id VARCHAR(25) PRIMARY KEY NOT NULL +); + +CREATE TABLE "Profile" ( + id VARCHAR(25) PRIMARY KEY NOT NULL, + "user" VARCHAR(25), + FOREIGN KEY ("user") REFERENCES "User"(id) +); +``` + +#### Result of introspection in Prisma ORM 2._x_ and later versions + +```prisma file=schema.prisma showLineNumbers +model User { + id String @id + Profile Profile[] +} + +model Profile { + id String @id + user String? + User User? @relation(fields: [user], references: [id]) +} +``` + +Because there's no `UNIQUE` constraint defined on the `user` column (which represents the foreign key in this relation), Prisma ORM's introspection recognizes the relation as 1-n. + +### Workaround + +#### Manually add `UNIQUE` constraint to the foreign key column + +You can alter the foreign key column to add the `UNIQUE` constraint as follows: + +```sql +ALTER TABLE `Profile` + ADD CONSTRAINT userId_unique UNIQUE (`user`); +``` + +After this adjustment, you can re-introspect your database and the 1-1 relation will be properly recognized: + +```prisma line-number file=schema.prisma highlight=3;normal showLineNumbers +model User { + id String @id + //highlight-next-line + Profile Profile? +} + +model Profile { + id String @id + user String? @unique + User User? @relation(fields: [user], references: [id]) +} +``` + +## _All_ non-inline relations are recognized as m-n + +### Problem + +Prisma 1 represents relations as relation tables most of the time: + +- All relations in the Prisma 1 **datamodel v1.0** are represented as relation tables +- In **datamodel v1.1**, all m-n relations as well as the 1-1 and 1-n relations declared as `link: TABLE` are represented as relation tables. + +Because of this representation, introspection in Prisma ORM version 2._x_ and later will recognize all these relations as m-n relations, even though they might have been declared as 1-1 or 1-n in Prisma 1. + +### Example + +#### Prisma 1 datamodel + +```graphql +type User { + id: ID! @id + posts: [Post!]! +} + +type Post { + id: ID! @id + author: User! @relation(link: TABLE) +} +``` + +#### Prisma 1 generated SQL migration + +```sql +CREATE TABLE "User" ( + id VARCHAR(25) PRIMARY KEY NOT NULL +); + +CREATE TABLE "Post" ( + id VARCHAR(25) PRIMARY KEY NOT NULL +); + +CREATE TABLE "_PostToUser" ( + "A" VARCHAR(25) NOT NULL REFERENCES "Post"(id) ON DELETE CASCADE, + "B" VARCHAR(25) NOT NULL REFERENCES "User"(id) ON DELETE CASCADE +); +CREATE UNIQUE INDEX "_PostToUser_AB_unique" ON "_PostToUser"("A" text_ops,"B" text_ops); +CREATE INDEX "_PostToUser_B" ON "_PostToUser"("B" text_ops); +``` + +#### Result of introspection in Prisma ORM 2._x_ and later versions + +```prisma file=schema.prisma showLineNumbers +model User { + id String @id + Post Post[] @relation(references: [id]) +} + +model Post { + id String @id + User User[] @relation(references: [id]) +} +``` + +Because the relation table that was created by Prisma 1 uses the same [conventions for relation tables](/orm/prisma-schema/data-model/relations/many-to-many-relations#conventions-for-relation-tables-in-implicit-m-n-relations) as in Prisma ORM version 2._x_ and later, the relation now gets recognized as a m-n relation. + +### Workaround + +As a workaround, you can migrate the data into a structure that's compatible with Prisma ORM's 1-n relation: + +1. Create new column `authorId` on the `Post` table. This column should be a _foreign key_ that references the `id` field of the `User` table: + ```sql + ALTER TABLE `Post` ADD COLUMN `authorId` VARCHAR(25); + ALTER TABLE `Post` ADD FOREIGN KEY (`authorId`) REFERENCES `User` (`id`); + ``` +1. Write a SQL query that reads all the rows from the `_PostToUser` relation table and for each row: + 1. Finds the respective `Post` record by looking up the value from column `A` + 1. Inserts the value from column `B` as the value for `authorId` into that `Post` record + ```sql + UPDATE Post, _PostToUser + SET Post.authorId = _PostToUser.B + WHERE Post.id = _PostToUser.A + ``` +1. Delete the `_PostToUser` relation table + ```sql + DROP TABLE `_PostToUser`; + ``` + +After that you can introspect your database and the relation will now be recognized as 1-n: + +```prisma line-number file=schema.prisma highlight=3,8,9;normal showLineNumbers +model User { + id String @id + //highlight-next-line + Post Post[] +} + +model Post { + id String @id + //highlight-start + User User @relation(fields: [authorId], references: [id]) + authorId String + //highlight-end +} +``` + +## `Json` type is represented as `TEXT` in database + +### Problem + +Prisma 1 supports the `Json` data type in its datamodel. However, in the underlying database, fields of type `Json` are actually stored as plain strings using the `TEXT` data type of the underlying database. Any parsing and validation of the stored JSON data is done by the Prisma 1 server at runtime. + +### Example + +#### Prisma 1 datamodel + +```graphql +type User { + id: ID! @id + jsonData: Json +} +``` + +#### Prisma 1 generated SQL migration + +```sql +CREATE TABLE "User" ( + id VARCHAR(25) PRIMARY KEY NOT NULL, + jsonData TEXT +); +``` + +#### Result of introspection in Prisma ORM 2._x_ and later versions + +```prisma file=schema.prisma showLineNumbers +model User { + id String @id + jsonData String? +} +``` + +### Workaround + +You can manually change the type of the column to `JSON` + +```sql +ALTER TABLE User MODIFY COLUMN jsonData JSON; +``` + +After this adjustment, you can re-introspect your database and the field will now be recognized as `Json`: + +```prisma line-number file=schema.prisma highlight=3;normal showLineNumbers +model User { + id String @id + //highlight-next-line + jsonData Json? +} +``` + +## Enums are represented as `TEXT` in database + +### Problem + +Prisma 1 supports the `enum` data type in its datamodel. However, in the underlying database, types declared as `enum` are actually stored as plain strings using the `TEXT` data type of the underlying database. Any validation of the stored `enum` data is done by the Prisma 1 server at runtime. + +### Example + +#### Prisma 1 datamodel + +```graphql +type User { + id: ID! @id + role: Role +} + +enum Role { + ADMIN + CUSTOMER +} +``` + +#### Prisma 1 generated SQL migration + +```sql +CREATE TABLE "User" ( + id VARCHAR(25) PRIMARY KEY NOT NULL, + role TEXT +); +``` + +#### Result of introspection in Prisma ORM 2._x_ and later versions + +```prisma file=schema.prisma showLineNumbers +model User { + id String @id + role String? +} +``` + +### Workaround + +You can manually turn the `role` column into an enum with your desired values: + +1. Create an `enum` in your database that mirrors the `enum` you defined in the Prisma 1 datamodel: + ```sql + CREATE TYPE "Role" AS ENUM ('CUSTOMER', 'ADMIN'); + ``` +1. Change the type from `TEXT` to your new `enum`: + ```sql + ALTER TABLE "User" ALTER COLUMN "role" TYPE "Role" + USING "role"::text::"Role"; + ``` + +After introspection, the type is now properly recognized as an enum: + +```prisma line-number file=schema.prisma highlight=3,6-9;normal showLineNumbers +model User { + id String @id + //highlight-next-line + role Role? +} + +//highlight-start +enum Role { + ADMIN + CUSTOMER +} +//highlight-end +``` + +## Mismatching CUID length + +### Problem + +Prisma 1 uses CUIDs as ID values for all database records. In the underlying database, these IDs are represented as strings with a maximum size of 25 characters (as `VARCHAR(25)`). However, when configuring default CUIDs in your Prisma ORM 2._x_ (or later versions) schema with `@default(cuid())` the generated ID values might exceed the limit of 25 characters (the maximum length might be 30 characters). To make your IDs proof for Prisma ORM 2._x_ (or later versions), you therefore need to adjust the column type to `VARCHAR(30)`. + +### Example + +#### Prisma 1 datamodel + +```graphql +type User { + id: ID! @id +} +``` + +#### Prisma 1 generated SQL migration + +```sql +CREATE TABLE "User" ( + id VARCHAR(25) PRIMARY KEY NOT NULL +); +``` + +#### Result of introspection in Prisma ORM 2._x_ and later versions + +```prisma file=schema.prisma showLineNumbers +model User { + id String @id +} +``` + +### Workaround + +You can manually turn the `VARCHAR(25)` columns into `VARCHAR(30)`: + +```sql +SET FOREIGN_KEY_CHECKS=0; +ALTER TABLE `User` CHANGE `id` `id` char(30) CHARACTER SET utf8 NOT NULL; +SET FOREIGN_KEY_CHECKS=1; +``` + +> **Note**: When fixing this issue with the [Upgrade CLI](/orm/more/upgrade-guides/upgrade-from-prisma-1/how-to-upgrade#prisma-1-upgrade-cli), the generated SQL statements will keep appearing in the Upgrade CLI even after you have changed the column types in the underlying database. This is a currently a limitation in the Upgrade CLI. + +## Scalar lists (arrays) are maintained with extra table + +### Problem + +In Prisma 1, you can define lists of _scalar_ types on your models. Under the hood, this is implemented with an extra table that keeps track of the values in the list. + +To remove the approach with the extra table which incurred hidden performance costs, Prisma ORM 2._x_ and later versions only support scalar lists only when they're natively supported by the database you use. At the moment, only [PostgreSQL supports scalar lists (arrays) natively](https://www.postgresql.org/docs/9.1/arrays.html). + +With PostgreSQL, you therefore can keep using scalar lists in Prisma ORM 2._x_ and later versions, but you'll need to perform a data migration to transfer the data from the extra table from Prisma 1 into an actual PostgreSQL array. + +### Example + +#### Prisma 1 datamodel + +```graphql +type User { + id: ID! @id + coinflips: [Boolean!]! @scalarList(strategy: RELATION) +} +``` + +#### Prisma 1 generated SQL migration + +```sql +CREATE TABLE "User" ( + id VARCHAR(25) PRIMARY KEY NOT NULL +); + +CREATE TABLE "User_coinflips" ( + "nodeId" VARCHAR(25) REFERENCES "User"(id), + position INTEGER, + value BOOLEAN NOT NULL, + CONSTRAINT "User_coinflips_pkey" PRIMARY KEY ("nodeId", position) +); +CREATE UNIQUE INDEX "User_coinflips_pkey" ON "User_coinflips"("nodeId" text_ops,position int4_ops); +``` + +#### Result of Prisma ORM 2 introspection + +```prisma file=schema.prisma showLineNumbers +model User { + id String @id + User_coinflips User_coinflips[] +} + +model User_coinflips { + nodeId String + position Int + value Boolean + User User @relation(fields: [nodeId], references: [id]) + + @@id([nodeId, position]) +} +``` + +Note that you can now generate Prisma Client and you'll be able to access the data from the scalar lists through the extra table. PostgreSQL users can alternatively migrate the data into a native PostgreSQL array and continue to benefit from the slicker Prisma Client API for scalar lists (read the section below for more info). + +
+ +Expand for sample Prisma Client API calls + +To access the coinflips data, you will now have to always [`include`](/orm/prisma-client/queries/select-fields#include-relations-and-select-relation-fields) it in your queries: + +```ts +const user = await prisma.user.findUnique({ + where: { id: 1 }, + include: { + coinflips: { + orderBy: { position: 'asc' }, + }, + }, +}) +``` + +> **Note**: The `orderBy` is important to retain the order of the list. + +This is the `result of the query: + +```js +{ + id: 1, + name: 'Alice', + coinflips: [ + { id: 1, position: 1000, value: false }, + { id: 2, position: 2000, value: true }, + { id: 3, position: 3000, value: false }, + { id: 4, position: 4000, value: true }, + { id: 5, position: 5000, value: true }, + { id: 6, position: 6000, value: false } + ] +} +``` + +To access just the boolean values from the list, you can `map` over the `coinflips` on `user` as follows: + +```ts +const currentCoinflips = user!.coinflips.map((cf) => cf.value) +``` + +> **Note**: The exclamation mark above means that you're _force unwrapping_ the `user` value. This is necessary because the `user` returned from the previous query might be `null`. + +Here's the value of `currentCoinflips` after the call to `map`: + +```json +[false, true, false, true, true, false] +``` + +
+ +### Workaround + +The following workaround is only available for PostgreSQL users! + +As scalar lists (i.e. [arrays](https://www.postgresql.org/docs/9.1/arrays.html)) are available as a native PostgreSQL feature, you can keep using the same notation of `coinflips: Boolean[]` in your Prisma schema. + +However, in order to do so you need to manually migrate the underlying data from the `User_coinflips` table into a PostgreSQL array. Here's how you can do that: + +1. Add the new `coinflips` column to the `User` tables: + ```sql + ALTER TABLE "User" ADD COLUMN coinflips BOOLEAN[]; + ``` +1. Migrate the data from `"User_coinflips".value` to `"User.coinflips"`: + ```sql + UPDATE "User" + SET coinflips = t.flips + FROM ( + SELECT "nodeId", array_agg(VALUE ORDER BY position) AS flips + FROM "User_coinflips" + GROUP BY "nodeId" + ) t + where t."nodeId" = "User"."id"; + ``` +1. To cleanup, you can delete the `User_coinflips` table: + ```sql + DROP TABLE "User_coinflips"; + ``` + +You can now introspect your database and the `coinflips` field will be represented as an array in your new Prisma schema: + +```prisma file=schema.prisma showLineNumbers +model User { + id String @id + coinflips Boolean[] +} +``` + +You can keep using Prisma Client as before: + +```ts +const user = await prisma.user.findUnique({ + where: { id: 1 }, +}) +``` + +This is the result from the API call: + +```js +{ + id: 1, + name: 'Alice', + coinflips: [ false, true, false, true, true, false ] +} +``` diff --git a/content/200-orm/800-more/300-upgrade-guides/800-upgrade-from-prisma-1/02-schema-incompatibilities.mdx b/content/200-orm/800-more/300-upgrade-guides/800-upgrade-from-prisma-1/02-schema-incompatibilities-postgresql.mdx similarity index 86% rename from content/200-orm/800-more/300-upgrade-guides/800-upgrade-from-prisma-1/02-schema-incompatibilities.mdx rename to content/200-orm/800-more/300-upgrade-guides/800-upgrade-from-prisma-1/02-schema-incompatibilities-postgresql.mdx index 4244db5327..fbd47836a6 100644 --- a/content/200-orm/800-more/300-upgrade-guides/800-upgrade-from-prisma-1/02-schema-incompatibilities.mdx +++ b/content/200-orm/800-more/300-upgrade-guides/800-upgrade-from-prisma-1/02-schema-incompatibilities-postgresql.mdx @@ -1,26 +1,12 @@ --- title: 'Schema incompatibilities' -# metaTitle: 'Problems and workarounds for Prisma 1 and 2.x and later schemas' -# metaDescription: 'Learn about the schema incompatibilities between Prisma 1 and Prisma ORM versions 2 and later, and how to resolve them with several workarounds.' +metaTitle: 'Schema Incompatibilities | PostgreSQL' +metaDescription: 'Problems and workarounds for Prisma 1 and 2.0 schemas with PostgreSQL' dbSwitcher: ['postgresql', 'mysql'] -techMetaTitles: - [ - { name: 'mysql', value: 'Schema Incompatibilities | MySQL' }, - { name: 'postgresql', value: 'Schema Incompatibilities | PostgreSQL' }, - ] -techMetaDescriptions: - [ - { - name: 'mysql', - value: 'Problems and workarounds for Prisma 1 and 2.0 schemas with MySQL', - }, - { - name: 'postgresql', - value: 'Problems and workarounds for Prisma 1 and 2.0 schemas with PostgreSQL', - }, - ] +pagination_next: orm/more/upgrade-guides/upgrade-from-prisma-1/upgrading-the-prisma-layer-postgresql +slugSwitch: /orm/more/upgrade-guides/upgrade-from-prisma-1/schema-incompatibilities- --- - + ## Overview Each section on this page describes a potential problem when upgrading from Prisma 1 to Prisma ORM 2._x_ and later and explains the available workarounds. @@ -53,7 +39,7 @@ CREATE TABLE "Post" ( #### Result of introspection in Prisma ORM versions 2._x_ and later -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model Post { id String @id published Boolean @@ -68,29 +54,17 @@ Because the `DEFAULT` constraint has not been added to the database when mapping You can alter the column to add the `DEFAULT` constraint as follows: - - ```sql ALTER TABLE "Post" ALTER COLUMN published SET DEFAULT false; ``` - - - - -```sql -ALTER TABLE `Post` - ALTER COLUMN published SET DEFAULT false; -``` - - - After this adjustment, you can re-introspect your database and the `@default` attribute will be added to the `published` field: -```prisma line-number file=schema.prisma highlight=3;normal +```prisma line-number file=schema.prisma highlight=3;normal showLineNumbers model Post { id String @id + //highlight-next-line published Boolean @default(false) } ``` @@ -99,9 +73,10 @@ model Post { You can add the `@default` attribute to the Prisma model: -```prisma line-number file=schema.prisma highlight=3;add +```prisma line-number file=schema.prisma highlight=3;add showLineNumbers model Post { id String + //add-next-line published Boolean @default(false) } ``` @@ -134,7 +109,7 @@ CREATE TABLE "Post" ( #### Result of introspection in Prisma ORM versions 2._x_ and later -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model Post { id String @id } @@ -146,8 +121,9 @@ Because there's no indication of the CUID behavior in the database, Prisma ORM's As a workaround, you can manually add the `@default(cuid())` attribute to the Prisma model: -```prisma line-number file=schema.prisma highlight=2;add +```prisma line-number file=schema.prisma highlight=2;add showLineNumbers model Post { + //add-next-line id String @id @default(cuid()) } ``` @@ -184,7 +160,7 @@ CREATE TABLE "Post" ( #### Result of introspection in Prisma ORM 2._x_ and later versions -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model Post { id String @id createdAt DateTime @@ -204,7 +180,7 @@ ALTER TABLE "Post" After this adjustment, you can re-introspect your database and the `@default` attribute will be added to the `createdAt` field: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model Post { id String createdAt DateTime @default(now()) @@ -218,6 +194,7 @@ As a workaround, you can manually add the `@default(now())` attribute to the Pri ```prisma line-number file=schema.prisma highlight=3;normal model Post { id String @id + //highlight-next-line createdAt DateTime @default(now()) } ``` @@ -254,7 +231,7 @@ CREATE TABLE "Post" ( #### Result of introspection in Prisma ORM 2._x_ and later versions -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model Post { id String @id updatedAt DateTime @@ -270,6 +247,7 @@ As a workaround, you can manually add the `@updatedAt` attribute to the Prisma m ```prisma line-number file=schema.prisma highlight=3;add model Post { id String @id + //add-next-line updatedAt DateTime @updatedAt } ``` @@ -320,7 +298,7 @@ CREATE TABLE "Profile" ( #### Result of introspection in Prisma ORM 2._x_ and later versions -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model User { id String @id Profile Profile[] @@ -341,29 +319,17 @@ Because there's no `UNIQUE` constraint defined on the `user` column (which repre You can alter the foreign key column to add the `UNIQUE` constraint as follows: - - ```sql ALTER TABLE "Profile" ADD CONSTRAINT userId_unique UNIQUE ("user"); ``` - - - - -```sql -ALTER TABLE `Profile` - ADD CONSTRAINT userId_unique UNIQUE (`user`); -``` - - - After this adjustment, you can re-introspect your database and the 1-1 relation will be properly recognized: ```prisma line-number file=schema.prisma highlight=3;normal model User { id String @id + //highlight-next-line Profile Profile? } @@ -422,7 +388,7 @@ CREATE INDEX "_PostToUser_B" ON "_PostToUser"("B" text_ops); #### Result of introspection in Prisma ORM 2._x_ and later versions -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model User { id String @id Post Post[] @relation(references: [id]) @@ -440,8 +406,6 @@ Because the relation table that was created by Prisma 1 uses the same [conventio As a workaround, you can migrate the data into a structure that's compatible with Prisma ORM's 1-n relation: - - 1. Create new column `authorId` on the `Post` table. This column should be a _foreign key_ that references the `id` field of the `User` table: ```sql ALTER TABLE "Post" ADD COLUMN "authorId" VARCHAR(25); @@ -464,42 +428,21 @@ As a workaround, you can migrate the data into a structure that's compatible wit DROP TABLE "_PostToUser"; ``` - - - - -1. Create new column `authorId` on the `Post` table. This column should be a _foreign key_ that references the `id` field of the `User` table: - ```sql - ALTER TABLE `Post` ADD COLUMN `authorId` VARCHAR(25); - ALTER TABLE `Post` ADD FOREIGN KEY (`authorId`) REFERENCES `User` (`id`); - ``` -1. Write a SQL query that reads all the rows from the `_PostToUser` relation table and for each row: - 1. Finds the respective `Post` record by looking up the value from column `A` - 1. Inserts the value from column `B` as the value for `authorId` into that `Post` record - ```sql - UPDATE Post, _PostToUser - SET Post.authorId = _PostToUser.B - WHERE Post.id = _PostToUser.A - ``` -1. Delete the `_PostToUser` relation table - ```sql - DROP TABLE `_PostToUser`; - ``` - - - After that you can introspect your database and the relation will now be recognized as 1-n: ```prisma line-number file=schema.prisma highlight=3,8,9;normal model User { id String @id + //highlight-next-line Post Post[] } model Post { id String @id + //highlight-start User User @relation(fields: [authorId], references: [id]) authorId String + //highlight-end } ``` @@ -531,7 +474,7 @@ CREATE TABLE "User" ( #### Result of introspection in Prisma ORM 2._x_ and later versions -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model User { id String @id jsonData String? @@ -542,27 +485,16 @@ model User { You can manually change the type of the column to `JSON` - - ```sql ALTER TABLE "User" ALTER COLUMN "jsonData" TYPE JSON USING "jsonData"::json; ``` - - - - -```sql -ALTER TABLE User MODIFY COLUMN jsonData JSON; -``` - - - After this adjustment, you can re-introspect your database and the field will now be recognized as `Json`: -```prisma line-number file=schema.prisma highlight=3;normal +```prisma line-number file=schema.prisma highlight=3;normal showLineNumbers model User { id String @id + //highlight-next-line jsonData Json? } ``` @@ -600,7 +532,7 @@ CREATE TABLE "User" ( #### Result of introspection in Prisma ORM 2._x_ and later versions -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model User { id String @id role String? @@ -623,16 +555,19 @@ You can manually turn the `role` column into an enum with your desired values: After introspection, the type is now properly recognized as an enum: -```prisma line-number file=schema.prisma highlight=3,6-9;normal +```prisma line-number file=schema.prisma highlight=3,6-9;normal showLineNumbers model User { id String @id + //highlight-next-line role Role? } +//highlight-start enum Role { ADMIN CUSTOMER } +//highlight-end ``` ## Mismatching CUID length @@ -661,7 +596,7 @@ CREATE TABLE "User" ( #### Result of introspection in Prisma ORM 2._x_ and later versions -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model User { id String @id } @@ -671,24 +606,10 @@ model User { You can manually turn the `VARCHAR(25)` columns into `VARCHAR(30)`: - - ```sql ALTER TABLE "User" ALTER COLUMN "id" SET DATA TYPE character varying(30); ``` - - - - -```sql -SET FOREIGN_KEY_CHECKS=0; -ALTER TABLE `User` CHANGE `id` `id` char(30) CHARACTER SET utf8 NOT NULL; -SET FOREIGN_KEY_CHECKS=1; -``` - - - > **Note**: When fixing this issue with the [Upgrade CLI](/orm/more/upgrade-guides/upgrade-from-prisma-1/how-to-upgrade#prisma-1-upgrade-cli), the generated SQL statements will keep appearing in the Upgrade CLI even after you have changed the column types in the underlying database. This is a currently a limitation in the Upgrade CLI. ## Scalar lists (arrays) are maintained with extra table @@ -730,7 +651,7 @@ CREATE UNIQUE INDEX "User_coinflips_pkey" ON "User_coinflips"("nodeId" text_ops, #### Result of Prisma ORM 2 introspection -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model User { id String @id User_coinflips User_coinflips[] @@ -748,7 +669,9 @@ model User_coinflips { Note that you can now generate Prisma Client and you'll be able to access the data from the scalar lists through the extra table. PostgreSQL users can alternatively migrate the data into a native PostgreSQL array and continue to benefit from the slicker Prisma Client API for scalar lists (read the section below for more info). -
Expand for sample Prisma Client API calls +
+ +Expand for sample Prisma Client API calls To access the coinflips data, you will now have to always [`include`](/orm/prisma-client/queries/select-fields#include-relations-and-select-relation-fields) it in your queries: @@ -792,7 +715,7 @@ const currentCoinflips = user!.coinflips.map((cf) => cf.value) Here's the value of `currentCoinflips` after the call to `map`: -```json5 +```json [false, true, false, true, true, false] ``` @@ -828,7 +751,7 @@ However, in order to do so you need to manually migrate the underlying data from You can now introspect your database and the `coinflips` field will be represented as an array in your new Prisma schema: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model User { id String @id coinflips Boolean[] diff --git a/content/200-orm/800-more/300-upgrade-guides/800-upgrade-from-prisma-1/03-upgrading-the-prisma-layer-mysql.mdx b/content/200-orm/800-more/300-upgrade-guides/800-upgrade-from-prisma-1/03-upgrading-the-prisma-layer-mysql.mdx new file mode 100644 index 0000000000..3f6cf10169 --- /dev/null +++ b/content/200-orm/800-more/300-upgrade-guides/800-upgrade-from-prisma-1/03-upgrading-the-prisma-layer-mysql.mdx @@ -0,0 +1,1311 @@ +--- +title: 'Upgrading the Prisma ORM layer' +metaTitle: 'Upgrading the Prisma ORM layer to Prisma ORM 2 | MySQL' +metaDescription: 'Learn how to upgrade the Prisma ORM layer to Prisma ORM 2 and create your Prisma schema with MySQL' +dbSwitcher: ['postgresql', 'mysql'] +sidebar_class_name: hidden-sidebar +pagination_next: orm/more/upgrade-guides/upgrade-from-prisma-1/upgrading-nexus-prisma-to-nexus +slugSwitch: /orm/more/upgrade-guides/upgrade-from-prisma-1/upgrading-the-prisma-layer- +--- + +## Overview + +This page explains the first step of your upgrade process: Taking your Prisma 1 configuration and upgrading it to Prisma ORM 2. Concretely, you will learn how to: + +1. Add the Prisma ORM 2 CLI as a development dependency +1. Create your Prisma ORM 2 schema +1. Determine your connection URL and connect to your database +1. Introspect your database (that was so far managed with Prisma 1) +1. Use the [Prisma 1 Upgrade CLI](/orm/more/upgrade-guides/upgrade-from-prisma-1/how-to-upgrade#prisma-1-upgrade-cli) to resolve the [schema incompatibilities](/orm/more/upgrade-guides/upgrade-from-prisma-1/schema-incompatibilities-mysql) in the new Prisma ORM 2 data model +1. Install and generate Prisma Client + +Once done with these steps, you can move on to the next guide that explains how you can upgrade the application layer to use Prisma Client for your database queries. + +> **Note**: During the upgrade process it can be helpful to get a graphical view on your database. It is therefore recommended to use a graphical database client to connect to your database, such as [TablePlus](https://tableplus.com/) or [Postico](https://eggerapps.at/postico/). + +## 1. Install Prisma ORM 2 CLI + +The Prisma ORM 2 CLI is available as the [`prisma`](https://www.npmjs.com/package/prisma) package on npm and is invoked via the `prisma` command. + +Note that the former `prisma` command for Prisma 1 has been renamed to `prisma1`. You can learn more about this [here](https://www.prisma.io/blog/prisma-2-beta-b7bcl0gd8d8e#renaming-the-prisma2-cli). + +You can install the Prisma ORM 2 CLI in your Node.js project as follows (be sure to invoke this command in the directory where your `package.json` is located): + +```terminal copy +npm install prisma --save-dev +``` + +> **Note**: With Prisma 1, it was usually recommended to install the CLI globally. We now recommend to [install the Prisma CLI locally](/orm/tools/prisma-cli#installation) to prevent version conflicts. + +You can now use the local installation of the `prisma` CLI by prefixing it with `npx`: + +```terminal +npx prisma +``` + +If you're upgrading your entire project [all at once](/orm/more/upgrade-guides/upgrade-from-prisma-1/how-to-upgrade#upgrade-strategies), you can now also uninstall the Prisma 1 CLI (otherwise expand below): + +```terminal +# remove global installation +npm uninstall -g prisma1 + +# remove local installation +npm uninstall prisma1 +``` + +
+ +
+ +Expand if you want to keep using your Prisma 1 CLI side-by-side + +If you want to keep using the Prisma 1 CLI, it is recommend to remove your global installation of it and add the `prisma1` CLI as a development dependency: + +```terminal +# installs v1.34 of the Prisma 1 CLI +npm uninstall -g prisma +npm install prisma1 --save-dev +``` + +You can now invoke it as follows: + +```terminal +npx prisma1 +``` + +Note that if you need a CLI version smaller than 1.34 (e.g. 1.30), you can install it as follows: + +```terminal +# installs v1.30 of the Prisma 1 CLI +npm uninstall -g prisma@1.30 +npm install prisma@1.30 --save-dev +``` + +You can now invoke it as follows: + +```terminal +npx prisma +``` + +
+ +## 2. Create your Prisma ORM 2 schema + +For this guide, you'll first create a new Prisma schema using the `prisma init` command and then "fill" it with a data model using [introspection](/orm/prisma-schema/introspection). + +Run the following command to create your Prisma schema (note that this throws an error if you already have a folder called `prisma`): + +```terminal copy +npx prisma init +``` + +If you're seeing the following error, you need to rename your current `prisma` directory: + +```no-lines +ERROR A folder called prisma already exists in your project. + Please try again in a project that is not yet using Prisma. +``` + +You can rename the current `prisma` directory to `prisma1` to make it clear that this holds the former Prisma 1 configuration: + +```terminal copy +mv prisma prisma1 +``` + +Now you can run `init` and it will succeed: + +```terminal copy +npx prisma init +``` + +It should print the following output: + +```no-lines wrap +✔ Your Prisma schema was created at prisma/schema.prisma. + You can now open it in your favorite editor. + +Next steps: +1. Set the `DATABASE_URL` in the `.env` file to point to your existing database. If your database has no tables yet, read https://pris.ly/d/getting-started +2. Set the `provider` of your `datasource` block in `schema.prisma` to match your database: `postgresql`, `mysql` or `sqlite`. +3. Run `prisma db pull` to turn your database schema into a Prisma data model. +4. Run `prisma generate` to install Prisma Client. You can then start querying your database. + +More information in our documentation: +https://pris.ly/d/getting-started +``` + +The command created a new folder called `prisma`, and two files: + +- `prisma/schema.prisma`: Your Prisma schema file that specifies the [data source](/orm/prisma-schema/overview/data-sources), [generator](/orm/prisma-schema/overview/generators) and [data model](/orm/prisma-schema/data-model/models) (note that the data model doesn't exist yet, it will be generated via introspection). +- `.env`: A [dotenv](https://github.com/motdotla/dotenv#readme) file to configure your database [connection URL](/orm/reference/connection-urls). + +Your initial Prisma schema looks as follows: + +```prisma file=schema.prisma showLineNumbers +// This is your Prisma schema file, +// learn more about it in the docs: https://pris.ly/d/prisma-schema + +datasource db { + provider = "mysql" + url = env("DATABASE_URL") +} + +generator client { + provider = "prisma-client-js" +} +``` + +With Prisma 1, you specify which language variant of Prisma Client you wanted to use in your `prisma.yml`. With Prisma ORM 2, this information is now specified inside the Prisma schema via a `generator` block. + +> **Note**: Unlike Prisma 1, the TypeScript and JavaScript variants of Prisma Client 2.0 use the _same_ generator called `prisma-client-js`. The generated types in `index.d.ts` are _always_ included, even in plain JavaScript projects. This enables feature like autocompletion in VS Code even when not using TypeScript. + +## 3. Determine your connection URL and connect to your database + +With Prisma 1, the database connection is configured in the Docker Compose file that's used to launch the Prisma ORM server. The Prisma ORM server then exposes a GraphQL endpoint (via HTTP) that proxies all database requests from the Prisma Client application code. That HTTP endpoint is specified in your `prisma.yml`. + +With Prisma ORM 2, the HTTP layer isn't exposed any more and Prisma Client 2.0 is configured to run requests "directly" against the database (that is, requests are proxied by Prisma ORM's [query engine](/orm/more/under-the-hood/engines), but there isn't an extra server any more). + +So, as a next step you'll need to tell Prisma ORM 2 _what_ kind of database you use (MySQL or PostgreSQL) and _where_ it is located. + +First, you need to ensure that that `provider` field on the `datasource` block inside `schema.prisma` is configured to use the right database: + +- If you're using PostgreSQL, it needs to define the value `"postgresql"` in the `provider` field. +- If you're using MySQL, it needs to define the value `"mysql"` in the `provider` field. + +Switch around with the tabs in the code block to see examples of both: + + + + +```prisma +datasource db { + provider = "postgresql" + url = env("DATABASE_URL") +} +``` + + + + +```prisma +datasource db { + provider = "mysql" + url = env("DATABASE_URL") +} +``` + + + + +With the `provider` field set, you can go ahead and configure the connection URL inside the `.env` file. + +Assume the database configuration in your Docker Compose file that you used to deploy your Prisma ORM server looks as follows: + +```yml file=docker-compose.yml +PRISMA_CONFIG: | + port: 4466 + databases: + default: + connector: mysql + host: mysql + port: 3306 + user: root + password: randompassword +``` + +Also assume your `endpoint` in `prisma.yml` is configured as follows: + +```yml file=prisma.yml +endpoint: http://localhost:4466/myproject/dev +``` + +Based on these connection details, you need to configure the `DATABASE_URL` environment variable inside your `.env` file as follows: + +```bash file=.env +DATABASE_URL="mysql://root:randompassword@localhost:3306/myproject@dev" +``` + +Note that the _database name_ in the connection URL is typically composed of your _service name_ and _service stage_ (which are part of the `endpoint` in `prisma.yml`), separated by the `@` character. + +Sometimes no service name and stage are specified in `prisma.yml`: + +```yml file=prisma.yml +endpoint: http://localhost:4466/ +``` + +In that case, the database name must be specified as follows: + +```bash file=.env +DATABASE_URL="mysql://root:randompassword@localhost:3306/default@default" +``` + +Learn more on the [Connection URLs](/orm/reference/connection-urls) page. + +## 4. Introspect your database + +For the purpose of this guide, we'll use the following Prisma 1 data model (select the **SQL** tab below to see what the data model maps to in SQL): + + + + +```graphql +type User { + id: ID! @id + email: String @unique + name: String! + role: Role! @default(value: CUSTOMER) + jsonData: Json + profile: Profile + posts: [Post!]! +} + +type Post { + id: ID! @id + createdAt: DateTime! @createdAt + updatedAt: DateTime! @updatedAt + title: String! + content: String + published: Boolean! @default(value: false) + author: User @relation(link: TABLE) + categories: [Category!]! +} + +type Profile { + id: ID! @id + bio: String + user: User! @relation(link: INLINE) +} + +type Category { + id: ID! @id + name: String! + posts: [Post!]! +} + +enum Role { + ADMIN + CUSTOMER +} +``` + + + + +```sql +CREATE TABLE"User" ( + id character varying(25) PRIMARY KEY, + email text, + name text NOT NULL, + role text NOT NULL, + "jsonData" text +); +CREATE UNIQUE INDEX "User_pkey" ON"User"(id text_ops); +CREATE UNIQUE INDEX "default$default.User.email._UNIQUE" ON"User"(email text_ops); + +CREATE TABLE"Post" ( + id character varying(25) PRIMARY KEY, + title text NOT NULL, + published boolean NOT NULL, + "createdAt" timestamp(3) without time zone NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL, + content text +); +CREATE UNIQUE INDEX "Post_pkey" ON"Post"(id text_ops); + +CREATE TABLE"Profile" ( + id character varying(25) PRIMARY KEY, + bio text, + user character varying(25) REFERENCES"User"(id) ON DELETE SET NULL +); +CREATE UNIQUE INDEX "Profile_pkey" ON"Profile"(id text_ops); + +CREATE TABLE"Category" ( + id character varying(25) PRIMARY KEY, + name text NOT NULL +); +CREATE UNIQUE INDEX "Category_pkey" ON"Category"(id text_ops); + +CREATE TABLE"_PostToUser" ( + "A" character varying(25) NOT NULL REFERENCES"Post"(id) ON DELETE CASCADE, + "B" character varying(25) NOT NULL REFERENCES"User"(id) ON DELETE CASCADE +); +CREATE UNIQUE INDEX "_PostToUser_AB_unique" ON"_PostToUser"("A" text_ops,"B" text_ops); +CREATE INDEX "_PostToUser_B" ON"_PostToUser"("B" text_ops); + +CREATE TABLE"_CategoryToPost" ( + "A" character varying(25) NOT NULL REFERENCES"Category"(id) ON DELETE CASCADE, + "B" character varying(25) NOT NULL REFERENCES"Post"(id) ON DELETE CASCADE +); +CREATE UNIQUE INDEX "_CategoryToPost_AB_unique" ON"_CategoryToPost"("A" text_ops,"B" text_ops); +CREATE INDEX "_CategoryToPost_B" ON"_CategoryToPost"("B" text_ops); +``` + + + + +Note that this data model has three [relations](/orm/prisma-schema/data-model/relations): + +- 1-1: `User` ↔ `Profile` +- 1-n: `User` ↔ `Post` (maintained via the `_PostToUser` relation table) +- m-n: `Post` ↔ `Category` (maintained via the `_CategoryToPost` relation table) + +Now you can run Prisma ORM's introspection against your database with the following command: + +```terminal copy +npx prisma db pull +``` + +Here's a graphical illustration for what happens when `db pull` is invoked: + +![Introspect your database](/img/orm/prisma-db-pull-generate-schema.png) + +For the above Prisma 1 datamodel, this results in the following Prisma ORM 2 schema (note that the models have been reordered to match the initial order of the Prisma 1 datamodel): + +```prisma file=schema.prisma showLineNumbers +model User { + id String @id @default(cuid()) + email String? @unique + name String + role String + jsonData String? + Profile Profile[] + Post Post[] +} + +model Post { + id String @id @default(cuid()) + createdAt DateTime + updatedAt DateTime + title String + content String? + published Boolean + Category Category[] + User User[] +} + +model Profile { + id String @id @default(cuid()) + bio String? + user String? @unique + User User? @relation(fields: [user], references: [id]) +} + +model Category { + id String @id @default(cuid()) + name String + Post Post[] +} +``` + +While this is already a valid Prisma ORM 2 schema, it lacks a number of _features_ that were part of its Prisma 1 equivalent: + +- no auto-generated date values for the `createdAt` and `updatedAt` fields on `Post` +- no default value for the `role` field on `User` +- no default value for the `published` field on `Post` + +There further are a number of inconsistencies which result in a less idiomatic/ergonomic Prisma Client API: + +- `User` ↔ `Profile` is a 1-n instead of 1-1 relation +- `User` ↔ `Post` is a m-n instead of 1-n relation +- relation fields are uppercased (e.g. `Profile` and `Post` on `User`) +- the `jsonData` field on `User` is of type `String` instead of `Json` +- the `role` field on `User` is of type `String` instead of `Role`, the `enum` definition for role is missing altogether + +While these inconsistencies don't actually impact the "feature set" you'll have available in your Prisma Client API, they make you lose certain constraints/guarantees that were present before. + +For example, Prisma ORM now won't guarantee that a `User` is connected to _at most_ one `Profile` because the relation between the tables was recognized as 1-n during introspection, so one `User` record _could_ now get connected to multiple `Profile` records. + +Another issue is that you can store whatever text for the `jsonData` and `role` fields, regardless of whether it's valid JSON or represents a value of the `Role` enum. + +To learn more about these inconsistencies check out the [Schema incompatibilities](/orm/more/upgrade-guides/upgrade-from-prisma-1/schema-incompatibilities-mysql) page. + +In the following, we'll go through these incompatibilities and fix them one by one using the Prisma schema upgrade CLI. + +## 5. Use the Prisma schema upgrade CLI to resolve schema incompatibilities + +The [Prisma 1 Upgrade CLI](/orm/more/upgrade-guides/upgrade-from-prisma-1/how-to-upgrade#prisma-1-upgrade-cli) is an interactive tool that helps you upgrading your Prisma schema and ironing out most of the inconsistencies listed above. + +The Prisma 1 Upgrade CLI works in two major phases: + +1. Fix the database schema via plain SQL +1. Add missing attributes to the Prisma ORM 2 schema and other schema fixes + +During the first phase, it will generate and print a number of SQL statements that you should run against your database to adjust the database schema. You can either run all of the statements or a subset of them before continuing to the second phase. + +During the second phase, you don't need to do anything manually. The Upgrade CLI will make changes to your Prisma schema by adding certain Prisma ORM-level attributes (like `@default(cuid))` or `@updatedAt`), adjusting the names of relation fields to match the ones from your Prisma 1 datamodel and ensure 1-1-relations that were required on both sides in your Prisma 1 datamodel are also required in the Prisma ORM 2 schema. + +Note that **you can start over at any time during the process** and go back from the second to the first phase. + +In this illustration, the green area shows the first phase, the blue area shows the second phase. Note that you can optionally run `prisma db pull` in between the phases to update your Prisma ORM data model: + +![Fixing the schema incompatibilities](./images/fix-schema-incompatibilities.png) + +To use the Upgrade CLI, you can either install it locally in your project, or invoke it once without installation using `npx` as done here: + +```terminal copy +npx prisma-upgrade prisma1/prisma.yml prisma/schema.prisma +``` + +The CLI will greet you with the following message: + +```no-lines wrap +◮ Welcome to the interactive Prisma Upgrade CLI that helps with the +upgrade process from Prisma 1 to Prisma ORM 2. + +Please read the docs to learn more about the upgrade process: +https://pris.ly/d/how-to-upgrade + +➤ Goal +The Upgrade CLI helps you resolve the schema incompatibilities +between Prisma 1 and Prisma ORM 2. Learn more in the docs: +https://pris.ly/d/schema-incompatibilities + +➤ How it works +Throughout the process, you'll need to adjust your database schema by sending +SQL statements to it. The SQL statements are provided by the Upgrade CLI. + +Note that the Upgrade CLI never makes changes to your database, +you are in full control over any operations that are executed against it. + +You can stop and re-run the Upgrade CLI at any time. + +These are the different steps of the upgrade process: + + 1. The Upgrade CLI generates SQL commands for you to run on your database. + 2. You run the SQL commands against your database. + 3. You run the `npx prisma db pull` command again. + 4. You run the `npx prisma-upgrade` command again. + 5. The Upgrade CLI adjusts the Prisma ORM 2 schema by adding missing attributes. + +➤ Note +It is recommended that you make a full backup of your existing data before starting +the upgrade process. If possible, the migration should be performed in a staging +environment before executed against a production environment. + +➤ Help +If you have any questions or run into any problems along the way, +please create an issue at: +https://github.com/prisma/upgrade/issues/new + +Are you ready? [Y/n] +``` + +Press the Y button, then confirm by hitting RETURN on your keyboard to continue. + +Once you confirmed, the CLI outputs the SQL statements you should be running against your database: + +```no-lines wrap +➤ Adjust your database schema +Run the following SQL statements against your database: + + Fix columns with ENUM data types + https://pris.ly/d/schema-incompatibilities#enums-are-represented-as-text-in-database + + ALTER TABLE `User` CHANGE `role` `role` ENUM('ADMIN', 'CUSTOMER') NOT NULL; + + + Add missing `DEFAULT` constraints to the database + https://pris.ly/d/schema-incompatibilities#default-values-arent-represented-in-database + + ALTER TABLE `User` CHANGE `role` `role` ENUM('ADMIN', 'CUSTOMER') NOT NULL DEFAULT 'CUSTOMER'; + ALTER TABLE `Post` CHANGE `published` `published` TINYINT(1) NOT NULL DEFAULT 0; + + + Fix columns with JSON data types + https://pris.ly/d/schema-incompatibilities#json-type-is-represented-as-text-in-database + + ALTER TABLE `User` CHANGE `jsonData` `jsonData` JSON ; + + + Replicate `@createdAt` behavior in Prisma ORM 2.0 + https://pris.ly/d/schema-incompatibilities#createdat-isnt-represented-in-database + + ALTER TABLE `Post` CHANGE `createdAt` `createdAt` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP; + + + Fix 1-1 relations by adding `UNIQUE` constraints + https://pris.ly/d/schema-incompatibilities#inline-1-1-relations-are-recognized-as-1-n-missing-unique-constraint + + ALTER TABLE `Profile` ADD UNIQUE (`user`); + + + Migrate IDs from varchar(25) to varchar(30) + https://pris.ly/d/schema-incompatibilities#mismatching-cuid-length + + SET FOREIGN_KEY_CHECKS=0; + ALTER TABLE `Category` CHANGE `id` `id` char(30) CHARACTER SET utf8 NOT NULL; + ALTER TABLE `Post` CHANGE `id` `id` char(30) CHARACTER SET utf8 NOT NULL; + ALTER TABLE `Profile` CHANGE `id` `id` char(30) CHARACTER SET utf8 NOT NULL; + ALTER TABLE `Profile` CHANGE `user` `user` char(30) CHARACTER SET utf8 ; + ALTER TABLE `User` CHANGE `id` `id` char(30) CHARACTER SET utf8 NOT NULL; + SET FOREIGN_KEY_CHECKS=1; + +➤ Breaking changes detected + +In order to fully optimize your database schema, you'll need to run a few SQL +statements that can break your Prisma 1 setup. Note that these changes are optional +and if you are upgrading gradually and running Prisma 1 and Prisma ORM 2 side-by-side, +you should not perform these changes yet. Instead, you can perform them whenever +you are ready to completely remove Prisma 1 from your project. +If you are upgrading all at once, you can safely perform these changes now. + +Learn more in the docs: +https://pris.ly/d/how-to-upgrade' +``` + +> **Note**: If you're seeing the note about breaking changes, you can ignore it for now. We'll discuss it later. + +The shown SQL statements are categorized into a number of "buckets", all aiming to resolve a certain [schema incompatibility](/orm/more/upgrade-guides/upgrade-from-prisma-1/schema-incompatibilities-mysql): + +- Fix columns with ENUM data types +- Add missing `DEFAULT` constraints to the database +- Fix columns with JSON data types +- Replicate `@createdAt` behavior in Prisma 2 +- Fix 1-1 relations by adding `UNIQUE` constraints + +As a next step, you can start sending the SQL statements to your database. Note that all of these changes are non-breaking and you'll be able to continue using Prisma 1 side-by-side with Prisma ORM 2. + +The next sections cover the different kinds of SQL statements to be sent to your database individually. + +### 5.1. Fix the database schema via plain SQL (non-breaking) + +In this section, we'll walk through the printed SQL statements and run them against the database one by one. + +### 5.1.1. Fix columns with ENUM data types + +The first thing the tool does is help you ensure that `enum` definitions in your Prisma 1 datamodel will be represented as actual `ENUM` types in the underlying database, right now they are represented as plain strings (e.g. as `MEDIUMTEXT` in MySQL). + +The CLI currently shows the following output: + +```no-lines wrap +Fix columns with ENUM data types +https://pris.ly/d/schema-incompatibilities#enums-are-represented-as-text-in-database + + ALTER TABLE `User` CHANGE `role` `role` ENUM('ADMIN', 'CUSTOMER') NOT NULL; +``` + +Go ahead and run these statements against your database now. + +![Altering columns to use ENUM with SQL](./images/altering-columns-to-use-enum.png) + +### 5.1.2. Add missing `DEFAULT` constraints to the database + +Next, the Upgrade CLI helps you resolve the issue that [default values aren't represented in the database](/orm/more/upgrade-guides/upgrade-from-prisma-1/schema-incompatibilities-mysql#default-values-arent-represented-in-database) by generating SQL statements that add the respective `DEFAULT` constraints directly to the database. + +In this case, two `DEFAULT` constraints are missing which are suggested by the tool: + +```no-lines wrap +Add missing `DEFAULT` constraints to the database +https://pris.ly/d/schema-incompatibilities#default-values-arent-represented-in-database + + ALTER TABLE `User` CHANGE `role` `role` ENUM('ADMIN', 'CUSTOMER') NOT NULL DEFAULT 'CUSTOMER'; + ALTER TABLE `Post` CHANGE `published` `published` TINYINT(1) NOT NULL DEFAULT 0; +``` + +You can now run these SQL statements against your database either using a command line client or a GUI like TablePlus: + +![TablePlus GUI](./images/TablePlus-GUI.png) + +### 5.1.3. Fix columns with JSON data types + +Next, the tool helps you ensure that `Json` fields in your Prisma 1 datamodel will be represented as `JSON` columns in the underlying database, right now they are represented as plain strings (e.g. as `MEDIUMTEXT` in MySQL). + +Changing the column type to `JSON` will ensure that the field is properly recognized as `Json` during Prisma ORM 2 introspection. + +The CLI currently shows the following output: + +```no-lines wrap +Fix columns with JSON data types +https://pris.ly/d/schema-incompatibilities#json-type-is-represented-as-text-in-database + + ALTER TABLE `User` CHANGE `jsonData` `jsonData` JSON ; +``` + +You can now run these SQL statements against your database either using a command line client or a GUI like TablePlus: + +![TablePlus GUI](./images/fix-columns-with-json-data-types.png) + +### 5.1.4. Replicate `@createdAt` behavior in Prisma ORM 2 + +The next thing the tools does is help you resolve the issue that the behavior of [`@createdAt` isn't represented in database](/orm/more/upgrade-guides/upgrade-from-prisma-1/schema-incompatibilities-mysql#default-values-arent-represented-in-database) + +The CLI currently shows the following output: + +```no-lines wrap +Replicate `@createdAt` behavior in Prisma ORM 2.0 +https://pris.ly/d/schema-incompatibilities#createdat-isnt-represented-in-database + + ALTER TABLE `Post` CHANGE `createdAt` `createdAt` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP; +``` + +You can now run these SQL statements against your database either using a command line client or a GUI like TablePlus. + +### 5.1.5. Fix 1-1 relations by adding `UNIQUE` constraints + +Now, the tool will help you [turn the current 1-n relation between `User` ↔ `Profile` back into a 1-1 relation](/orm/more/upgrade-guides/upgrade-from-prisma-1/schema-incompatibilities-mysql#inline-1-1-relations-are-recognized-as-1-n-missing-unique-constraint) by adding a `UNIQUE` constraint to the foreign key column called `user` (named after the relation field in the Prisma 1 datamodel) in the database. + +The CLI currently shows the following output: + +```no-lines wrap +Fix 1-1 relations by adding `UNIQUE` constraints +https://pris.ly/d/schema-incompatibilities#inline-1-1-relations-are-recognized-as-1-n-missing-unique-constraint + + ALTER TABLE `Profile` ADD UNIQUE (`user`); +``` + +You can now run these SQL statements against your database either using a command line client or a GUI like TablePlus. + +### 5.1.6. Fix mismatch of CUID length + +> **Note**: These SQL statements will keep appearing in the Upgrade CLI even after you have changed the column types in the underlying database. This is a currently a limitation in the Upgrade CLI. + +Finally, the tool will help you [turn the current ID columns of type `VARCHAR(25)` into `VARCHAR(30)`](/orm/more/upgrade-guides/upgrade-from-prisma-1/schema-incompatibilities-mysql#mismatching-cuid-length) by adding a `UNIQUE` constraint to the foreign key column called `user` (named after the relation field in the Prisma 1 datamodel) in the database. + +The CLI currently shows the following output: + +```no-lines wrap +Migrate IDs from varchar(25) to varchar(30) +https://pris.ly/d/schema-incompatibilities#mismatching-cuid-length + +SET FOREIGN_KEY_CHECKS=0; +ALTER TABLE `Category` CHANGE `id` `id` char(30) CHARACTER SET utf8 NOT NULL; +ALTER TABLE `Post` CHANGE `id` `id` char(30) CHARACTER SET utf8 NOT NULL; +ALTER TABLE `Profile` CHANGE `id` `id` char(30) CHARACTER SET utf8 NOT NULL; +ALTER TABLE `Profile` CHANGE `user` `user` char(30) CHARACTER SET utf8 ; +ALTER TABLE `User` CHANGE `id` `id` char(30) CHARACTER SET utf8 NOT NULL; +SET FOREIGN_KEY_CHECKS=1; +``` + +You can now run these SQL statements against your database either using a command line client or a GUI like TablePlus. + +### 5.1.7. Breaking changes detected + +In case the Upgrade CLI has printed a note about breaking changes, your database schema needs some adjustments that will break Prisma 1 compatibility in order to be fully optimized. + +If there are no breaking changes detected, you can [skip forward to section 5.2](#52-re-introspect-your-database-to-update-your-prisma-schema) + +Depending on your [upgrade strategy](/orm/more/upgrade-guides/upgrade-from-prisma-1/how-to-upgrade#upgrade-strategies), you can either perform these changes now or skip to the next phase of the Upgrade CLI: + +- If you are following the gradual side-by-side upgrade strategy, do not perform these changes yet since they will break your Prisma 1 setup. In that case, you can continue to the next phase of the Upgrade CLI by typing n and hitting RETURN. +- If you are following the all at once upgrade strategy, you can perform these changes now. In that case, continue by typing Y and hitting RETURN. + +### 5.2. Fix the database schema via plain SQL (breaking) + +In this section, you'll resolve the schema incompatibilities that are breaking your Prisma 1 setup. Do not perform these changes if you are still running Prisma 1 in your project! + +### 5.2.1. Fix incorrect m-n relations + +Now, the Upgrade CLI helps you fix all 1-1 and 1-n relations that Prisma 1 represents with relation tables and that [currently only exist as m-n relations](/orm/more/upgrade-guides/upgrade-from-prisma-1/schema-incompatibilities-mysql#all-non-inline-relations-are-recognized-as-m-n) in your new Prisma ORM 2 schema. Concretely, this is the case for the `User` ↔ `Post` relation which currently is defined as m-n but _should_ really be a 1-n relation. + +To fix this, you'll need to perform the following migration: + +1. Create a new foreign key column on `Post` to link directly to the `User` table. +1. Migrate the foreign key values from the relation table into the new foreign key column on `Post`. +1. Delete the relation table. + +These instructions are now printed by the CLI: + +```no-lines wrap +➤ Adjust your database schema +Run the following SQL statements against your database: + + Fix one-to-many table relations + https://pris.ly/d/schema-incompatibilities#all-non-inline-relations-are-recognized-as-m-n + + ALTER TABLE `Post` ADD COLUMN `authorId` char(25) CHARACTER SET utf8 ; + ALTER TABLE `Post` ADD CONSTRAINT author FOREIGN KEY (`authorId`) REFERENCES `User`(`id`); + UPDATE `Post`, `_PostToUser` SET `Post`.`authorId` = `_PostToUser`.B where `_PostToUser`.A = `Post`.`id`; + DROP TABLE `_PostToUser`; + + +➤ Next Steps + +After you executed one or more of the above SQL statements against your database, +please run the following two commands to refresh your Prisma ORM 2 Schema and check +the changes. + + 1. Run `npx prisma db pull` again to refresh your Prisma ORM 2 schema. + 2. Run `npx prisma-upgrade` again. + +If you can't or don't want to execute the remaining SQL statements right now, you can +skip to the last step where the Upgrade CLI adds missing attributes to your Prisma ORM 2 +schema that are not picked up by introspection. + +Skip to the last step? [Y/n]? +``` + +For this fix, you'll need to run three SQL statements: + +1. Create new column `authorId` on the `Post` table. This column should be a _foreign key_ that references the `id` field of the `User` table: + ```sql no-lines + ALTER TABLE `Post` ADD COLUMN `authorId` char(25) CHARACTER SET utf8 ; + ALTER TABLE `Post` ADD CONSTRAINT author FOREIGN KEY (`authorId`) REFERENCES `User`(`id`); + ``` +1. Write a SQL query that reads all the rows from the `_PostToUser` relation table and for each row: + 1. Finds the respective `Post` record by looking up the value from column `A` + 1. Inserts the value from column `B` as the value for `authorId` into that `Post` record + ```sql no-lines + UPDATE `Post`, `_PostToUser` SET `Post`.`authorId` = `_PostToUser`.B where `_PostToUser`.A = `Post`.`id`; + ``` +1. Delete the `_PostToUser` relation table + ```sql no-lines + DROP TABLE `_PostToUser`; + ``` + +![Fixing incorrect m-n relations with SQL](./images/fix-incorrect-m-n-relations-sql.png) + +After these commands, the user ID values of the records from column `B` of the relation table are migrated to the new `authorId` column. + +### 5.2. Re-introspect your database to update your Prisma schema + +At this point, you've resolved the schema incompatibilities with the Upgrade CLI. You can now exit the Upgrade CLI for now by typing n and hitting RETURN. + +In this section, you'll update your Prisma schema with another introspection round. This time, the previous flaws of the Prisma schema will be resolved because the database schema has been adjusted: + +```terminal copy +npx prisma db pull +``` + +This time, the resulting Prisma schema looks as follows: + +```prisma file=schema.prisma showLineNumbers +model User { + id String @id + name String + email String? @unique + jsonData Json? + role Role @default(CUSTOMER) + Post Post[] + Profile Profile? +} + +model Post { + id String @id + createdAt DateTime @default(now()) + updatedAt DateTime + title String + content String? + published Boolean @default(false) + authorId String? + User User? @relation(fields: [authorId], references: [id]) + Category Category[] @relation(references: [id]) +} + +model Category { + id String @id + name String + Post Post[] @relation(references: [id]) +} + +model Profile { + bio String? + id String @id + user String? @unique + User User? @relation(fields: [user], references: [id]) +} + +enum Role { + ADMIN + CUSTOMER +} +``` + +This schema has most issues resolved, but it still lacks the following: + +### 5.2. Add missing attributes to the Prisma 2 schema and other schema fixes + +The CLI now prints the following: + +```no-lines wrap +➤ What happens next +As a last step, some final adjustments will be made to your Prisma ORM 2 schema +to carry over some Prisma ORM-level attributes that aren't picked up by introspection. + +As a last step, some final adjustments will be made to your Prisma ORM 2.0 +schema to carry over some Prisma ORM-level attributes that aren't picked +up by introspection. + +Warning +Your current Prisma ORM 2.0 schema will be overwritten, so please +make sure you have a backup! + +Are you ready? [Y/n] +``` + +At this point, you either ran all the SQL statement that were printed by the CLI or you skipped some of them. Either way, you can now move on the last step and let the Upgrade CLI add the missing Prisma ORM 2 attributes. Typically these are the following: + +- `@default(cuid())` for your `@id` fields +- `@updatedAt` for any fields that were using this attribute in Prisma 1 +- `@map` and `@@map` as replacements for `@db` and `@@db` from Prisma 1 + +In that step, the Upgrade CLI also fixes other issues that occurred in the transition to Prisma ORM 2: + +- it makes sure that 1-1-relations that were required on both sides in Prisma 1 are also required in your Prisma ORM 2 schema +- it renames relation fields to the same names they had in your Prisma 1 datamodel ([coming soon](https://github.com/prisma/upgrade/issues/25)) + +To apply these changes, you can re-run the Upgrade CLI: + +```terminal copy +npx prisma-upgrade prisma1/prisma.yml prisma/schema.prisma +``` + +If you did not resolve all schema incompatibilities, the Upgrade CLI now prints the remaining SQL statements (as well as the ones for migrating IDs). You can just ignore them at this point and continue to the last step by continuously typing Y and hitting RETURN when prompted. + +If you did resolve all schema incompatibilities, no SQL statements will be printed and the Upgrade CLI only outputs the following: + +```no-lines wrap +$ npx prisma-upgrade prisma1/prisma.yml prisma/schema.prisma + +➤ Next Steps + +After you executed one or more of the previous SQL statements against your database, +please run the following two commands to refresh your Prisma ORM 2 schema and check +the changes. + + 1. Run `npx prisma db pull` again to refresh your Prisma ORM 2 schema. + 2. Run `npx prisma-upgrade` again. + +If you can't or don't want to execute the remaining SQL statements right now, you can +skip to the last step where the Upgrade CLI adds missing attributes to your Prisma ORM 2 +schema that are not picked up by introspection. + +Skip to the last step? [Y/n]? +``` + +One more time, type Y and hit RETURN to confirm. + +The final prompt of the Upgrade CLI now asks you to confirm the above mentioned changes it will make to your Prisma schema: + +```no-lines wrap +➤ What happens next +As a last step, some final adjustments will be made to your Prisma ORM 2 schema +to carry over some Prisma ORM-level attributes that aren't picked up by introspection. + +As a last step, some final adjustments will be made to your Prisma ORM 2.0 +schema to carry over some Prisma ORM-level attributes that aren't picked +up by introspection. + +Warning +Your current Prisma ORM 2.0 schema will be overwritten, so please +make sure you have a backup! + +Are you ready? [Y/n] +``` + +One last time, type Y and hit RETURN to confirm. + +This is the final output of the Upgrade CLI: + +```no-lines +Updating prisma/schema.prisma... +Done updating prisma/schema.prisma! + +✔ Congratulations, you're all set! + +➤ Note +If you didn't execute all generated SQL commands against your database, +you can re-run the Upgrade CLI at any time. + +Note that the Upgrade CLI doesn't resolve all of the schema incompatibilities +between Prisma 1 and Prisma ORM 2. If you want to resolve the remaining ones, +you can do so manually by following this guide: +https://pris.ly/d/upgrading-the-prisma-layer + +➤ Next steps +Otherwise you can continue your upgrade process by installing Prisma Client 2: +npm install @prisma/client + +You can find guides for different upgrade scenarios in the docs: +https://pris.ly/d/upgrade-from-prisma-1 +``` + +### 5.3. Final result + +The final version of the Prisma schema should look as follows: + +```prisma file=schema.prisma showLineNumbers +model User { + id String @id @default(cuid()) + name String + email String? @unique + jsonData Json? + role Role @default(CUSTOMER) + Post Post[] + Profile Profile? +} + +model Post { + id String @id @default(cuid()) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + title String + content String? + published Boolean @default(false) + authorId String? + User User? @relation(fields: [authorId], references: [id]) + Category Category[] @relation(references: [id]) +} + +model Profile { + id String @id @default(cuid()) + bio String? + user String? @unique + User User? @relation(fields: [user], references: [id]) +} + +model Category { + id String @id @default(cuid()) + name String + Post Post[] @relation(references: [id]) +} + +enum Role { + ADMIN + CUSTOMER +} +``` + +### 5.4. Rename relation fields + +One thing you'll notice with this version of the Prisma ORM 2 schema is that all [relation fields](/orm/prisma-schema/data-model/relations#relation-fields) are named after their respective models, e.g: + +```prisma file=schema.prisma showLineNumbers +model User { + Post Post[] + Profile Profile? +} + +model Post { + User User? @relation(fields: [authorId], references: [id]) + Category Category[] @relation(references: [id]) +} + +model Profile { + User User? @relation(fields: [user], references: [id]) +} + +model Category { + Post Post[] @relation(references: [id]) +} +``` + +This is not ideal and you can in fact manually rename all of them to their previous versions! + +Because all relation fields are _virtual_, meaning they don't _manifest_ in the database, you can name them whatever you like. In this case, all relation fields are lowercased and sometimes pluralized. + +Here's what they look like after the rename: + +```prisma file=schema.prisma showLineNumbers +model User { + posts Post[] + profile Profile? +} + +model Post { + author User? @relation(fields: [authorId], references: [id]) + categories Category[] @relation(references: [id]) +} + +model Profile { + user String? @unique + owner User? @relation(fields: [user], references: [id]) +} + +model Category { + posts Post[] @relation(references: [id]) +} +``` + +> **Note**: For the 1-1-relation between `User` and `Profile` it was not possible to set the old name `user` for the relation field. This is because there'd be a naming conflict with the already existing [relation scalar](/orm/prisma-schema/data-model/relations#annotated-relation-fields) field that holds the foreign key. In that case, you can choose a different name or alternatively rename the foreign key column directly in the database via SQL. + +### 5.5. Resolving remaining schema incompatibilities + +There are a few schema incompatibilities that were not yet resolved by the Upgrade CLI. At this point you still haven't fixed [scalar lists](/orm/more/upgrade-guides/upgrade-from-prisma-1/schema-incompatibilities-mysql#scalar-lists-arrays-are-maintained-with-extra-table). You can find the recommended workarounds for this and others on the [Schema incompatibilities](/orm/more/upgrade-guides/upgrade-from-prisma-1/schema-incompatibilities-mysql) page. + +## 6. Install and generate Prisma Client + +Now that you have your Prisma ORM 2 schema ready, you can install Prisma Client with the following command: + +```terminal copy +npm install @prisma/client +``` + +## 7. Next steps + +Congratulations, you have now upgraded your Prisma ORM layer to Prisma ORM 2! From here on, you can move on to update your application code using one of the following guides: + +- [Old to new Nexus](/orm/more/upgrade-guides/upgrade-from-prisma-1/upgrading-nexus-prisma-to-nexus): Choose this guide if you're currently running Prisma 1 with GraphQL Nexus. +- [prisma-binding to Nexus](/orm/more/upgrade-guides/upgrade-from-prisma-1/upgrading-prisma-binding-to-nexus): Choose this guide if you're currently running Prisma 1 with `prisma-binding` and want to upgrade to [Nexus](https://www.nexusjs.org/#/) (and TypeScript). +- [prisma-binding to SDL-first](/orm/more/upgrade-guides/upgrade-from-prisma-1/upgrading-prisma-binding-to-sdl-first): Choose this guide if you're currently running Prisma 1 with `prisma-binding` and want to upgrade to an [SDL-first](https://www.prisma.io/blog/the-problems-of-schema-first-graphql-development-x1mn4cb0tyl3) GraphQL server. +- [REST API](/orm/more/upgrade-guides/upgrade-from-prisma-1/upgrading-a-rest-api): Choose this guide if you're currently running Prisma 1 using Prisma Client 1 and are building a REST API. + +## Bonus: Prisma Client API comparison + +This section contains a high-level and side-by-side comparison of the Prisma Client APIs of Prisma 1 and Prisma ORM 2. For more details about the new Prisma Client API, you can explore the [Prisma Client](/orm/prisma-client) docs. + +### Reading single records + + + + + +```ts +const user = await prisma.user({ id: 1 }) +``` + + + + + +```ts +await prisma.user.findUnique({ + where: { id: 1 }, +}) +``` + + + + + +### Reading lists of records + + + + + +```ts +const user = await prisma.users() +``` + + + + + +```ts +await prisma.user.findMany() +``` + + + + + +### Filtering lists + + + + + +```ts +const users = await prisma.users({ + where: { + name: 'Alice', + }, +}) +``` + + + + + +```ts +await prisma.user.findMany({ + where: { + name: 'Alice', + }, +}) +``` + + + + + +### Paginating lists + + + + + +```ts +const posts = await prisma.posts({ + skip: 5, + first: 10, +}) +``` + + + + + +```ts +await prisma.user.findMany({ + skip: 5, + take: 10, +}) +``` + + + + + +> **Note**: You can learn more about the new pagination API in the respective [release notes](https://github.com/prisma/prisma/releases/tag/2.0.0-beta.7) or the [Pagination](/orm/prisma-client/queries/pagination) page in the docs. + +### Sorting lists + + + + + +```ts +await prisma.posts({ + orderBy: 'title_ASC', +}) +``` + + + + + +```ts +await prisma.posts({ + orderBy: { + title: 'asc', + }, +}) +``` + + + + + +### Creating records + + + + + +```ts +await prisma.createUser({ + name: 'Alice', +}) +``` + + + + + +```ts +await prisma.user.create({ + data: { + name: 'Alice', + }, +}) +``` + + + + + +### Updating records + + + + + +```ts +await prisma.updateUser({ + where: { id: 1 }, + data: { + name: 'James', + email: 'james@prisma.io', + }, +}) +``` + + + + + +```ts +await prisma.user.update({ + where: { id: 1 }, + data: { + name: 'James', + email: 'james@prisma.io', + }, +}) +``` + + + + + +### Deleting records + + + + + +```ts +await prisma.deleteUser({ id: 1 }) +``` + + + + + +```ts +await prisma.user.delete({ + where: { id: 1 }, +}) +``` + + + + + +### Selecting fields & loading relations + +In Prisma 1, the only ways to select specific fields and/or load relations of an object was by using the string-based `$fragment` and `$graphql` functions. With Prisma ORM 2, this is now done in a clean and type-safe manner using [`select`](/orm/prisma-client/queries/select-fields#select-specific-fields) and [`include`](/orm/prisma-client/queries/select-fields#include-relations-and-select-relation-fields). + +Another benefit of this approach is that you can use `select` and `include` on _any_ Prisma Client query, e.g. `findUnique`, `findMany`, `create`, `update`, `delete`, ... + + + + + +```ts +await prisma.user({ id: 1 }).$fragment(` + fragment NameAndEmail on User { id email }` +`) +``` + + + + + +```ts +await prisma.user.findUnique({ + where: { id: 1 }, + select: { + id: true, + email: true, + }, +}) +``` + + + + + +As an example, creating a new record and only retrieving the `id` in the returned object was not possible in Prisma 1. With Prisma ORM 2 you can achieve this as follows: + +```ts +await prisma.user.create({ + data: { + name: 'Alice', + }, + select: { + id: true, + }, +}) +``` diff --git a/content/200-orm/800-more/300-upgrade-guides/800-upgrade-from-prisma-1/03-upgrading-the-prisma-layer.mdx b/content/200-orm/800-more/300-upgrade-guides/800-upgrade-from-prisma-1/03-upgrading-the-prisma-layer-postgresql.mdx similarity index 77% rename from content/200-orm/800-more/300-upgrade-guides/800-upgrade-from-prisma-1/03-upgrading-the-prisma-layer.mdx rename to content/200-orm/800-more/300-upgrade-guides/800-upgrade-from-prisma-1/03-upgrading-the-prisma-layer-postgresql.mdx index 6cc73c0b45..33b01e8f75 100644 --- a/content/200-orm/800-more/300-upgrade-guides/800-upgrade-from-prisma-1/03-upgrading-the-prisma-layer.mdx +++ b/content/200-orm/800-more/300-upgrade-guides/800-upgrade-from-prisma-1/03-upgrading-the-prisma-layer-postgresql.mdx @@ -1,32 +1,12 @@ --- title: 'Upgrading the Prisma ORM layer' -# metaTitle: 'Upgrading the Prisma ORM layer to Prisma ORM 2' -# metaDescription: 'Learn how to upgrade the Prisma ORM layer to Prisma ORM 2 and create your Prisma schema.' +metaTitle: 'Upgrading the Prisma ORM layer to Prisma ORM 2 | PostgreSQL' +metaDescription: 'Learn how to upgrade the Prisma ORM layer to Prisma ORM 2 and create your Prisma schema with PostgreSQL' dbSwitcher: ['postgresql', 'mysql'] -techMetaTitles: - [ - { - name: 'mysql', - value: 'Upgrading the Prisma ORM layer to Prisma ORM 2 | MySQL', - }, - { - name: 'postgresql', - value: 'Upgrading the Prisma ORM layer to Prisma ORM 2 | PostgreSQL', - }, - ] -techMetaDescriptions: - [ - { - name: 'mysql', - value: 'Learn how to upgrade the Prisma ORM layer to Prisma ORM 2 and create your Prisma schema with MySQL', - }, - { - name: 'postgresql', - value: 'Learn how to upgrade the Prisma ORM layer to Prisma ORM 2 and create your Prisma schema with PostgreSQL', - }, - ] +pagination_next: orm/more/upgrade-guides/upgrade-from-prisma-1/upgrading-nexus-prisma-to-nexus +slugSwitch: /orm/more/upgrade-guides/upgrade-from-prisma-1/upgrading-the-prisma-layer- --- - + ## Overview This page explains the first step of your upgrade process: Taking your Prisma 1 configuration and upgrading it to Prisma ORM 2. Concretely, you will learn how to: @@ -73,7 +53,10 @@ npm uninstall prisma1 ```
-
Expand if you want to keep using your Prisma 1 CLI side-by-side + +
+ +Expand if you want to keep using your Prisma 1 CLI side-by-side If you want to keep using the Prisma 1 CLI, it is recommend to remove your global installation of it and add the `prisma1` CLI as a development dependency: @@ -143,7 +126,7 @@ It should print the following output: Next steps: 1. Set the `DATABASE_URL` in the `.env` file to point to your existing database. If your database has no tables yet, read https://pris.ly/d/getting-started 2. Set the `provider` of your `datasource` block in `schema.prisma` to match your database: `postgresql`, `mysql` or `sqlite`. -3. Run `prisma db pull` to introspect your database schema and update the Prisma schema data models accordingly. +3. Run `prisma db pull` to turn your database schema into a Prisma data model. 4. Run `prisma generate` to install Prisma Client. You can then start querying your database. More information in our documentation: @@ -157,7 +140,7 @@ The command created a new folder called `prisma`, and two files: Your initial Prisma schema looks as follows: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers // This is your Prisma schema file, // learn more about it in the docs: https://pris.ly/d/prisma-schema @@ -190,7 +173,8 @@ First, you need to ensure that that `provider` field on the `datasource` block i Switch around with the tabs in the code block to see examples of both: - + + ```prisma datasource db { @@ -199,6 +183,9 @@ datasource db { } ``` + + + ```prisma datasource db { provider = "mysql" @@ -206,15 +193,14 @@ datasource db { } ``` - + + With the `provider` field set, you can go ahead and configure the connection URL inside the `.env` file. Assume the database configuration in your Docker Compose file that you used to deploy your Prisma ORM server looks as follows: - - -```yml file=docker-compose.yml +```yml file=docker-compose.yml showLineNumbers PRISMA_CONFIG: | port: 4466 databases: @@ -252,57 +238,14 @@ In that case, the `schema` must be specified as follows: DATABASE_URL="postgresql://janedoe:randompassword@localhost:5432/prisma?schema=default$default" ``` - - - - -```yml file=docker-compose.yml -PRISMA_CONFIG: | - port: 4466 - databases: - default: - connector: mysql - host: mysql - port: 3306 - user: root - password: randompassword -``` - -Also assume your `endpoint` in `prisma.yml` is configured as follows: - -```yml file=prisma.yml -endpoint: http://localhost:4466/myproject/dev -``` - -Based on these connection details, you need to configure the `DATABASE_URL` environment variable inside your `.env` file as follows: - -```bash file=.env -DATABASE_URL="mysql://root:randompassword@localhost:3306/myproject@dev" -``` - -Note that the _database name_ in the connection URL is typically composed of your _service name_ and _service stage_ (which are part of the `endpoint` in `prisma.yml`), separated by the `@` character. - -Sometimes no service name and stage are specified in `prisma.yml`: - -```yml file=prisma.yml -endpoint: http://localhost:4466/ -``` - -In that case, the database name must be specified as follows: - -```bash file=.env -DATABASE_URL="mysql://root:randompassword@localhost:3306/default@default" -``` - - - Learn more on the [Connection URLs](/orm/reference/connection-urls) page. ## 4. Introspect your database For the purpose of this guide, we'll use the following Prisma 1 data model (select the **SQL** tab below to see what the data model maps to in SQL): - + + ```graphql type User { @@ -344,6 +287,9 @@ enum Role { } ``` + + + ```sql CREATE TABLE"User" ( id character varying(25) PRIMARY KEY, @@ -393,7 +339,8 @@ CREATE UNIQUE INDEX "_CategoryToPost_AB_unique" ON"_CategoryToPost"("A" text_ops CREATE INDEX "_CategoryToPost_B" ON"_CategoryToPost"("B" text_ops); ``` - + + Note that this data model has three [relations](/orm/prisma-schema/data-model/relations): @@ -409,11 +356,11 @@ npx prisma db pull Here's a graphical illustration for what happens when `db pull` is invoked: -![Introspect your database with Prisma ORM](../../../../doc-images/prisma-db-pull-generate-schema.png) +![Introspect your database](/img/orm/prisma-db-pull-generate-schema.png) For the above Prisma 1 datamodel, this results in the following Prisma ORM 2 schema (note that the models have been reordered to match the initial order of the Prisma 1 datamodel): -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model User { id String @id @default(cuid()) email String? @unique @@ -488,9 +435,9 @@ During the second phase, you don't need to do anything manually. The Upgrade CLI Note that **you can start over at any time during the process** and go back from the second to the first phase. -In this illustration, the green area shows the first phase, the blue area shows the second phase. Note that you can optionally run `prisma db pull` in between the phases to update your Prisma schema data models: +In this illustration, the green area shows the first phase, the blue area shows the second phase. Note that you can optionally run `prisma db pull` in between the phases to update your Prisma ORM data model: -![Fixing the schema incompatibilities](images/fix-schema-incompatibilities.png) +![Fixing the schema incompatibilities](./images/fix-schema-incompatibilities.png) To use the Upgrade CLI, you can either install it locally in your project, or invoke it once without installation using `npx` as done here: @@ -546,8 +493,6 @@ Press the Y button, then confirm by hitting RETURN on your Once you confirmed, the CLI outputs the SQL statements you should be running against your database: - - ```no-lines wrap ➤ Adjust your database schema Run the following SQL statements against your database: @@ -606,71 +551,6 @@ Learn more in the docs: https://pris.ly/d/how-to-upgrade' ``` - - - - -```no-lines wrap -➤ Adjust your database schema -Run the following SQL statements against your database: - - Fix columns with ENUM data types - https://pris.ly/d/schema-incompatibilities#enums-are-represented-as-text-in-database - - ALTER TABLE `User` CHANGE `role` `role` ENUM('ADMIN', 'CUSTOMER') NOT NULL; - - - Add missing `DEFAULT` constraints to the database - https://pris.ly/d/schema-incompatibilities#default-values-arent-represented-in-database - - ALTER TABLE `User` CHANGE `role` `role` ENUM('ADMIN', 'CUSTOMER') NOT NULL DEFAULT 'CUSTOMER'; - ALTER TABLE `Post` CHANGE `published` `published` TINYINT(1) NOT NULL DEFAULT 0; - - - Fix columns with JSON data types - https://pris.ly/d/schema-incompatibilities#json-type-is-represented-as-text-in-database - - ALTER TABLE `User` CHANGE `jsonData` `jsonData` JSON ; - - - Replicate `@createdAt` behavior in Prisma ORM 2.0 - https://pris.ly/d/schema-incompatibilities#createdat-isnt-represented-in-database - - ALTER TABLE `Post` CHANGE `createdAt` `createdAt` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP; - - - Fix 1-1 relations by adding `UNIQUE` constraints - https://pris.ly/d/schema-incompatibilities#inline-1-1-relations-are-recognized-as-1-n-missing-unique-constraint - - ALTER TABLE `Profile` ADD UNIQUE (`user`); - - - Migrate IDs from varchar(25) to varchar(30) - https://pris.ly/d/schema-incompatibilities#mismatching-cuid-length - - SET FOREIGN_KEY_CHECKS=0; - ALTER TABLE `Category` CHANGE `id` `id` char(30) CHARACTER SET utf8 NOT NULL; - ALTER TABLE `Post` CHANGE `id` `id` char(30) CHARACTER SET utf8 NOT NULL; - ALTER TABLE `Profile` CHANGE `id` `id` char(30) CHARACTER SET utf8 NOT NULL; - ALTER TABLE `Profile` CHANGE `user` `user` char(30) CHARACTER SET utf8 ; - ALTER TABLE `User` CHANGE `id` `id` char(30) CHARACTER SET utf8 NOT NULL; - SET FOREIGN_KEY_CHECKS=1; - -➤ Breaking changes detected - -In order to fully optimize your database schema, you'll need to run a few SQL -statements that can break your Prisma 1 setup. Note that these changes are optional -and if you are upgrading gradually and running Prisma 1 and Prisma ORM 2 side-by-side, -you should not perform these changes yet. Instead, you can perform them whenever -you are ready to completely remove Prisma 1 from your project. -If you are upgrading all at once, you can safely perform these changes now. - -Learn more in the docs: -https://pris.ly/d/how-to-upgrade' -``` - - - > **Note**: If you're seeing the note about breaking changes, you can ignore it for now. We'll discuss it later. The shown SQL statements are categorized into a number of "buckets", all aiming to resolve a certain [schema incompatibility](/orm/more/upgrade-guides/upgrade-from-prisma-1/schema-incompatibilities-postgresql): @@ -695,8 +575,6 @@ The first thing the tool does is help you ensure that `enum` definitions in your The CLI currently shows the following output: - - ```no-lines wrap Fix columns with ENUM data types https://pris.ly/d/schema-incompatibilities#enums-are-represented-as-text-in-database @@ -707,22 +585,9 @@ https://pris.ly/d/schema-incompatibilities#enums-are-represented-as-text-in-data > **⚠️ Warning**: If you are running Prisma 1 and Prisma ORM 2 [side-by-side](/orm/more/upgrade-guides/upgrade-from-prisma-1/how-to-upgrade#upgrade-strategies), these [SQL statements will break your Prisma 1 setup](https://github.com/prisma/upgrade/issues/74). The docs will be updated to reflect this soon. - - - - -```no-lines wrap -Fix columns with ENUM data types -https://pris.ly/d/schema-incompatibilities#enums-are-represented-as-text-in-database - - ALTER TABLE `User` CHANGE `role` `role` ENUM('ADMIN', 'CUSTOMER') NOT NULL; -``` - - - Go ahead and run these statements against your database now. -![Altering columns to use ENUM with SQL](images/altering-columns-to-use-enum.png) +![Altering columns to use ENUM with SQL](./images/altering-columns-to-use-enum.png) ### 5.1.2. Add missing `DEFAULT` constraints to the database @@ -730,8 +595,6 @@ Next, the Upgrade CLI helps you resolve the issue that [default values aren't re In this case, two `DEFAULT` constraints are missing which are suggested by the tool: - - ```no-lines wrap Add missing `DEFAULT` constraints to the database https://pris.ly/d/schema-incompatibilities#default-values-arent-represented-in-database @@ -742,25 +605,7 @@ https://pris.ly/d/schema-incompatibilities#default-values-arent-represented-in-d You can now run these SQL statements against your database either using a command line client or a GUI like Postico: -![Adding missing `DEFAULT` constraints to columns](images/add-missing-default-constraints-to-columns.png) - - - - - -```no-lines wrap -Add missing `DEFAULT` constraints to the database -https://pris.ly/d/schema-incompatibilities#default-values-arent-represented-in-database - - ALTER TABLE `User` CHANGE `role` `role` ENUM('ADMIN', 'CUSTOMER') NOT NULL DEFAULT 'CUSTOMER'; - ALTER TABLE `Post` CHANGE `published` `published` TINYINT(1) NOT NULL DEFAULT 0; -``` - -You can now run these SQL statements against your database either using a command line client or a GUI like TablePlus: - -![TablePlus GUI](images/TablePlus-GUI.png) - - +![Adding missing `DEFAULT` constraints to columns](./images/add-missing-default-constraints-to-columns.png) ### 5.1.3. Fix columns with JSON data types @@ -770,8 +615,6 @@ Changing the column type to `JSON` will ensure that the field is properly recogn The CLI currently shows the following output: - - ```no-lines wrap Fix columns with JSON data types https://pris.ly/d/schema-incompatibilities#json-type-is-represented-as-text-in-database @@ -783,24 +626,8 @@ https://pris.ly/d/schema-incompatibilities#json-type-is-represented-as-text-in-d You can now run these SQL statements against your database either using a command line client or a GUI like Postico: -![Adding missing `DEFAULT` constraints to columns](images/fix-columns-with-json-data-types.png) +![Adding missing `DEFAULT` constraints to columns](./images/fix-columns-with-json-data-types.png) - - - - -```no-lines wrap -Fix columns with JSON data types -https://pris.ly/d/schema-incompatibilities#json-type-is-represented-as-text-in-database - - ALTER TABLE `User` CHANGE `jsonData` `jsonData` JSON ; -``` - -You can now run these SQL statements against your database either using a command line client or a GUI like TablePlus: - -![TablePlus GUI](images/fix-columns-with-json-data-types.png) - - ### 5.1.4. Replicate `@createdAt` behavior in Prisma ORM 2 @@ -808,8 +635,6 @@ The next thing the tools does is help you resolve the issue that the behavior of The CLI currently shows the following output: - - ```no-lines wrap Replicate `@createdAt` behavior in Prisma ORM 2.0 https://pris.ly/d/schema-incompatibilities#createdat-isnt-represented-in-database @@ -819,22 +644,7 @@ https://pris.ly/d/schema-incompatibilities#createdat-isnt-represented-in-databas You can now run these SQL statements against your database either using a command line client or a GUI like Postico: -![Running an SQL command to alter a column](images/run-sql-command-to-alter-column.png) - - - - - -```no-lines wrap -Replicate `@createdAt` behavior in Prisma ORM 2.0 -https://pris.ly/d/schema-incompatibilities#createdat-isnt-represented-in-database - - ALTER TABLE `Post` CHANGE `createdAt` `createdAt` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP; -``` - -You can now run these SQL statements against your database either using a command line client or a GUI like TablePlus. - - +![Running an SQL command to alter a column](./images/run-sql-command-to-alter-column.png) ### 5.1.5. Fix 1-1 relations by adding `UNIQUE` constraints @@ -842,8 +652,6 @@ Now, the tool will help you [turn the current 1-n relation between `User` ↔ `P The CLI currently shows the following output: - - ```no-lines wrap Fix 1-1 relations by adding `UNIQUE` constraints https://pris.ly/d/schema-incompatibilities#inline-1-1-relations-are-recognized-as-1-n-missing-unique-constraint @@ -853,22 +661,7 @@ https://pris.ly/d/schema-incompatibilities#inline-1-1-relations-are-recognized-a You can now run these SQL statements against your database either using a command line client or a GUI like Postico: -![Running an SQL command to alter a column](images/run-sql-command-to-alter-column.png) - - - - - -```no-lines wrap -Fix 1-1 relations by adding `UNIQUE` constraints -https://pris.ly/d/schema-incompatibilities#inline-1-1-relations-are-recognized-as-1-n-missing-unique-constraint - - ALTER TABLE `Profile` ADD UNIQUE (`user`); -``` - -You can now run these SQL statements against your database either using a command line client or a GUI like TablePlus. - - +![Running an SQL command to alter a column](./images/run-sql-command-to-alter-column.png) ### 5.1.6. Fix mismatch of CUID length @@ -878,8 +671,6 @@ Finally, the tool will help you [turn the current ID columns of type `VARCHAR(25 The CLI currently shows the following output: - - ```no-lines wrap wrap Migrate IDs from varchar(25) to varchar(30) https://pris.ly/d/schema-incompatibilities#mismatching-cuid-length @@ -893,28 +684,7 @@ https://pris.ly/d/schema-incompatibilities#mismatching-cuid-length You can now run these SQL statements against your database either using a command line client or a GUI like Postico: -![Running an SQL command to alter a column](images/run-sql-command-to-alter-column.png) - - - - - -```no-lines wrap -Migrate IDs from varchar(25) to varchar(30) -https://pris.ly/d/schema-incompatibilities#mismatching-cuid-length - -SET FOREIGN_KEY_CHECKS=0; -ALTER TABLE `Category` CHANGE `id` `id` char(30) CHARACTER SET utf8 NOT NULL; -ALTER TABLE `Post` CHANGE `id` `id` char(30) CHARACTER SET utf8 NOT NULL; -ALTER TABLE `Profile` CHANGE `id` `id` char(30) CHARACTER SET utf8 NOT NULL; -ALTER TABLE `Profile` CHANGE `user` `user` char(30) CHARACTER SET utf8 ; -ALTER TABLE `User` CHANGE `id` `id` char(30) CHARACTER SET utf8 NOT NULL; -SET FOREIGN_KEY_CHECKS=1; -``` - -You can now run these SQL statements against your database either using a command line client or a GUI like TablePlus. - - +![Running an SQL command to alter a column](./images/run-sql-command-to-alter-column.png) ### 5.1.7. Breaking changes detected @@ -943,8 +713,6 @@ To fix this, you'll need to perform the following migration: These instructions are now printed by the CLI: - - ```no-lines wrap ➤ Adjust your database schema Run the following SQL statements against your database: @@ -994,62 +762,7 @@ For this fix, you'll need to run three SQL statements: DROP TABLE `_PostToUser`; ``` -![Fixing incorrect m-n relations with SQL](images/fix-incorrect-m-n-relations-sql.png) - - - - - -```no-lines wrap -➤ Adjust your database schema -Run the following SQL statements against your database: - - Fix one-to-many table relations - https://pris.ly/d/schema-incompatibilities#all-non-inline-relations-are-recognized-as-m-n - - ALTER TABLE `Post` ADD COLUMN `authorId` char(25) CHARACTER SET utf8 ; - ALTER TABLE `Post` ADD CONSTRAINT author FOREIGN KEY (`authorId`) REFERENCES `User`(`id`); - UPDATE `Post`, `_PostToUser` SET `Post`.`authorId` = `_PostToUser`.B where `_PostToUser`.A = `Post`.`id`; - DROP TABLE `_PostToUser`; - - -➤ Next Steps - -After you executed one or more of the above SQL statements against your database, -please run the following two commands to refresh your Prisma ORM 2 Schema and check -the changes. - - 1. Run `npx prisma db pull` again to refresh your Prisma ORM 2 schema. - 2. Run `npx prisma-upgrade` again. - -If you can't or don't want to execute the remaining SQL statements right now, you can -skip to the last step where the Upgrade CLI adds missing attributes to your Prisma ORM 2 -schema that are not picked up by introspection. - -Skip to the last step? [Y/n]? -``` - -For this fix, you'll need to run three SQL statements: - -1. Create new column `authorId` on the `Post` table. This column should be a _foreign key_ that references the `id` field of the `User` table: - ```sql no-lines - ALTER TABLE `Post` ADD COLUMN `authorId` char(25) CHARACTER SET utf8 ; - ALTER TABLE `Post` ADD CONSTRAINT author FOREIGN KEY (`authorId`) REFERENCES `User`(`id`); - ``` -1. Write a SQL query that reads all the rows from the `_PostToUser` relation table and for each row: - 1. Finds the respective `Post` record by looking up the value from column `A` - 1. Inserts the value from column `B` as the value for `authorId` into that `Post` record - ```sql no-lines - UPDATE `Post`, `_PostToUser` SET `Post`.`authorId` = `_PostToUser`.B where `_PostToUser`.A = `Post`.`id`; - ``` -1. Delete the `_PostToUser` relation table - ```sql no-lines - DROP TABLE `_PostToUser`; - ``` - -![Fixing incorrect m-n relations with SQL](images/fix-incorrect-m-n-relations-sql.png) - - +![Fixing incorrect m-n relations with SQL](./images/fix-incorrect-m-n-relations-sql.png) After these commands, the user ID values of the records from column `B` of the relation table are migrated to the new `authorId` column. @@ -1065,7 +778,7 @@ npx prisma db pull This time, the resulting Prisma schema looks as follows: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model User { id String @id name String @@ -1113,7 +826,7 @@ This schema has most issues resolved, but it still lacks the following: The CLI now prints the following: -```no-lines wrap +``` wrap ➤ What happens next As a last step, some final adjustments will be made to your Prisma ORM 2 schema to carry over some Prisma ORM-level attributes that aren't picked up by introspection. @@ -1220,7 +933,7 @@ https://pris.ly/d/upgrade-from-prisma-1 The final version of the Prisma schema should look as follows: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model User { id String @id @default(cuid()) name String @@ -1266,7 +979,7 @@ enum Role { One thing you'll notice with this version of the Prisma ORM 2 schema is that all [relation fields](/orm/prisma-schema/data-model/relations#relation-fields) are named after their respective models, e.g: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model User { Post Post[] Profile Profile? @@ -1292,7 +1005,7 @@ Because all relation fields are _virtual_, meaning they don't _manifest_ in the Here's what they look like after the rename: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model User { posts Post[] profile Profile? @@ -1317,7 +1030,7 @@ model Category { ### 5.5. Resolving remaining schema incompatibilities -There are a few schema incompatibilities that were not yet resolved by the Upgrade CLI. At this point you still haven't fixed [scalar lists](/orm/more/upgrade-guides/upgrade-from-prisma-1/schema-incompatibilities-postgresql#scalar-lists-arrays-are-maintained-with-extra-table) and [cascading deletes](/orm/more/upgrade-guides/upgrade-from-prisma-1/schema-incompatibilities-postgresql#cascading-deletes-are-not-supported-in-prisma-orm-2). You can find the recommended workarounds for these on the [Schema incompatibilities](/orm/more/upgrade-guides/upgrade-from-prisma-1/schema-incompatibilities-postgresql) page. +There are a few schema incompatibilities that were not yet resolved by the Upgrade CLI. At this point you still haven't fixed [scalar lists](/orm/more/upgrade-guides/upgrade-from-prisma-1/schema-incompatibilities-postgresql#scalar-lists-arrays-are-maintained-with-extra-table). You can find the recommended workarounds for this and others on the [Schema incompatibilities](/orm/more/upgrade-guides/upgrade-from-prisma-1/schema-incompatibilities-postgresql) page. ## 6. Install and generate Prisma Client @@ -1344,15 +1057,15 @@ This section contains a high-level and side-by-side comparison of the Prisma Cli -}> + -```ts +```ts const user = await prisma.user({ id: 1 }) ``` -}> + ```ts await prisma.user.findUnique({ @@ -1368,7 +1081,7 @@ await prisma.user.findUnique({ -}> + ```ts const user = await prisma.users() @@ -1376,7 +1089,7 @@ const user = await prisma.users() -}> + ```ts await prisma.user.findMany() @@ -1390,7 +1103,7 @@ await prisma.user.findMany() -}> + ```ts const users = await prisma.users({ @@ -1402,7 +1115,7 @@ const users = await prisma.users({ -}> + ```ts await prisma.user.findMany({ @@ -1420,7 +1133,7 @@ await prisma.user.findMany({ -}> + ```ts const posts = await prisma.posts({ @@ -1431,7 +1144,7 @@ const posts = await prisma.posts({ -}> + ```ts await prisma.user.findMany({ @@ -1450,7 +1163,7 @@ await prisma.user.findMany({ -}> + ```ts await prisma.posts({ @@ -1460,7 +1173,7 @@ await prisma.posts({ -}> + ```ts await prisma.posts({ @@ -1478,7 +1191,7 @@ await prisma.posts({ -}> + ```ts await prisma.createUser({ @@ -1488,7 +1201,7 @@ await prisma.createUser({ -}> + ```ts await prisma.user.create({ @@ -1506,7 +1219,7 @@ await prisma.user.create({ -}> + ```ts await prisma.updateUser({ @@ -1520,7 +1233,7 @@ await prisma.updateUser({ -}> + ```ts await prisma.user.update({ @@ -1540,7 +1253,7 @@ await prisma.user.update({ -}> + ```ts await prisma.deleteUser({ id: 1 }) @@ -1548,7 +1261,7 @@ await prisma.deleteUser({ id: 1 }) -}> + ```ts await prisma.user.delete({ @@ -1568,7 +1281,7 @@ Another benefit of this approach is that you can use `select` and `include` on _ -}> + ```ts await prisma.user({ id: 1 }).$fragment(` @@ -1578,7 +1291,7 @@ await prisma.user({ id: 1 }).$fragment(` -}> + ```ts await prisma.user.findUnique({ diff --git a/content/200-orm/800-more/300-upgrade-guides/800-upgrade-from-prisma-1/04-upgrading-nexus-prisma-to-nexus.mdx b/content/200-orm/800-more/300-upgrade-guides/800-upgrade-from-prisma-1/04-upgrading-nexus-prisma-to-nexus.mdx index e9f81673a5..670246349b 100644 --- a/content/200-orm/800-more/300-upgrade-guides/800-upgrade-from-prisma-1/04-upgrading-nexus-prisma-to-nexus.mdx +++ b/content/200-orm/800-more/300-upgrade-guides/800-upgrade-from-prisma-1/04-upgrading-nexus-prisma-to-nexus.mdx @@ -86,38 +86,48 @@ npx prisma -v To get started, you can remove the old imports that are not needed any more with your new setup: ```ts line-number highlight=1-3;delete +//delete-start import { makePrismaSchema, prismaObjectType } from 'nexus-prisma' import datamodelInfo from './generated/nexus-prisma' import { prisma } from './generated/prisma-client' +//delete-end ``` Instead, you now import the following into your application: ```ts line-number highlight=1-3;add +//add-start import { nexusSchemaPrisma } from 'nexus-plugin-prisma/schema' import { objectType, makeSchema, queryType, mutationType } from '@nexus/schema' import { PrismaClient } from '@prisma/client' +//add-end ``` Next you need to adjust the code where you currently create your `GraphQLSchema`, most likely this is currently happening via the `makePrismaSchema` function in your code. Since this function was imported from the removed `nexus-prisma` package, you'll need to replace it with the `makeSchema` function from the `@nexus/schema` package. The way how the Prisma ORM plugin for Nexus is used also changes in the latest version. Here's an example for such a configuration: -```ts file=./src/index.ts line-number highlight=2,12-14;add|1,8-11;delete +```ts file=./src/index.ts line-number highlight=2,12-14;add|1,8-11;delete showLineNumbers +//delete-next-line const schema = makePrismaSchema({ +//add-next-line const schema = makeSchema({ // Provide all the GraphQL types we've implemented types: [Query, Mutation, UserUniqueInput, User, Post, Category, Profile], // Configure the interface to Prisma + //delete-start prisma: { datamodelInfo, client: prisma, }, + //delete-end + //add-start plugins: [nexusSchemaPrisma({ experimentalCRUD: true, })], + //add-end // Specify where Nexus should put the generated files outputs: { @@ -146,12 +156,16 @@ Here's an example for such a configuration: If you previously typed the GraphQL `context` object that's passed through your resolver chain, you need to adjust the type like so: -```ts file=./src/types.ts highlight=2,6;add|1,5;delete +```ts file=./src/types.ts highlight=2,6;add|1,5;delete showLineNumbers +//delete-next-line import { Prisma } from './generated/prisma-client' +//add-next-line import { PrismaClient } from '@prisma/client' export interface Context { + //delete-next-line prisma: Prisma + //add-next-line prisma: PrismaClient } ``` @@ -217,6 +231,7 @@ Note that `t.model` looks at the `name` attribute in the object that's passed as At this point, you might see errors on the relation fields `posts` and `profile`, e.g.: ```bash highlight=1;delete +//delete-next-line Missing type Post, did you forget to import a type to the root query? ``` @@ -493,18 +508,21 @@ const Query = queryType({ t.field('user', { type: 'User', args: { + //highlight-next-line userUniqueInput: arg({ type: 'UserUniqueInput', nullable: false, }), }, resolve: (_, args, context) => { + //highlight-start return context.prisma.user.findUnique({ where: { id: args.userUniqueInput?.id, email: args.userUniqueInput?.email, }, }) + //highlight-end }, }) }, @@ -583,6 +601,7 @@ const Mutation = mutationType({ authorId: stringArg({ nullable: false }), }, resolve: (_, args, context) => { + //highlight-start return context.prisma.post.create({ data: { title: args.title, @@ -592,6 +611,7 @@ const Mutation = mutationType({ }, }, }) + //highlight-end }, }) }, @@ -647,6 +667,7 @@ const Mutation = mutationType({ bio: stringArg(), }, resolve: (_, args, context) => { + //highlight-start return context.prisma.user.update({ where: { id: args.userUniqueInput?.id, @@ -658,6 +679,7 @@ const Mutation = mutationType({ }, }, }) + //highlight-end }, }) }, @@ -712,6 +734,7 @@ const Mutation = mutationType({ }, resolve: (_, args, context) => { const ids = args.categoryIds.map((id) => ({ id })) + //highlight-start return context.prisma.post.update({ where: { id: args.postId, @@ -720,6 +743,7 @@ const Mutation = mutationType({ categories: { connect: ids }, }, }) + //highlight-end }, }) }, diff --git a/content/200-orm/800-more/300-upgrade-guides/800-upgrade-from-prisma-1/05-upgrading-prisma-binding-to-nexus.mdx b/content/200-orm/800-more/300-upgrade-guides/800-upgrade-from-prisma-1/05-upgrading-prisma-binding-to-nexus.mdx index 319ccd3554..c055e04e52 100644 --- a/content/200-orm/800-more/300-upgrade-guides/800-upgrade-from-prisma-1/05-upgrading-prisma-binding-to-nexus.mdx +++ b/content/200-orm/800-more/300-upgrade-guides/800-upgrade-from-prisma-1/05-upgrading-prisma-binding-to-nexus.mdx @@ -90,7 +90,7 @@ touch tsconfig.json Now add the following contents to the new file: -```json copy file=tsconfig.json +```json copy file=tsconfig.json showLineNumbers { "compilerOptions": { "skipLibCheck": true, @@ -114,7 +114,7 @@ Note that for this guide, you'll write the entire application inside of `index.t For some basic setup, add this code to `index.ts`: -```ts file=index.ts +```ts file=index.ts showLineNumbers import { queryType, makeSchema } from '@nexus/schema' import { nexusSchemaPrisma } from 'nexus-plugin-prisma/schema' import { GraphQLServer } from 'graphql-yoga' @@ -242,7 +242,7 @@ const User = objectType({ With this code in place, you can start exposing the _fields_ of the `User` model one by one. You can use your editor's autocompletion to save some typing. Inside the body of the `definition` function, type `t.model.` and then hit CTRL+SPACE. This will bring up the autocompletion and suggest all fields that are defined on the `User` model: -![Exposing Prisma model fields with t.model](images/expose-prisma-model-fields-with-t-model.png) +![Exposing Prisma model fields with t.model](./images/expose-prisma-model-fields-with-t-model.png) Note that the `model` property on `t` is provided by the `nexus-plugin-prisma`. It leverages the type information from your Prisma schema and lets you expose your Prisma models via GraphQL. @@ -279,10 +279,12 @@ const User = objectType({ t.model.jsonData() t.model.role() t.model.profile() + //add-start t.model.posts({ filtering: true, ordering: true, }) + //add-end }, }) ``` @@ -310,7 +312,9 @@ export const schema = makeSchema({ Once you're done with the first type, you can start defining the remaining ones. -
Expand to view the full version of the sample data model +
+ +Expand to view the full version of the sample data model To expose all sample Prisma models with Nexus, the following code is needed: @@ -378,6 +382,7 @@ Be sure to include all newly defined types in the `types` option that's provided ```ts line-number highlight=2;normal export const schema = makeSchema({ + //highlight-next-line types: [Query, User, Post, Profile, Category], plugins: [nexusSchemaPrisma()], outputs: { @@ -459,7 +464,7 @@ To mirror the same behaviour with Nexus, you can use the `crud` property on the Similar to `model`, this property is available because you're using the `nexus-prisma-plugin` which leverages type information from your Prisma models and auto-generates resolvers under the hood. The `crud` property also supports autocompletion, so you can explore all available queries in your editor again: -![Using t.crud to generate resolvers](images/use-t-crud-to-generate-resolvers.png) +![Using t.crud to generate resolvers](./images/use-t-crud-to-generate-resolvers.png) ##### Forwarding the query with the `nexus-prisma-plugin` @@ -468,10 +473,12 @@ To add the `users` query to your GraphQL API, add the following lines to the que ```ts line-number highlight=3-6;add const Query = queryType({ definition(t) { + //add-start t.crud.users({ filtering: true, ordering: true, }) + //add-end }, }) ``` @@ -554,11 +561,13 @@ const Query = queryType({ definition(t) { // ... previous queries + //add-start t.list.field('posts', { type: 'Post', nullable: false, args: { searchString: stringArg() }, }) + //add-end }, }) ``` @@ -567,6 +576,7 @@ Although this code gives probably gives you a type error in your editor, you can ```graphql line-number type Query { +//highlight-next-line | posts(searchString: String): [Post!]! users(after: UserWhereUniqueInput, before: UserWhereUniqueInput, first: Int, last: Int, orderBy: Enumerable, skip: Int, where: UserWhereInput): [User!]! } @@ -587,6 +597,7 @@ const Query = queryType({ type: 'Post', nullable: false, args: { searchString: stringArg() }, + //add-start resolve: (_, args, context) => { return context.prisma.post.findMany({ where: { @@ -600,6 +611,7 @@ const Query = queryType({ ], }, }) + //add-end }, }) }, @@ -664,8 +676,10 @@ const resolvers = { To get the same behavior with Nexus, you'll need to add a `t.field` definition to the `queryType` and define an `inputObjectType` that includes the two `@unique` fields of your `User` model: ```ts line-number highlight=1,3-9,15-23;add +//add-next-line import { inputObjectType, arg } from '@nexus/schema' +//add-start const UserUniqueInput = inputObjectType({ name: 'UserUniqueInput', definition(t) { @@ -673,11 +687,13 @@ const UserUniqueInput = inputObjectType({ t.string('email') }, }) +//add-end const Query = queryType({ definition(t) { // ... previous queries + //add-start t.field('user', { type: 'User', args: { @@ -687,6 +703,7 @@ const Query = queryType({ }), }, }) + //add-end }, }) ``` @@ -695,6 +712,7 @@ Since `UserUniqueInput` is a new type in your GraphQL schema, you again need to ```ts line-number highlight=2;normal export const schema = makeSchema({ + //highlight-next-line types: [Query, User, Post, Profile, Category, UserUniqueInput], plugins: [nexusSchemaPrisma()], outputs: { @@ -717,14 +735,17 @@ If you look at the generated SDL version of your GraphQL schema inside `schema.g ```graphql line-number highlight=3,7-10;normal type Query { posts(searchString: String): [Post!] + //highlight-next-line user(userUniqueInput: UserUniqueInput!): User users(after: UserWhereUniqueInput, before: UserWhereUniqueInput, first: Int, last: Int, orderBy: Enumerable, skip: Int, where: UserWhereInput): [User!]! } +//highlight-start input UserUniqueInput { email: String id: String } +//highlight-end ``` You can even send the respective query via the GraphQL Playground already: @@ -766,6 +787,7 @@ const Query = queryType({ nullable: false, }), }, + //add-start resolve: (_, args, context) => { return context.prisma.user.findUnique({ where: { @@ -774,6 +796,7 @@ const Query = queryType({ }, }) }, + //add-end }) }, }) @@ -803,6 +826,7 @@ In order to make sure that the new `Mutation` type is picked by up Nexus, you ne ```ts line-number highlight=2;normal export const schema = makeSchema({ + //highlight-next-line types: [Query, User, Post, Profile, Category, UserUniqueInput, Mutation], plugins: [nexusSchemaPrisma()], outputs: { @@ -848,7 +872,7 @@ Similar to forwarding GraphQL queries, you can use the `crud` property on the `t Similar to `model`, this property is available because you're using the `nexus-prisma-plugin` which leverages type information from your Prisma models and auto-generates resolvers under the hood. The `crud` property supports autocompletion when defining mutations as well, so you can explore all available operations in your editor again: -![Generating resolvers with t.crud](images/regenerate-resolvers-with-t-crud.png) +![Generating resolvers with t.crud](./images/regenerate-resolvers-with-t-crud.png) ##### Forwarding the mutation with the `nexus-prisma-plugin` @@ -857,9 +881,11 @@ To add the `createUser` mutation to your GraphQL API, add the following lines to ```ts line-number highlight=3-5;add const Mutation = mutationType({ definition(t) { + //add-start t.crud.createOneUser({ alias: 'createUser', }) + //add-end }, }) ``` @@ -934,6 +960,7 @@ const Mutation = mutationType({ definition(t) { // ... previous mutations + //add-start t.field('createDraft', { type: 'Post', args: { @@ -942,6 +969,7 @@ const Mutation = mutationType({ authorId: stringArg({ nullable: false }), }, }) + //add-end }, }) ``` @@ -951,6 +979,7 @@ If you look at the generated SDL version of your GraphQL schema inside `schema.g ```graphql line-number highlight=3;normal type Mutation { createUser(data: UserCreateInput!): User! + //highlight-next-line createDraft(title: String!, content: String, authorId: String!): Post! } ``` @@ -988,6 +1017,7 @@ const Mutation = mutationType({ content: stringArg(), authorId: stringArg({ nullable: false }), }, + //add-start resolve: (_, args, context) => { return context.prisma.post.create({ data: { @@ -999,6 +1029,7 @@ const Mutation = mutationType({ }, }) }, + //add-end }) }, }) @@ -1051,6 +1082,7 @@ const Mutation = mutationType({ definition(t) { // ... previous mutations + //add-start t.field('updateBio', { type: 'User', args: { @@ -1061,6 +1093,7 @@ const Mutation = mutationType({ bio: stringArg({ nullable: false }), }, }) + //add-end }, }) ``` @@ -1071,6 +1104,7 @@ If you look at the generated SDL version of your GraphQL schema inside `schema.g type Mutation { createUser(data: UserCreateInput!): User! createDraft(title: String!, content: String, authorId: String!): Post! + //highlight-next-line updateBio(bio: String!, userUniqueInput: UserUniqueInput!): User } ``` @@ -1113,6 +1147,7 @@ const Mutation = mutationType({ }), bio: stringArg() }, + //add-start resolve: (_, args, context) => { return context.prisma.user.update({ where: { @@ -1126,6 +1161,7 @@ const Mutation = mutationType({ } }) } + //add-end } } }) @@ -1181,6 +1217,7 @@ const Mutation = mutationType({ definition(t) { // ... mutations from before + //add-start t.field('addPostToCategories', { type: 'Post', args: { @@ -1191,6 +1228,7 @@ const Mutation = mutationType({ }), }, }) + //add-end }, }) ``` @@ -1202,6 +1240,7 @@ type Mutation { createUser(data: UserCreateInput!): User! createDraft(title: String!, content: String, authorId: String!): Post! updateBio(bio: String, userUniqueInput: UserUniqueInput!): User + //highlight-next-line addPostToCategories(postId: String!, categoryIds: [String!]!): Post } ``` @@ -1243,6 +1282,7 @@ const Mutation = mutationType({ nullable: false, }), }, + //add-start resolve: (_, args, context) => { const ids = args.categoryIds.map((id) => ({ id })) return context.prisma.post.update({ @@ -1254,6 +1294,7 @@ const Mutation = mutationType({ }, }) }, + //add-end }) }, }) diff --git a/content/200-orm/800-more/300-upgrade-guides/800-upgrade-from-prisma-1/06-upgrading-prisma-binding-to-sdl-first.mdx b/content/200-orm/800-more/300-upgrade-guides/800-upgrade-from-prisma-1/06-upgrading-prisma-binding-to-sdl-first.mdx index 9c91363791..fcca75b411 100644 --- a/content/200-orm/800-more/300-upgrade-guides/800-upgrade-from-prisma-1/06-upgrading-prisma-binding-to-sdl-first.mdx +++ b/content/200-orm/800-more/300-upgrade-guides/800-upgrade-from-prisma-1/06-upgrading-prisma-binding-to-sdl-first.mdx @@ -50,7 +50,7 @@ With Prisma ORM 2, there's no `prisma.graphql` file any more that you could impo The easiest way to do so is by downloading the full GraphQL schema from the GraphQL Playground. To do so, open the **SCHEMA** tab and click the **DOWNLOAD** button in the top-right corner, then select **SDL**: -![Downloading the GraphQL schema with GraphQL Playground](images/download-graphql-schema.png) +![Downloading the GraphQL schema with GraphQL Playground](./images/download-graphql-schema.png) Alternatively, you can use the `get-schema` command of the [GraphQL CLI](https://github.com/Urigo/graphql-cli) to download your full schema: @@ -64,7 +64,8 @@ Once you obtained the `schema.graphql` file, replace your current version in `sr Here's a comparison of these two versions of the sample GraphQL schema that we'll migrate in this guide (you can use the tabs to switch between the two versions): - + + ```graphql # import Post from './generated/prisma.graphql' @@ -93,6 +94,9 @@ type Mutation { } ``` + + + ```graphql type Query { posts(searchString: String): [Post!]! @@ -755,7 +759,8 @@ input UserWhereInput { } ``` - + + You'll notice that the new version of your GraphQL schema not only defines the _models_ that were imported directly, but also additional types (e.g. `input` types) that were not present in the schema before. @@ -777,10 +782,13 @@ const server = new GraphQLServer({ resolvers, context: (req) => ({ ...req, + //delete-start prisma: new Prisma({ typeDefs: 'src/generated/prisma.graphql', endpoint: 'http://localhost:4466', }), + //delete-end + //add-next-line prisma: new PrismaClient(), }), }) @@ -837,6 +845,7 @@ const resolvers = { Mutation: { // ... your mutation resolvers }, + //add-start User: { posts: (parent, args, context) => { return context.prisma.user @@ -853,6 +862,7 @@ const resolvers = { .profile() }, }, + //add-end } ``` @@ -924,6 +934,7 @@ const resolvers = { User: { // ... your type resolvers for `User` from before }, + //add-start Post: { author: (parent, args, context) => { return context.prisma.post @@ -940,6 +951,7 @@ const resolvers = { .categories() }, }, + //add-end } ``` @@ -998,6 +1010,7 @@ const resolvers = { Post: { // ... your type resolvers for `Post` from before }, + //add-start Profile: { user: (parent, args, context) => { return context.prisma.profile @@ -1007,6 +1020,7 @@ const resolvers = { .owner() }, }, + //add-end } ``` @@ -1057,6 +1071,7 @@ const resolvers = { Profile: { // ... your type resolvers for `User` from before }, + //add-start Category: { posts: (parent, args, context) => { return context.prisma @@ -1066,6 +1081,7 @@ const resolvers = { .posts() }, }, + //add-end } ``` @@ -1255,6 +1271,7 @@ To get the same behavior with the new Prisma Client, you'll need to adjust your ```js line-number highlight=3-11;normal const resolvers = { Query: { + //highlight-start posts: (_, args, context) => { return context.prisma.post.findMany({ where: { @@ -1264,6 +1281,7 @@ const resolvers = { ], }, }) + //highlight-end }, // ... other resolvers }, @@ -1328,11 +1346,13 @@ To get the same behavior with the new Prisma Client, you'll need to adjust your ```js line-number highlight=3-7;normal const resolvers = { Query: { + //highlight-start user: (_, args, context) => { return context.prisma.user.findUnique({ where: args.userUniqueInput, }) }, + //highlight-end // ... other resolvers }, } @@ -1384,11 +1404,13 @@ To get the same behavior with the new Prisma Client, you'll need to adjust your ```js line-number highlight=3-7;normal const resolvers = { Mutation: { + //highlight-start createUser: (_, args, context, info) => { return context.prisma.user.create({ data: args.data, }) }, + //highlight-end // ... other resolvers }, } @@ -1450,6 +1472,7 @@ To get the same behavior with the new Prisma Client, you'll need to adjust your ```js line-number highlight=3-15;normal const resolvers = { Mutation: { + //highlight-start createDraft: (_, args, context, info) => { return context.prisma.post.create({ data: { @@ -1463,6 +1486,7 @@ const resolvers = { }, }) }, + //highlight-end // ... other resolvers }, } @@ -1526,6 +1550,7 @@ To get the same behavior with Prisma Client, you'll need to adjust your resolver ```js line-number highlight=3-12;normal const resolvers = { Mutation: { + //highlight-start updateBio: (_, args, context, info) => { return context.prisma.user.update({ data: { @@ -1536,6 +1561,7 @@ const resolvers = { where: args.userUniqueInput, }) }, + //highlight-end // ... other resolvers }, } @@ -1605,6 +1631,7 @@ To get the same behavior with Prisma Client, you'll need to adjust your resolver ```js line-number highlight=3-13;normal const resolvers = { Mutation: { + //highlight-start addPostToCategories: (_, args, context, info) => { const ids = args.categoryIds.map((id) => ({ id })) return context.prisma.post.update({ @@ -1616,6 +1643,7 @@ const resolvers = { }, }) }, + //highlight-end // ... other resolvers }, } diff --git a/content/200-orm/800-more/300-upgrade-guides/800-upgrade-from-prisma-1/index.mdx b/content/200-orm/800-more/300-upgrade-guides/800-upgrade-from-prisma-1/index.mdx index 08de46d0a4..48b1f776b0 100644 --- a/content/200-orm/800-more/300-upgrade-guides/800-upgrade-from-prisma-1/index.mdx +++ b/content/200-orm/800-more/300-upgrade-guides/800-upgrade-from-prisma-1/index.mdx @@ -2,7 +2,7 @@ title: 'Upgrade from Prisma 1' metaTitle: 'Upgrade from Prisma 1 to Prisma ORM 2' staticLink: false -toc: false +hide_table_of_contents: true --- ## In this section diff --git a/content/200-orm/800-more/300-upgrade-guides/index.mdx b/content/200-orm/800-more/300-upgrade-guides/index.mdx index d77dcc03b2..cfa6046070 100644 --- a/content/200-orm/800-more/300-upgrade-guides/index.mdx +++ b/content/200-orm/800-more/300-upgrade-guides/index.mdx @@ -2,7 +2,7 @@ title: 'Upgrade guides' metaTitle: 'Upgrade guides' metaDescription: 'Learn how to upgrade Prisma ORM versions.' -toc: false +hide_table_of_contents: true --- ## In this section diff --git a/content/200-orm/800-more/400-comparisons/01-prisma-and-typeorm.mdx b/content/200-orm/800-more/400-comparisons/01-prisma-and-typeorm.mdx index 2f587f8719..c2ecdcf6c4 100644 --- a/content/200-orm/800-more/400-comparisons/01-prisma-and-typeorm.mdx +++ b/content/200-orm/800-more/400-comparisons/01-prisma-and-typeorm.mdx @@ -259,9 +259,9 @@ This section explains the differences in type safety when selecting a subset of TypeORM provides a `select` option for its [`find`](https://typeorm.io/#/find-options) methods (e.g. `find`, `findByIds`, `findOne`, ...), for example: -, ]}> + - + ```ts const postRepository = getManager().getRepository(Post) @@ -271,9 +271,9 @@ const publishedPosts: Post[] = await postRepository.find({ }) ``` - + - + ```ts @Entity() @@ -295,7 +295,7 @@ export class Post { } ``` - + @@ -324,9 +324,9 @@ Prisma Client can guarantee full type safety in the same situation and protects Consider the same example with a Prisma Client query: -, ]}> + - + ```ts const publishedPosts = await prisma.post.findMany({ @@ -344,9 +344,9 @@ if (post.content.length > 0) { } ``` - + - + ```prisma model Post { @@ -359,7 +359,7 @@ model Post { } ``` - + @@ -393,9 +393,9 @@ TypeORM allows to eagerly load relations from the database via the `relations` o Consider this example: -, ]}> + - + ```ts const postRepository = getManager().getRepository(Post) @@ -405,9 +405,9 @@ const publishedPosts: Post[] = await postRepository.find({ }) ``` - + - + ```ts @Entity() @@ -446,7 +446,7 @@ export class User { } ``` - + @@ -470,9 +470,9 @@ UnhandledPromiseRejectionWarning: Error: Relation "authors" was not found; pleas Prisma ORM protects you from mistakes like this and thus eliminates a whole class of errors that can occur in your application at runtime. When using `include` to load a relation in a Prisma Client query, you can not only take advantage of autocompletion to specify the query, but the result of the query will also be properly typed: -, ]}> + - + ```ts const publishedPosts = await prisma.post.findMany({ @@ -481,9 +481,9 @@ const publishedPosts = await prisma.post.findMany({ }) ``` - + - + ```ts model User { @@ -503,7 +503,7 @@ model Post { } ``` - + @@ -517,9 +517,9 @@ const publishedPosts: (Post & { For reference, this is what the `User` and `Post` types look like that Prisma Client generates for your Prisma models: -, ]}> + - + ```ts // Generated by Prisma ORM @@ -530,9 +530,9 @@ export type User = { } ``` - + - + ```ts // Generated by Prisma ORM @@ -545,7 +545,7 @@ export type Post = { } ``` - + @@ -561,9 +561,9 @@ TypeORM allows to pass a `where` option to its [`find`](https://typeorm.io/#/fin Consider this example: -, ]}> + - + ```ts const postRepository = getManager().getRepository(Post) @@ -576,9 +576,9 @@ const publishedPosts: Post[] = await postRepository.find({ }) ``` - + - + ```ts @Entity() @@ -603,7 +603,7 @@ export class Post { } ``` - + @@ -726,9 +726,9 @@ With TypeORM, there are two main ways to create new records in the database: `in Consider this example: -, , ]}> + - + ```ts const userRepository = getManager().getRepository(User) @@ -737,9 +737,9 @@ newUser.name = 'Alice' userRepository.save(newUser) ``` - + - + ```ts const userRepository = getManager().getRepository(User) @@ -748,9 +748,9 @@ userRepository.insert({ }) ``` - + - + ```ts @Entity() @@ -769,7 +769,7 @@ export class User { } ``` - + @@ -787,9 +787,9 @@ Prisma ORM protects you from these kind of mistakes by enforcing that you submit For example, the following attempt to create a new `User` where the required `email` field is missing would be caught by the TypeScript compiler: -, ]}> + - + ```ts const newUser = await prisma.user.create({ @@ -799,9 +799,9 @@ const newUser = await prisma.user.create({ }) ``` - + - + ```prisma model User { @@ -811,7 +811,7 @@ model User { } ``` - + @@ -871,7 +871,8 @@ const user = await userRepository.findOne(id, { **Prisma ORM** - + + ```ts const posts = await prisma.user.findUnique({ @@ -884,6 +885,9 @@ const posts = await prisma.user.findUnique({ }) ``` + + + ```ts const posts = await prisma.user .findUnique({ @@ -894,13 +898,15 @@ const posts = await prisma.user .post() ``` - + + > **Note**: `select` return a `user` object that includes a `post` array, whereas the fluent API only returns a `post` array. **TypeORM** - + + ```ts const userRepository = getRepository(User) @@ -909,6 +915,9 @@ const user = await userRepository.findOne(id, { }) ``` + + + ```ts const userRepository = getRepository(User) const user = await userRepository.findOne(id, { @@ -921,12 +930,16 @@ const user = await userRepository.findOne(id, { }) ``` + + + ```ts const userRepository = getRepository(User) const user = await userRepository.findOne(id) ``` - + + ### Filtering for concrete values @@ -1037,7 +1050,8 @@ const user = await prisma.user.create({ **TypeORM** - + + ```ts const user = new User() @@ -1046,6 +1060,9 @@ user.email = 'alice@prisma.io' await user.save() ``` + + + ```ts const userRepository = getRepository(User) const user = await userRepository.create({ @@ -1055,6 +1072,9 @@ const user = await userRepository.create({ await user.save() ``` + + + ```ts const userRepository = getRepository(User) await userRepository.insert({ @@ -1063,7 +1083,8 @@ await userRepository.insert({ }) ``` - + + ### Updating objects @@ -1104,19 +1125,24 @@ const deletedUser = await prisma.user.delete({ **TypeORM** - + + ```ts const userRepository = getRepository(User) await userRepository.delete(id) ``` + + + ```ts const userRepository = getRepository(User) const deletedUser = await userRepository.remove(user) ``` - + + ### Batch updates @@ -1157,19 +1183,24 @@ const users = await prisma.user.deleteMany({ **TypeORM** - + + ```ts const userRepository = getRepository(User) await userRepository.delete([id1, id2, id3]) ``` + + + ```ts const userRepository = getRepository(User) const deleteUsers = await userRepository.remove([user1, user2, user3]) ``` - + + ### Transactions diff --git a/content/200-orm/800-more/400-comparisons/02-prisma-and-sequelize.mdx b/content/200-orm/800-more/400-comparisons/02-prisma-and-sequelize.mdx index 37d67b243b..02db9d5819 100644 --- a/content/200-orm/800-more/400-comparisons/02-prisma-and-sequelize.mdx +++ b/content/200-orm/800-more/400-comparisons/02-prisma-and-sequelize.mdx @@ -61,17 +61,18 @@ const user = await prisma.user.findUnique({ const user = await User.findByPk(1, { attributes: ['name'], raw: true }) ``` - +:::tip Use the `raw: true` query option to return plain JavaScript objects. - +::: ### Fetching relations **Prisma ORM** - + + ```ts const posts = await prisma.user.findUnique({ @@ -84,6 +85,9 @@ const posts = await prisma.user.findUnique({ }) ``` + + + ```ts const posts = await prisma.user .findUnique({ @@ -94,7 +98,8 @@ const posts = await prisma.user .post() ``` - + + > **Note**: `select` returns a `user` object that includes a `post` array, whereas the fluent API only returns a `post` array. @@ -110,11 +115,11 @@ const user = await User.findByPk(id, { }) ``` - +:::tip Use `model: Post as "Post"` if you used an alias to define the relationship between `User` and `Post` - for example: `User.hasMany(Post, { as: "Post", foreignKey: "authorId" });` - +::: ### Filtering for concrete values @@ -243,8 +248,8 @@ const user = await prisma.user.create({ **Sequelize** - - + + ```ts const user = User.build({ name: 'Alice', @@ -252,15 +257,16 @@ const user = User.build({ }) await user.save() ``` - + + ```ts const user = await User.create({ name: 'Alice', email: 'alice@prisma,io', }) ``` - - + + ### Updating objects @@ -279,22 +285,23 @@ const user = await prisma.user.update({ **Sequelize** - - + + ```ts user.name = 'James' user.email = ' alice@prisma.com' await user.save() ``` - + + ```ts await User.update({ name: 'James', email: 'james@prisma.io', }) ``` - - + + ### Deleting objects @@ -391,8 +398,8 @@ const user = await prisma.user.create({ **Sequelize** - - + + ```ts return sequelize.$transaction(async (t) => { const user = await User.create( @@ -423,7 +430,8 @@ return sequelize.$transaction(async (t) => { await user.setPosts([post1, post2]) }) ``` - + + ```ts return sequelize.$transaction(async (transaction) => { try { @@ -443,5 +451,5 @@ return sequelize.$transaction(async (transaction) => { } }) ``` - - + + diff --git a/content/200-orm/800-more/400-comparisons/03-prisma-and-mongoose.mdx b/content/200-orm/800-more/400-comparisons/03-prisma-and-mongoose.mdx index 460293f7ab..3b1d86c8aa 100644 --- a/content/200-orm/800-more/400-comparisons/03-prisma-and-mongoose.mdx +++ b/content/200-orm/800-more/400-comparisons/03-prisma-and-mongoose.mdx @@ -53,8 +53,8 @@ const user = await User.findById(1).select(['name']) **Prisma ORM** - - + + ```ts const userWithPost = await prisma.user.findUnique({ where: { @@ -65,7 +65,8 @@ const userWithPost = await prisma.user.findUnique({ }, }) ``` - + + ```ts const userWithPost = await prisma.user .findUnique({ @@ -75,8 +76,8 @@ const userWithPost = await prisma.user }) .post() ``` - - + + **Mongoose** @@ -190,15 +191,16 @@ const user = await prisma.user.create({ **Mongoose** - - + + ```ts const user = await User.create({ name: 'Alice', email: 'alice@prisma.io', }) ``` - + + ```ts const user = new User({ name: 'Alice', @@ -206,8 +208,8 @@ const user = new User({ }) await user.save() ``` - - + + ## Updating objects @@ -226,8 +228,8 @@ const user = await prisma.user.update({ **Mongoose** - - + + ```ts const updatedUser = await User.findOneAndUpdate( { _id: 2 }, @@ -238,13 +240,14 @@ const updatedUser = await User.findOneAndUpdate( } ) ``` - + + ```ts user.name = 'Alicia' await user.save() ``` - - + + ## Deleting objects diff --git a/content/200-orm/800-more/400-comparisons/04-prisma-and-drizzle.mdx b/content/200-orm/800-more/400-comparisons/04-prisma-and-drizzle.mdx index 8ec61416bb..09061a67ec 100644 --- a/content/200-orm/800-more/400-comparisons/04-prisma-and-drizzle.mdx +++ b/content/200-orm/800-more/400-comparisons/04-prisma-and-drizzle.mdx @@ -441,7 +441,7 @@ These products work hand-in-hand with Prisma ORM to offer comprehensive data too Both Drizzle and Prisma ORM have cases where users want to do something not directly supported by the library. Drizzle relies on the expressiveness of SQL to avoid these cases, while Prisma ORM has [Prisma Client extensions](/orm/prisma-client/client-extensions) to allow any user to add additional behaviors to their instance of Prisma Client. These extensions are also shareable, meaning teams can develop them for use across their projects or even for use by other teams. -While Drizzle is a relatively new product, Prisma ORM was [released in 2021](https://www.prisma.io/blog/prisma-the-complete-orm-inw24qjeawmb) and is well established in the JavaScript/TypeScript space. It has proven value , many companies trust [Prisma ORM in production](http://prisma.io/showcase). +While Drizzle is a relatively new product, Prisma ORM was [released in 2021](https://www.prisma.io/blog/prisma-the-complete-orm-inw24qjeawmb) and is well established in the JavaScript/TypeScript space. It has proven value and many companies trust [Prisma ORM in production](http://prisma.io/showcase). Prisma ORM is also included as the data layer tool of choice in many meta-frameworks and development platforms like [Amplication](https://amplication.com/), [Wasp](https://wasp-lang.dev/), [RedwoodJS](https://redwoodjs.com/), [KeystoneJS](https://keystonejs.com/), [Remix](https://remix.run/) and the [t3 stack](https://create.t3.gg/). diff --git a/content/200-orm/800-more/400-comparisons/index.mdx b/content/200-orm/800-more/400-comparisons/index.mdx index 4653734494..7f31ede4da 100644 --- a/content/200-orm/800-more/400-comparisons/index.mdx +++ b/content/200-orm/800-more/400-comparisons/index.mdx @@ -2,6 +2,7 @@ title: 'Comparing Prisma ORM' metaTitle: 'Comparing Prisma ORM to other ORMs and ODMs.' metaDescription: 'Learn how Prisma ORM compares to other ORMs, ODMs, and database libraries, like TypeORM, Sequelize and Mongoose.' +hide_table_of_contents: true --- diff --git a/content/200-orm/800-more/450-migrating-to-prisma/01-migrate-from-typeorm.mdx b/content/200-orm/800-more/450-migrating-to-prisma/01-migrate-from-typeorm.mdx index 3a6932db71..fd9b267c5b 100644 --- a/content/200-orm/800-more/450-migrating-to-prisma/01-migrate-from-typeorm.mdx +++ b/content/200-orm/800-more/450-migrating-to-prisma/01-migrate-from-typeorm.mdx @@ -32,9 +32,9 @@ Prisma ORM lends itself really well for **incremental adoption**. This means, yo For this guide, we'll use a REST API built with Express as a [sample project](https://github.com/prisma/migrate-from-typeorm-to-prisma) to migrate to Prisma ORM. It has four models/entities: -, , , ]}> + - + ```ts @Entity() @@ -56,9 +56,9 @@ export class User { } ``` - + - + ```ts @Entity() @@ -84,9 +84,9 @@ export class Post { } ``` - + - + ```ts @Entity() @@ -103,9 +103,9 @@ export class Profile { } ``` - + - + ```ts @Entity() @@ -121,7 +121,7 @@ export class Category { } ``` - + @@ -133,7 +133,9 @@ The models have the following relations: The corresponding tables have been created using a generated TypeORM migration. -
Expand to view details of the migration +
+ +Expand to view details of the migration The migration has been created using @@ -263,7 +265,7 @@ This command created a new directory called `prisma` with the following files fo The Prisma schema file currently looks as follows: -```prisma file=prisma/schema.prisma +```prisma file=prisma/schema.prisma showLineNumbers // This is your Prisma schema file, // learn more about it in the docs: https://pris.ly/d/prisma-schema @@ -277,73 +279,78 @@ generator client { } ``` - +:::tip If you're using VS Code, be sure to install the [Prisma VS Code extension](https://marketplace.visualstudio.com/items?itemName=Prisma.prisma) for syntax highlighting, formatting, auto-completion and a lot more cool features. - +::: ### 2.2. Connect your database If you're not using PostgreSQL, you need to adjust the `provider` field on the `datasource` block to the database you currently use: -, , , ]}> - - + + +
-```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers datasource db { provider = "postgresql" url = env("DATABASE_URL") } ``` -
+ - + +
-```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers datasource db { provider = "mysql" url = env("DATABASE_URL") } ``` -
+ - + +
-```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers datasource db { provider = "sqlserver" url = env("DATABASE_URL") } ``` -
+ - + +
-```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers datasource db { provider = "sqlite" url = env("DATABASE_URL") } ``` -
+
Once that's done, you can configure your [database connection URL](/orm/reference/connection-urls) in the `.env` file. Here's how the database connection from TypeORM maps to the connection URL format used by Prisma ORM: -, , , ]}> + - + +
Assume you have the following database connection details in `ormconfig.json`: +
-```json file=ormconfig.json +```json file=ormconfig.json showLineNumbers { "type": "postgres", "host": "localhost", @@ -353,28 +360,36 @@ Assume you have the following database connection details in `ormconfig.json`: "database": "blog-typeorm" } ``` +
The respective connection URL would look as follows in Prisma ORM: +
-```env file=.env +```env file=.env showLineNumbers DATABASE_URL="postgresql://alice:myPassword42@localhost:5432/blog-typeorm" ``` +
Note that you can optionally configure the PostgreSQL [schema](https://www.postgresql.org/docs/9.1/ddl-schemas.html) by appending the `schema` argument to the connection URL: +
-```env file=.env +```env file=.env showLineNumbers DATABASE_URL="postgresql://alice:myPassword42@localhost:5432/blog-typeorm?schema=myschema" ``` +
If not provided, the default schema called `public` is being used. +
-
+ - + +
Assume you have the following database connection details in `ormconfig.json`: +
-```json file=ormconfig.json +```json file=ormconfig.json showLineNumbers { "type": "mysql", "host": "localhost", @@ -384,20 +399,24 @@ Assume you have the following database connection details in `ormconfig.json`: "database": "blog-typeorm" } ``` +
The respective connection URL would look as follows in Prisma: +
-```env file=.env +```env file=.env showLineNumbers DATABASE_URL="mysql://alice:myPassword42@localhost:3306/blog-typeorm" ``` -
+ - + +
Assume you have the following database connection details in `ormconfig.json`: +
-```json file=ormconfig.json +```json file=ormconfig.json showLineNumbers { "type": "mssql", "host": "localhost", @@ -407,33 +426,39 @@ Assume you have the following database connection details in `ormconfig.json`: "database": "blog-typeorm" } ``` +
The respective connection URL would look as follows in Prisma: +
-```env file=.env +```env file=.env showLineNumbers DATABASE_URL="sqlserver://localhost:1433;database=blog-typeorm;user=alice;password=myPassword42;trustServerCertificate=true" ``` -
+ - + +
Assume you have the following database connection details in `ormconfig.json`: +
-```json file=ormconfig.json +```json file=ormconfig.json showLineNumbers { "type": "sqlite", "database": "blog-typeorm" } ``` +
The respective connection URL would look as follows in Prisma: +
-```env file=.env +```env file=.env showLineNumbers DATABASE_URL="file:./blog-typeorm.db" ``` -
+
@@ -447,7 +472,7 @@ npx prisma db pull This creates the following Prisma models: -```prisma file=prisma/schema.prisma +```prisma file=prisma/schema.prisma showLineNumbers model typeorm_migrations { id Int @id @default(autoincrement()) timestamp Int @@ -552,7 +577,7 @@ You can further completely remove model that represents the TypeORM migrations t Here's an adjusted version of the Prisma schema that addresses these points: -```prisma file=prisma/schema.prisma +```prisma file=prisma/schema.prisma showLineNumbers model Category { id Int @id @default(autoincrement()) name String @@ -625,7 +650,7 @@ touch src/prisma.ts Now, instantiate `PrismaClient` and export it from the file so you can use it in your route handlers later: -```ts copy file=src/prisma.ts +```ts copy file=src/prisma.ts showLineNumbers import { PrismaClient } from '@prisma/client' export const prisma = new PrismaClient() @@ -645,7 +670,7 @@ Let's dive into the route handlers that implement these requests. The `/feed` handler is currently implemented as follows: -```ts file=src/controllers/FeedAction.ts +```ts file=src/controllers/FeedAction.ts showLineNumbers import { getManager } from 'typeorm' import { Post } from '../entity/Post' @@ -665,7 +690,7 @@ Note that each returned `Post` object includes the relation to the `author` it's Here is how the same route is implemented using Prisma Client: -```ts file=src/controllers/FeedAction.ts +```ts file=src/controllers/FeedAction.ts showLineNumbers import { prisma } from '../prisma' export async function feedAction(req, res) { @@ -684,7 +709,7 @@ Note that the way how Prisma Client includes the `author` relation is absolutely The `/filterPosts` handler is currently implemented as follows: -```ts file=src/controllers/FilterPostsActions.ts +```ts file=src/controllers/FilterPostsActions.ts showLineNumbers import { getManager, Like } from 'typeorm' import { Post } from '../entity/Post' @@ -705,7 +730,7 @@ export async function filterPostsAction(req, res) { With Prisma ORM, the route is implemented as follows: -```ts file=src/controllers/FilterPostsActions.ts +```ts file=src/controllers/FilterPostsActions.ts showLineNumbers import { prisma } from '../prisma' export async function filterPostsAction(req, res) { @@ -734,7 +759,7 @@ Note that TypeORM by default combines several `where` conditions with an implici The `/post/:postId` handler is currently implemented as follows: -```ts file=src/controllers/GetPostByIdAction.ts +```ts file=src/controllers/GetPostByIdAction.ts showLineNumbers import { getManager } from 'typeorm' import { Post } from '../entity/Post' @@ -750,7 +775,7 @@ export async function getPostByIdAction(req, res) { With Prisma ORM, the route is implemented as follows: -```ts file=src/controllers/GetPostByIdAction.ts +```ts file=src/controllers/GetPostByIdAction.ts showLineNumbers import { prisma } from '../prisma' export async function getPostByIdAction(req, res) { @@ -776,7 +801,7 @@ The REST API has three routes that accept `POST` requests: The `/user` handler is currently implemented as follows: -```ts file=src/controllers/CreateUserAction.ts +```ts file=src/controllers/CreateUserAction.ts showLineNumbers import { getManager } from 'typeorm' import { User } from '../entity/User' @@ -796,7 +821,7 @@ export async function createUserAction(req, res) { With Prisma ORM, the route is implemented as follows: -```ts file=src/controllers/CreateUserAction.ts +```ts file=src/controllers/CreateUserAction.ts showLineNumbers import { prisma } from '../prisma' export async function createUserAction(req, res) { @@ -842,7 +867,7 @@ export async function createDraftAction(req, res) { With Prisma ORM, the route is implemented as follows: -```ts file=src/controllers/CreateDraftAction.ts +```ts file=src/controllers/CreateDraftAction.ts showLineNumbers import { prisma } from '../prisma' export async function createDraftAction(req, res) { @@ -868,7 +893,7 @@ Note that Prisma Client's nested write here save an initial query where first th The `/user/:userId/profile` handler is currently implemented as follows: -```ts file=src/controllers/SetBioForUserAction.ts.ts +```ts file=src/controllers/SetBioForUserAction.ts.ts showLineNumbers import { getManager } from 'typeorm' import { Profile } from '../entity/Profile' import { User } from '../entity/User' @@ -893,7 +918,7 @@ export async function setBioForUserAction(req, res) { With Prisma ORM, the route is implemented as follows: -```ts file=src/controllers/SetBioForUserAction.ts.ts +```ts file=src/controllers/SetBioForUserAction.ts.ts showLineNumbers import { prisma } from '../prisma' export async function setBioForUserAction(req, res) { @@ -927,7 +952,7 @@ Let's dive into the route handlers that implement these requests. The `/addPostToCategory?postId=POST_ID&categoryId=CATEGORY_ID` handler is currently implemented as follows: -```ts file=src/controllers/AddPostToCategoryAction.ts +```ts file=src/controllers/AddPostToCategoryAction.ts showLineNumbers import { getManager } from 'typeorm' import { Post } from '../entity/Post' import { Category } from '../entity/Category' @@ -952,7 +977,7 @@ export async function addPostToCategoryAction(req, res) { With Prisma ORM, the route is implemented as follows: -```ts file=src/controllers/AddPostToCategoryAction.ts +```ts file=src/controllers/AddPostToCategoryAction.ts showLineNumbers import { prisma } from '../prisma' export async function addPostToCategoryAction(req, res) { @@ -979,7 +1004,7 @@ export async function addPostToCategoryAction(req, res) { Note that this Prisma Client can be made less verbose by modeling the relation as an [implicit many-to-many relation](#implicit-many-to-many-relations) instead. In that case, the query would look as follows: -```ts file=src/controllers/AddPostToCategoryAction.ts +```ts file=src/controllers/AddPostToCategoryAction.ts showLineNumbers const post = await prisma.post.update({ data: { categories: { @@ -1087,7 +1112,7 @@ In this Prisma schema, the many-to-many relation is modeled _explicitly_ via the By adhering to the conventions for Prisma ORM relation tables, the relation could look as follows: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers model Category { id Int @id @default(autoincrement()) name String @@ -1114,7 +1139,5 @@ This would also result in a more ergonomic and less verbose Prisma Client API to If your database provider requires tables to have primary keys then you have to use explicit syntax, and manually create the join model with a primary key. - This is because relation tables (JOIN tables) created by Prisma ORM (expressed - via `@relation`) for many-to-many relations using implicit syntax do not have - primary keys. + This is because relation tables (JOIN tables) created by Prisma ORM (expressed via `@relation`) for many-to-many relations using implicit syntax do not have primary keys. diff --git a/content/200-orm/800-more/450-migrating-to-prisma/02-migrate-from-sequelize.mdx b/content/200-orm/800-more/450-migrating-to-prisma/02-migrate-from-sequelize.mdx index 72d7471bfd..5fb2d8e501 100644 --- a/content/200-orm/800-more/450-migrating-to-prisma/02-migrate-from-sequelize.mdx +++ b/content/200-orm/800-more/450-migrating-to-prisma/02-migrate-from-sequelize.mdx @@ -32,9 +32,9 @@ Prisma ORM lends itself really well for **incremental adoption**. This means, yo For this guide, we'll use a REST API built with Express as a [sample project](https://github.com/prisma/migrate-from-sequelize-to-prisma) to migrate to Prisma ORM. It has four models/entities: -, , , ]}> + - + ```js module.exports = (sequelize, DataTypes) => { @@ -63,9 +63,9 @@ module.exports = (sequelize, DataTypes) => { } ``` - + - + ```js module.exports = (sequelize, DataTypes) => { @@ -96,9 +96,9 @@ module.exports = (sequelize, DataTypes) => { } ``` - + - + ```js module.exports = (sequelize, DataTypes) => { @@ -118,9 +118,9 @@ module.exports = (sequelize, DataTypes) => { } ``` - + - + ```js module.exports = (sequelize, DataTypes) => { @@ -140,7 +140,7 @@ module.exports = (sequelize, DataTypes) => { } ``` - + @@ -195,7 +195,7 @@ This command created a new directory called `prisma` with the following files fo The Prisma schema file currently looks as follows: -```prisma file=prisma/schema.prisma +```prisma file=prisma/schema.prisma showLineNumbers // This is your Prisma schema file, // learn more about it in the docs: https://pris.ly/d/prisma-schema @@ -209,19 +209,19 @@ generator client { } ``` - +:::tip If you're using VS Code, be sure to install the [Prisma VS Code extension](https://marketplace.visualstudio.com/items?itemName=Prisma.prisma) for syntax highlighting, formatting, auto-completion and a lot more cool features. - +::: ### 2.2. Connect your database If you're not using PostgreSQL, you need to adjust the `provider` field on the `datasource` block to the database you currently use: -, , , ]}> + - + ```prisma datasource db { @@ -230,9 +230,9 @@ datasource db { } ``` - + - + ```prisma datasource db { @@ -241,9 +241,9 @@ datasource db { } ``` - + - + ```prisma datasource db { @@ -252,9 +252,9 @@ datasource db { } ``` - + - + ```prisma datasource db { @@ -263,17 +263,19 @@ datasource db { } ``` - + Once that's done, you can configure your [database connection URL](/orm/reference/connection-urls) in the `.env` file. Here's how the database connection from Sequelize maps to the connection URL format used by Prisma ORM: -, , , ]}> + - + +
Assume you have the following database connection details in `src/models/index.js`: +
```js file=src/models/index.js const sequelize = new Sequelize('blog-sequelize', 'alice', 'myPassword42', { @@ -281,26 +283,33 @@ const sequelize = new Sequelize('blog-sequelize', 'alice', 'myPassword42', { dialect: 'postgres', }) ``` - +
The respective connection URL would look as follows in Prisma ORM: +
```env file=.env DATABASE_URL="postgresql://alice:myPassword42@localhost:5432/blog-sequelize" ``` +
Note that you can optionally configure the PostgreSQL [schema](https://www.postgresql.org/docs/9.1/ddl-schemas.html) by appending the `schema` argument to the connection URL: +
```env file=.env DATABASE_URL="postgresql://alice:myPassword42@localhost:5432/blog-sequelize?schema=myschema" ``` +
If not provided, the default schema called `public` is being used. +
-
+ - + +
Assume you have the following database connection details in `src/models/index.js`: +
```js file=src/models/index.js const sequelize = new Sequelize('blog-sequelize', 'alice', 'myPassword42', { @@ -308,18 +317,22 @@ const sequelize = new Sequelize('blog-sequelize', 'alice', 'myPassword42', { dialect: 'postgres', }) ``` +
The respective connection URL would look as follows in Prisma: +
```env file=.env DATABASE_URL="mysql://alice:myPassword42@localhost:3306/blog-sequelize" ``` -
+ - + +
Assume you have the following database connection details in `src/models/index.js`: +
```js file=src/models/index.js const sequelize = new Sequelize('blog-sequelize', 'alice', 'myPassword42', { @@ -327,18 +340,22 @@ const sequelize = new Sequelize('blog-sequelize', 'alice', 'myPassword42', { dialect: 'mssql', }) ``` +
The respective connection URL would look as follows in Prisma: +
```env file=.env DATABASE_URL="sqlserver://localhost:1433;database=blog-sequelize;user=alice;password=myPassword42;trustServerCertificate=true" ``` -
+ - + +
Assume you have the following database connection details in `src/models/index.js`: +
```js file=src/models/index.js const sequelize = new Sequelize({ @@ -346,14 +363,16 @@ const sequelize = new Sequelize({ storage: '../../blog-sequelize.sqlite', }) ``` +
The respective connection URL would look as follows in Prisma: +
```env file=.env DATABASE_URL="file:./blog-sequelize.db" ``` -
+
@@ -367,7 +386,7 @@ npx prisma db pull This creates the following Prisma models: -```prisma file=prisma/schema.prisma +```prisma file=prisma/schema.prisma showLineNumbers model Categories { id Int @id @default(autoincrement()) name String @@ -463,7 +482,7 @@ Therefore, you'll add `@default(now())` and `@updatedAt` attributes to the `crea To learn more how Prisma ORM does this, you can read more [`@default(now())`](/orm/reference/prisma-schema-reference#now) and [`@updatedAt`](/orm/reference/prisma-schema-reference#updatedat) here. Our updated schema will be as follows: -```prisma file=prisma/schema.prisma +```prisma file=prisma/schema.prisma showLineNumbers model Categories { id Int @id @default(autoincrement()) name String @@ -538,7 +557,7 @@ Sequelize generates a `SequelizeMeta` model that is used internally by the libra Here's an adjusted version of the Prisma schema that addresses these points: -```prisma file=prisma/schema.prisma +```prisma file=prisma/schema.prisma showLineNumbers generator client { provider = "prisma-client-js" } @@ -628,7 +647,7 @@ touch src/prisma.js Now, instantiate `PrismaClient` and export it from the file so you can use it in your route handlers later: -```js copy file=src/prisma.js +```js copy file=src/prisma.js showLineNumbers const { PrismaClient } = require('@prisma/client') const prisma = new PrismaClient() @@ -638,22 +657,22 @@ module.exports = prisma The imports in our controller files are as follows: -```js file=src/controllers/post.js +```js file=src/controllers/post.js showLineNumbers const { Post, User, Category } = require('../models') const { Op } = require('sequelize') ``` -```js file=src/controllers/user.js +```js file=src/controllers/user.js showLineNumbers const { User } = require('../models') ``` You'll update the controller imports as you migrate from Sequelize to Prisma: -```js file=src/controllers/post.js +```js file=src/controllers/post.js showLineNumbers const prisma = require('../prisma') ``` -```js file=src/controllers/user.js +```js file=src/controllers/user.js showLineNumbers const prisma = require('../prisma') ``` @@ -672,7 +691,7 @@ Let's dive into the route handlers that implement these requests. The `/feed` handler is currently implemented as follows: -```js file=src/controllers/post.js +```js file=src/controllers/post.js showLineNumbers const feed = async (req, res) => { try { const feed = await Post.findAll({ @@ -710,7 +729,7 @@ Note that the way how Prisma Client includes the `author` relation is absolutely The `/filterPosts` handler is currently implemented as follows: -```js file=src/controllers/post.js +```js file=src/controllers/post.js showLineNumbers const filterPosts = async (req, res) => { const { searchString } = req.query @@ -742,7 +761,7 @@ const filterPosts = async (req, res) => { With Prisma ORM, the route is implemented as follows: -```js file=src/controllers/post.js +```js file=src/controllers/post.js showLineNumbers const filterPosts = async (req, res) => { const { searchString } = req.query @@ -773,7 +792,7 @@ Note that Sequelize provides [Operator symbols](https://sequelize.org/master/var The `/post/:postId` handler is currently implemented as follows: -```js file=src/controllers/post.js +```js file=src/controllers/post.js showLineNumbers const getPostById = async (req, res) => { const { postId } = req.params @@ -792,7 +811,7 @@ const getPostById = async (req, res) => { With Prisma ORM, the route is implemented as follows: -```js file=src/controllers/post.js +```js file=src/controllers/post.js showLineNumbers const getPostById = async (req, res) => { const { postId } = req.params @@ -863,7 +882,7 @@ const createUser = async (req, res) => { The `/post` handler is currently implemented as follows: -```js file=src/controllers/post.js +```js file=src/controllers/post.js showLineNumbers const createDraft = async (req, res) => { const { title, content, authorEmail } = req.body @@ -885,7 +904,7 @@ const createDraft = async (req, res) => { With Prisma ORM, the route is implemented as follows: -```js file=src/controllers/post.js +```js file=src/controllers/post.js showLineNumbers const createDraft = async (req, res) => { const { title, content, authorEmail } = req.body @@ -970,7 +989,7 @@ Let's dive into the route handlers that implement these requests. The `/addPostToCategory?postId=POST_ID&categoryId=CATEGORY_ID` handler is currently implemented as follows: -```js file=src/controllers/post.js +```js file=src/controllers/post.js showLineNumbers const addPostToCategory = async (req, res) => { const { postId, categoryId } = req.query @@ -994,7 +1013,7 @@ const addPostToCategory = async (req, res) => { With Prisma ORM, the route is implemented as follows: -```js file=src/controllers/post.js +```js file=src/controllers/post.js showLineNumbers const addPostToCategory = async (req, res) => { const { postId, categoryId } = req.query @@ -1023,7 +1042,7 @@ const addPostToCategory = async (req, res) => { Note that this Prisma Client can be made less verbose by modeling the relation as an [implicit many-to-many relation](#implicit-many-to-many-relations) instead. In that case, the query would look as follows: -```js file=src/controllers/posts.js +```js file=src/controllers/posts.js showLineNumbers const post = await prisma.post.update({ data: { category: { diff --git a/content/200-orm/800-more/450-migrating-to-prisma/03-migrate-from-mongoose.mdx b/content/200-orm/800-more/450-migrating-to-prisma/03-migrate-from-mongoose.mdx index 8c2bcd9bd5..3188962a7f 100644 --- a/content/200-orm/800-more/450-migrating-to-prisma/03-migrate-from-mongoose.mdx +++ b/content/200-orm/800-more/450-migrating-to-prisma/03-migrate-from-mongoose.mdx @@ -29,9 +29,9 @@ Prisma ORM lends itself really well for **incremental adoption**. This means, yo For this guide, we'll use a REST API built with Express as a [sample project](https://github.com/prisma/migrate-from-mongoose-to-prisma) to migrate to Prisma ORM. It has three documents and one sub-document (embedded document): -, , ]}> + - + ```js const mongoose = require('mongoose') @@ -61,9 +61,9 @@ const PostSchema = new Schema({ module.exports = mongoose.model('Post', PostSchema) ``` - + - + ```js const mongoose = require('mongoose') @@ -94,9 +94,9 @@ const UserSchema = new Schema({ module.exports = mongoose.model('User', UserSchema) ``` - + - + ```js const mongoose = require('mongoose') @@ -113,7 +113,7 @@ const CategorySchema = new Schema({ module.exports = mongoose.model('Category', CategorySchema) ``` - + @@ -172,7 +172,7 @@ This command creates: The Prisma schema file currently looks as follows: -```prisma file=prisma/schema.prisma +```prisma file=prisma/schema.prisma showLineNumbers // This is your Prisma schema file, // learn more about it in the docs: https://pris.ly/d/prisma-schema @@ -185,12 +185,13 @@ generator client { provider = "prisma-client-js" } ``` +
- +:::tip For an optimal development experience when working with Prisma ORM, refer to [editor setup](/orm/more/development-environment/editor-setup) to learn about syntax highlighting, formatting, auto-completion, and many more cool features. - +::: ### 2.2. Connect your database @@ -216,7 +217,7 @@ npx prisma db pull This creates the following Prisma models: -```prisma file=prisma/schema.prisma +```prisma file=prisma/schema.prisma showLineNumbers type UsersProfile { bio String } @@ -252,15 +253,15 @@ The generated Prisma models represent the MongoDB collections and are the founda MongoDB doesn't support relations between different collections. However, you can create references between documents using the [`ObjectId`](/orm/overview/databases/mongodb#using-objectid) field type or from one document to many using an array of `ObjectIds` in the collection. The reference will store id(s) of the related document(s). You can use the `populate()` method that Mongoose provides to populate the reference with the data of the related document. -Update the 1-n relationship between `Post` <-> `User` as follows: +Update the 1-n relationship between `Post` \<-> `User` as follows: - Rename the existing `author` reference in the `posts` model to `authorId` and add the `@map("author")` attribute - Add the `author` relation field in the `posts` model and it's `@relation` attribute specifying the `fields` and `references` - Add the `posts` relation in the `users` model -, ]}> + - + ```prisma type UsersProfile { @@ -297,11 +298,11 @@ model users { } ``` - + - + -```prisma +```prisma file=schema.prisma type UsersProfile { bio String } @@ -335,11 +336,11 @@ model users { } ``` - + -Update the m-n between `Post` <-> `Category` references as follows: +Update the m-n between `Post` \<-\> `Category` references as follows: - Rename the `categories` field to `categoryIds` and map it using `@map("categories")` in the `posts` model - Add a new `categories` relation field in the `posts` model @@ -348,9 +349,9 @@ Update the m-n between `Post` <-> `Category` references as follows: - Add a [relation scalar](/orm/prisma-schema/data-model/relations#annotated-relation-fields) on both models - Add the `@relation` attribute specifying the `fields` and `references` arguments on both sides -, ]}> + - + ```prisma type UsersProfile { @@ -390,11 +391,11 @@ model users { } ``` - + - + -```prisma +```prisma file=schema.prisma type UsersProfile { bio String } @@ -432,7 +433,7 @@ model users { } ``` - + @@ -449,11 +450,11 @@ As opposed to the current snake_case notation of Prisma models, Prisma ORM's nam You can adjust the naming by [_mapping_](/orm/overview/databases/mongodb#using-objectid) the Prisma model and field names to the existing table and column names in the underlying database using `@@map` and `@map`, respectively. - +:::tip You can use the [rename symbol](https://code.visualstudio.com/docs/editor/refactoring#_rename-symbol) operation to refactor model names by highlighting the model name, pressing F2, and finally typing the desired name. This will rename all instances where it is referenced and add the `@@map()` attribute to the existing model with its former name. - +::: If your schema includes a [`versionKey`](https://mongoosejs.com/docs/guide.html#versionKey), update it by adding the `@default(0)` and `@ignore` attributes to the `v` field. This means the field will be excluded from the generated Prisma Client and will have a default value of 0. Prisma ORM does not handle document versioning. @@ -465,7 +466,7 @@ You can also rename the `UserProfile` composite type to `Profile`. Here's an adjusted version of the Prisma schema that addresses these points: -```prisma file=prisma/schema.prisma highlight=10,14,17,22,25,29,30,38,41,43,46,49;normal +```prisma file=prisma/schema.prisma highlight=10,14,17,22,25,29,30,38,41,43,46,49;normal showLineNumbers generator client { provider = "prisma-client-js" } @@ -475,27 +476,34 @@ datasource db { url = env("DATABASE_URL") } +//highlight-next-line type Profile { bio String } +//highlight-next-line model Category { id String @id @default(auto()) @map("_id") @db.ObjectId name String + //highlight-next-line v Int @default(0) @map("__v") @ignore posts Post[] @relation(fields: [post_ids], references: [id]) post_ids String[] @db.ObjectId + //highlight-next-line @@map("categories") } +//highlight-next-line model Post { id String @id @default(auto()) @map("_id") @db.ObjectId title String content String + //highlight-start published Boolean @default(false) v Int @default(0) @map("__v") @ignore + //highlight-end author User @relation(fields: [authorId], references: [id]) authorId String @map("author") @db.ObjectId @@ -503,17 +511,22 @@ model Post { categories Category[] @relation(fields: [categoryIds], references: [id]) categoryIds String[] @db.ObjectId + //highlight-next-line @@map("posts") } +//highlight-next-line model User { id String @id @default(auto()) @map("_id") @db.ObjectId + //highlight-next-line v Int @default(0) @map("__v") @ignore email String @unique(map: "email_1") name String + //highlight-next-line profile Profile? posts Post[] + //highlight-next-line @@map("users") } ``` @@ -533,12 +546,12 @@ In this section, we'll show a few sample queries that are being migrated from Mo First, to set up the `PrismaClient` instance that you'll use to send database queries from the various route handlers, create a new file named `prisma.js` in the `src` directory: ```terminal copy -touch src/prisma.js +touch src/prisma.js ``` Now, instantiate `PrismaClient` and export it from the file so you can use it in your route handlers later: -```js copy file=src/prisma.js +```js copy file=src/prisma.js showLineNumbers const { PrismaClient } = require('@prisma/client') const prisma = new PrismaClient() @@ -548,24 +561,24 @@ module.exports = prisma The imports in our controller files are as follows: -```js file=src/controllers/post.js +```js file=src/controllers/post.js showLineNumbers const Post = require('../models/post') const User = require('../models/user') const Category = require('../models/category') ``` -```js file=src/controllers/user.js +```js file=src/controllers/user.js showLineNumbers const Post = require('../models/post') const User = require('../models/user') ``` You'll update the controller imports as you migrate from Mongoose to Prisma: -```js file=src/controllers/post.js +```js file=src/controllers/post.js showLineNumbers const prisma = require('../prisma') ``` -```js file=src/controllers/user.js +```js file=src/controllers/user.js showLineNumbers const prisma = require('../prisma') ``` @@ -587,7 +600,7 @@ Let's dive into the route handlers that implement these requests. The `/feed` handler is implemented as follows: -```js file=src/controllers/post.js +```js file=src/controllers/post.js showLineNumbers const feed = async (req, res) => { try { const { searchString, skip, take } = req.query @@ -627,7 +640,7 @@ Note that each returned `Post` object includes the relation to the `author` and Here is how the same route handler is implemented using Prisma Client: -```js file=src/controllers/post.js +```js file=src/controllers/post.js showLineNumbers const feed = async (req, res) => { try { const { searchString, skip, take } = req.query @@ -664,7 +677,7 @@ Note that the way in which Prisma Client includes the `author` relation is absol The `/post/:id` handler is implemented as follows: -```js file=src/controllers/post.js +```js file=src/controllers/post.js showLineNumbers const getPostById = async (req, res) => { const { id } = req.params @@ -684,7 +697,7 @@ const getPostById = async (req, res) => { With Prisma ORM, the route handler is implemented as follows: -```js file=src/controllers/post.js +```js file=src/controllers/post.js showLineNumbers const getPostById = async (req, res) => { const { id } = req.params @@ -718,7 +731,7 @@ The REST API has three routes that accept `POST` requests: The `/user` handler is implemented as follows: -```js file=src/controllers/user.js +```js file=src/controllers/user.js showLineNumbers const createUser = async (req, res) => { const { name, email } = req.body @@ -737,7 +750,7 @@ const createUser = async (req, res) => { With Prisma ORM, the route handler is implemented as follows: -```js file=src/controllers/user.js +```js file=src/controllers/user.js showLineNumbers const createUser = async (req, res) => { const { name, email } = req.body @@ -760,7 +773,7 @@ const createUser = async (req, res) => { The `/post` handler is implemented as follows: -```js file=src/controllers/post.js +```js file=src/controllers/post.js showLineNumbers const createDraft = async (req, res) => { const { title, content, authorEmail } = req.body @@ -784,7 +797,7 @@ const createDraft = async (req, res) => { With Prisma ORM, the route handler is implemented as follows: -```js file=src/controllers/post.js +```js file=src/controllers/post.js showLineNumbers const createDraft = async (req, res) => { const { title, content, authorEmail } = req.body @@ -814,7 +827,7 @@ Note that Prisma Client's nested write here saves the initial query where the `U The `/user/:id/profile` handler is implemented as follows: -```js file=src/controllers/user.js +```js file=src/controllers/user.js showLineNumbers const setUserBio = async (req, res) => { const { id } = req.params const { bio } = req.body @@ -841,7 +854,7 @@ const setUserBio = async (req, res) => { With Prisma ORM, the route handler is implemented as follows: -```js file=src/controllers/user.js +```js file=src/controllers/user.js showLineNumbers const setUserBio = async (req, res) => { const { id } = req.params const { bio } = req.body @@ -868,7 +881,7 @@ const setUserBio = async (req, res) => { Alternatively, you can use the `set` property to update the value of an embedded document as follows: -```js file=src/controllers/user.js +```js file=src/controllers/user.js showLineNumbers const setUserBio = async (req, res) => { const { id } = req.params const { bio } = req.body @@ -906,7 +919,7 @@ Let's dive into the route handlers that implement these requests. The `/post/:id/:categoryId` handler is implemented as follows: -```js file=src/controllers/post.js +```js file=src/controllers/post.js showLineNumbers const addPostToCategory = async (req, res) => { const { id, categoryId } = req.params @@ -934,7 +947,7 @@ const addPostToCategory = async (req, res) => { With Prisma ORM, the handler is implemented as follows: -```js file=src/controllers/post.js +```js file=src/controllers/post.js showLineNumbers const addPostToCategory = async (req, res) => { const { id, categoryId } = req.query @@ -966,7 +979,7 @@ const addPostToCategory = async (req, res) => { The `/post/:id` handler is implemented as follows: -```js file=src/controllers/post.js +```js file=src/controllers/post.js showLineNumbers const publishDraft = async (req, res) => { const { id } = req.params @@ -985,7 +998,7 @@ const publishDraft = async (req, res) => { With Prisma ORM, the handler is implemented as follows: -```js file=src/controllers/post.js +```js file=src/controllers/post.js showLineNumbers const publishDraft = async (req, res) => { const { id } = req.params diff --git a/content/200-orm/800-more/450-migrating-to-prisma/index.mdx b/content/200-orm/800-more/450-migrating-to-prisma/index.mdx index d5d0aea064..f77eeb6144 100644 --- a/content/200-orm/800-more/450-migrating-to-prisma/index.mdx +++ b/content/200-orm/800-more/450-migrating-to-prisma/index.mdx @@ -2,6 +2,7 @@ title: 'Migrate to Prisma ORM' metaTitle: 'Migrate to Prisma ORM from other ORMs' metaDescription: 'How to migrate to Prisma ORM from other ORMs and query builders.' +hide_table_of_contents: true --- ## In this section diff --git a/content/200-orm/800-more/500-development-environment/050-environment-variables/040-env-files.mdx b/content/200-orm/800-more/500-development-environment/050-environment-variables/040-env-files.mdx index 72dd536672..17b3f82e7d 100644 --- a/content/200-orm/800-more/500-development-environment/050-environment-variables/040-env-files.mdx +++ b/content/200-orm/800-more/500-development-environment/050-environment-variables/040-env-files.mdx @@ -10,7 +10,7 @@ Prisma ORM creates a default `.env` file at your projects root. You can choose t -### .env file locations +### `.env` file locations The Prisma CLI looks for `.env` files, in order, in the following locations: diff --git a/content/200-orm/800-more/500-development-environment/050-environment-variables/100-managing-env-files-and-setting-variables.mdx b/content/200-orm/800-more/500-development-environment/050-environment-variables/100-managing-env-files-and-setting-variables.mdx index 164c25af79..c3e3f98e00 100644 --- a/content/200-orm/800-more/500-development-environment/050-environment-variables/100-managing-env-files-and-setting-variables.mdx +++ b/content/200-orm/800-more/500-development-environment/050-environment-variables/100-managing-env-files-and-setting-variables.mdx @@ -59,49 +59,49 @@ postgresql://test:test@localhost:5432/test?schema=public The following examples illustrate how to set the environment variable (for the current user) using both Command Prompt (`cmd.exe`) and PowerShell, depending on your preference. -, ]}> + - + ```terminal set DATABASE_URL="postgresql://test:test@localhost:5432/test?schema=public" ``` - + - + ```terminal [Environment]::SetEnvironmentVariable("DATABASE_URL", "postgresql://test:test@localhost:5432/test?schema=public") ``` - + Then check that it has been successfully set: -, ]}> + - + ```terminal set DATABASE_URL ``` - + - + ```terminal Get-ChildItem Env:DATABASE_URL ``` - + -## Manage .env files manually +## Manage `.env` files manually The [`dotenv-cli`](https://www.npmjs.com/package/dotenv-cli) and [`dotenv`](https://www.npmjs.com/package/dotenv) packages can be used if you want to manage your `.env`files manually. @@ -110,7 +110,7 @@ They allow you to: - [Use multiple `.env` files](/orm/more/development-environment/environment-variables/using-multiple-env-files) - Use `.env` files from a location that the Prisma CLI does not check [by default](/orm/more/development-environment/environment-variables/env-files) -### Using dotenv-cli via command line +### Using `dotenv-cli` via command line The following steps show how to use the `dotenv-cli` package to use an alternative file to contain environment variables than the [default](/orm/more/development-environment/environment-variables/env-files) created by Prisma ORM, which is then used to run Introspection. @@ -130,7 +130,7 @@ The following steps show how to use the `dotenv-cli` package to use an alternati > **Note:** dotenv doesn't pass the flags to the Prisma ORM command by default, this is why the command includes two dashes `--` before `prisma`, making it possible to use flags like `--force`, `--schema` or `--preview-feature`. -### Using dotenv via application code +### Using `dotenv` via application code The following steps show how to use the `dotenv` package to reference an alternative environment file in your project's code. diff --git a/content/200-orm/800-more/500-development-environment/100-editor-setup.mdx b/content/200-orm/800-more/500-development-environment/100-editor-setup.mdx index abff8b08fb..f19d5fbfd6 100644 --- a/content/200-orm/800-more/500-development-environment/100-editor-setup.mdx +++ b/content/200-orm/800-more/500-development-environment/100-editor-setup.mdx @@ -58,7 +58,7 @@ You can get IDE-style autocompletion for Prisma CLI using [`inshellisense`](http To install, run: -```shell +```bash npm install -g @microsoft/inshellisense ``` @@ -68,6 +68,6 @@ npm install -g @microsoft/inshellisense To install, run: -```shell +```bash brew install fig ``` diff --git a/content/200-orm/800-more/500-development-environment/index.mdx b/content/200-orm/800-more/500-development-environment/index.mdx index 7dd10bd168..ae07a5725f 100644 --- a/content/200-orm/800-more/500-development-environment/index.mdx +++ b/content/200-orm/800-more/500-development-environment/index.mdx @@ -1,8 +1,9 @@ --- title: 'Development environment' -navTitle: Development environment +sidebar_label: Development environment metaTitle: 'Development environment' metaDescription: 'Using env vars, editors and workspaces in your development environment' +hide_table_of_contents: true --- diff --git a/content/200-orm/800-more/600-help-and-troubleshooting/050-creating-bug-reports.mdx b/content/200-orm/800-more/600-help-and-troubleshooting/050-creating-bug-reports.mdx index 43a9271ad9..f36c2329b1 100644 --- a/content/200-orm/800-more/600-help-and-troubleshooting/050-creating-bug-reports.mdx +++ b/content/200-orm/800-more/600-help-and-troubleshooting/050-creating-bug-reports.mdx @@ -2,6 +2,7 @@ title: 'Creating bug reports' metaTitle: 'Creating bug reports for Prisma ORM' metaDescription: 'This page explains best practices for creating bug reports for Prisma ORM, including sharing additional debugging output and other recommendations.' +toc_max_heading_level: 2 --- ## Overview @@ -55,7 +56,9 @@ When describing the bug, it's helpful to include the following information: - A clear and concise description of what you expected to happen - Screenshots (if applicable) -
Expand for an example for a hypothetical bug report +
+ +Expand for an example for a hypothetical bug report **Example** diff --git a/content/200-orm/800-more/600-help-and-troubleshooting/100-help-articles/100-autocompletion-in-graphql-resolvers-with-js.mdx b/content/200-orm/800-more/600-help-and-troubleshooting/100-help-articles/100-autocompletion-in-graphql-resolvers-with-js.mdx index edcd107a65..d9b97f3a8f 100644 --- a/content/200-orm/800-more/600-help-and-troubleshooting/100-help-articles/100-autocompletion-in-graphql-resolvers-with-js.mdx +++ b/content/200-orm/800-more/600-help-and-troubleshooting/100-help-articles/100-autocompletion-in-graphql-resolvers-with-js.mdx @@ -4,6 +4,8 @@ metaTitle: 'Autocompletion in GraphQL resolvers with JavaScript' metaDescription: 'Learn how you can get autocompletion for Prisma Client queries in GraphQL resolvers with plain JavaScript' --- + + ## Problem When using GraphQL with TypeScript, you always get autocompletion for the Prisma Client instance in your GraphQL resolvers because then the `context` object can be typed – no matter if folks are using Nexus, TypeGraphQL or SDL first. This immensely helps with autocompletion and preventing unwanted errors. @@ -25,7 +27,7 @@ filterPosts: (parent, args, ctx) => { Now whenever you type `ctx.` VS Code will provide unnecessary options in the autocomplete which is undesirable. -![Unwanted autocomplete values by VSCode](unwanted-autocomplete-values-in-vscode.png) +![Unwanted autocomplete values by VSCode](./unwanted-autocomplete-values-in-vscode.png) VS Code doesn't know the _type_ of the `context` object so it can't provide any intellisense for it, which is why unwanted suggestions are displayed. @@ -67,7 +69,7 @@ This will tell VS Code that the `context` has a property named `prisma` and the And voilà, autocompletion in plain JavaScript. -![The correct parameters for context are obtained](prisma-autocompletion-in-js.png) +![The correct parameters for context are obtained](./prisma-autocompletion-in-js.png) The final file should look something like: diff --git a/content/200-orm/800-more/600-help-and-troubleshooting/100-help-articles/200-working-with-many-to-many-relations.mdx b/content/200-orm/800-more/600-help-and-troubleshooting/100-help-articles/200-working-with-many-to-many-relations.mdx index 07afd49807..3c1bd2324f 100644 --- a/content/200-orm/800-more/600-help-and-troubleshooting/100-help-articles/200-working-with-many-to-many-relations.mdx +++ b/content/200-orm/800-more/600-help-and-troubleshooting/100-help-articles/200-working-with-many-to-many-relations.mdx @@ -5,6 +5,8 @@ metaDescription: 'Learn how you can model and query implicit and explicit many-t tocDepth: 3 --- + + ## Problem Modeling and querying many-to-many relations in relational databases can be challenging. This article shows two examples how this can be approached with Prisma ORM. The first example uses an [implicit](/orm/prisma-schema/data-model/relations/many-to-many-relations#implicit-many-to-many-relations) and the second one uses an [explicit](/orm/prisma-schema/data-model/relations/many-to-many-relations#explicit-many-to-many-relations) many-to-many relation. diff --git a/content/200-orm/800-more/600-help-and-troubleshooting/100-help-articles/400-nextjs-prisma-client-dev-practices.mdx b/content/200-orm/800-more/600-help-and-troubleshooting/100-help-articles/400-nextjs-prisma-client-dev-practices.mdx index 13fe408922..97198b9f25 100644 --- a/content/200-orm/800-more/600-help-and-troubleshooting/100-help-articles/400-nextjs-prisma-client-dev-practices.mdx +++ b/content/200-orm/800-more/600-help-and-troubleshooting/100-help-articles/400-nextjs-prisma-client-dev-practices.mdx @@ -4,6 +4,8 @@ metaTitle: 'Best practice for instantiating Prisma Client with Next.js' metaDescription: 'Best practice for instantiating Prisma Client with Next.js' --- + + ## Problem Many users have come across this warning while working with [Next.js](https://nextjs.org/) in development: diff --git a/content/200-orm/800-more/600-help-and-troubleshooting/100-help-articles/425-nextjs-prisma-client-monorepo.mdx b/content/200-orm/800-more/600-help-and-troubleshooting/100-help-articles/425-nextjs-prisma-client-monorepo.mdx index a004be99c0..f617309e55 100644 --- a/content/200-orm/800-more/600-help-and-troubleshooting/100-help-articles/425-nextjs-prisma-client-monorepo.mdx +++ b/content/200-orm/800-more/600-help-and-troubleshooting/100-help-articles/425-nextjs-prisma-client-monorepo.mdx @@ -4,6 +4,8 @@ metaTitle: 'Using Prisma Client in a Next.js project in a monorepo setup' metaDescription: 'Using Prisma Client in a Next.js project in a monorepo setup' --- + + ## Problem If you use Prisma Client in a [Next.js](https://nextjs.org/) application within a monorepo, you may run into an error that looks similar to: diff --git a/content/200-orm/800-more/600-help-and-troubleshooting/100-help-articles/450-pkg-issue.mdx b/content/200-orm/800-more/600-help-and-troubleshooting/100-help-articles/450-pkg-issue.mdx index 918c5d4965..bcee174224 100644 --- a/content/200-orm/800-more/600-help-and-troubleshooting/100-help-articles/450-pkg-issue.mdx +++ b/content/200-orm/800-more/600-help-and-troubleshooting/100-help-articles/450-pkg-issue.mdx @@ -4,6 +4,8 @@ metaTitle: 'Solve ENOENT package error with vercel/pkg' metaDescription: 'Solve ENOENT package error with vercel/pkg' --- + + ## Problem If you use [vercel/pkg](https://github.com/vercel/pkg) to package your Node.js project, then you might encounter an `ENOENT` error like the following: diff --git a/content/200-orm/800-more/600-help-and-troubleshooting/100-help-articles/500-comparing-columns-through-raw-queries.mdx b/content/200-orm/800-more/600-help-and-troubleshooting/100-help-articles/500-comparing-columns-through-raw-queries.mdx index 8075e1fae7..00be4d86c1 100644 --- a/content/200-orm/800-more/600-help-and-troubleshooting/100-help-articles/500-comparing-columns-through-raw-queries.mdx +++ b/content/200-orm/800-more/600-help-and-troubleshooting/100-help-articles/500-comparing-columns-through-raw-queries.mdx @@ -4,6 +4,8 @@ metaTitle: 'Compare columns of the same table with raw queries' metaDescription: 'Compare columns with inbuilt raw query methods in Prisma' --- + + ## Problem Comparing different columns from the same table is a common scenario that developers encounter. Some examples include comparing two numeric values in the same table or comparing two dates in a same table. There's an existing [GitHub Issue](https://github.com/prisma/prisma/issues/5048) regarding the same. diff --git a/content/200-orm/800-more/600-help-and-troubleshooting/100-help-articles/600-vercel-caching-issue.mdx b/content/200-orm/800-more/600-help-and-troubleshooting/100-help-articles/600-vercel-caching-issue.mdx index 769dc84bdd..f74a73fbde 100644 --- a/content/200-orm/800-more/600-help-and-troubleshooting/100-help-articles/600-vercel-caching-issue.mdx +++ b/content/200-orm/800-more/600-help-and-troubleshooting/100-help-articles/600-vercel-caching-issue.mdx @@ -4,6 +4,8 @@ metaTitle: 'Learn to configure your build process on Vercel to avoid caching-rel metaDescription: 'Learn to configure your build process on Vercel to avoid caching-related problems' --- + + ## Problem If you deploy an application using Prisma ORM to [Vercel](https://vercel.com/), you may run into the following error message on deployment: @@ -22,7 +24,9 @@ Prisma ORM uses a `postinstall` hook to generate Prisma Client when dependencies This error message prevents this situation from happening and directs you here to learn how to fix the root issue. -
Prisma Client versions below 4.13.0 +
+ +Prisma Client versions below 4.13.0 On Prisma Client versions lower than 4.13.0, you may encounter error messages that look like the following: @@ -64,6 +68,7 @@ Within the `scripts` section of your project's `package.json` file, if there is { ... "scripts" { + //add-next-line "postinstall": "prisma generate" } ... @@ -78,6 +83,7 @@ Within the `scripts` section of your project's `package.json` file, within the ` { ... "scripts" { + //add-next-line "build": "prisma generate && " } ... diff --git a/content/200-orm/800-more/600-help-and-troubleshooting/100-help-articles/700-netlify-caching-issue.mdx b/content/200-orm/800-more/600-help-and-troubleshooting/100-help-articles/700-netlify-caching-issue.mdx index 8e60aaf82f..8526b608bb 100644 --- a/content/200-orm/800-more/600-help-and-troubleshooting/100-help-articles/700-netlify-caching-issue.mdx +++ b/content/200-orm/800-more/600-help-and-troubleshooting/100-help-articles/700-netlify-caching-issue.mdx @@ -4,6 +4,8 @@ metaTitle: 'Learn to configure your build process on Netlify to avoid caching-re metaDescription: 'Learn to configure your build process on Netlify to avoid caching-related problems' --- + + ## Problem If you deploy an application using Prisma ORM to [Netlify](https://netlify.com/), you may run into the following error message on deployment: @@ -22,7 +24,9 @@ Prisma ORM uses a `postinstall` hook to generate Prisma Client when dependencies This error message prevents this situation from happening and directs you here to learn how to fix the root issue. -
Prisma Client versions below 4.13.0 +
+ +Prisma Client versions below 4.13.0 On Prisma Client versions lower than 4.13.0, you may encounter error messages that look like the following: @@ -64,6 +68,7 @@ Within the `scripts` section of your project's `package.json` file, if there is { ... "scripts" { + //add-next-line "postinstall": "prisma generate" } ... @@ -78,6 +83,7 @@ Within the `scripts` section of your project's `package.json` file, within the ` { ... "scripts" { + //add-next-line "build": "prisma generate && " } ... diff --git a/content/200-orm/800-more/600-help-and-troubleshooting/100-help-articles/800-check-constraints.mdx b/content/200-orm/800-more/600-help-and-troubleshooting/100-help-articles/800-check-constraints.mdx index 4d4c4bb4dd..4ab087981f 100644 --- a/content/200-orm/800-more/600-help-and-troubleshooting/100-help-articles/800-check-constraints.mdx +++ b/content/200-orm/800-more/600-help-and-troubleshooting/100-help-articles/800-check-constraints.mdx @@ -56,6 +56,7 @@ Windows (command line): ``` create database CheckDemo; +//delete-next-line \connect CheckDemo ``` @@ -256,7 +257,7 @@ In order to introspect your database, you need to tell Prisma ORM how to connect Create a new file named `schema.prisma` and add the following code to it: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers datasource db { provider = "postgresql" url = env("DATABASE_URL") @@ -285,7 +286,7 @@ npx prisma db pull This command introspects your database and for each table adds a Prisma model to the Prisma schema: -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers generator client { provider = "prisma-client-js" } @@ -325,7 +326,7 @@ To validate whether the check constraints work, you'll now generate Prisma Clien First, add a `generator` block to your Prisma schema (typically added right below the `datasource` block): -```prisma file=schema.prisma +```prisma file=schema.prisma showLineNumbers generator client { provider = "prisma-client-js" } diff --git a/content/200-orm/800-more/600-help-and-troubleshooting/100-help-articles/index.mdx b/content/200-orm/800-more/600-help-and-troubleshooting/100-help-articles/index.mdx index 012d3dd8fc..ff81c33f50 100644 --- a/content/200-orm/800-more/600-help-and-troubleshooting/100-help-articles/index.mdx +++ b/content/200-orm/800-more/600-help-and-troubleshooting/100-help-articles/index.mdx @@ -3,7 +3,7 @@ title: 'Help articles' metaTitle: 'Help articles' metaDescription: 'Common problems and how to solve them.' hidePage: false -toc: false +hide_table_of_contents: true --- diff --git a/content/200-orm/800-more/600-help-and-troubleshooting/index.mdx b/content/200-orm/800-more/600-help-and-troubleshooting/index.mdx index c5c15f9caa..edba629f3b 100644 --- a/content/200-orm/800-more/600-help-and-troubleshooting/index.mdx +++ b/content/200-orm/800-more/600-help-and-troubleshooting/index.mdx @@ -2,6 +2,7 @@ title: 'Help & troubleshooting' metaTitle: 'Help & troubleshooting' metaDescription: 'Help & troubleshooting in Prisma ORM projects.' +hide_table_of_contents: true --- ## In this section diff --git a/content/200-orm/800-more/700-releases.mdx b/content/200-orm/800-more/700-releases.mdx index de73e758f9..064522801f 100644 --- a/content/200-orm/800-more/700-releases.mdx +++ b/content/200-orm/800-more/700-releases.mdx @@ -92,4 +92,4 @@ Given a version number `MAJOR.MINOR.PATCH`, Prisma ORM's version number is incre 1. `MINOR` version is incremented when product updates adding backward compatible new functionality are released. Features with breaking changes may only be introduced if they are **opt-in**, i.e. Early Access and Preview. 1. `PATCH` version is incremented when functionality bugs are fixed and are always **backward compatible**. -> **Note:** Up until version version `2.28.0`, Prisma ORM did not follow SemVer versioning strictly. This means that releases in the `2.MINOR.PATCH` range, `MINOR` versions may have included breaking changes. To learn more about Prisma ORM's adoption of SemVer, check out the [blog post](https://www.prisma.io/blog/prisma-adopts-semver-strictly). +> **Note:** Up until version `2.28.0`, Prisma ORM did not follow SemVer versioning strictly. This means that releases in the `2.MINOR.PATCH` range, `MINOR` versions may have included breaking changes. To learn more about Prisma ORM's adoption of SemVer, check out the [blog post](https://www.prisma.io/blog/prisma-adopts-semver-strictly). diff --git a/content/200-orm/800-more/_category_.json b/content/200-orm/800-more/_category_.json new file mode 100644 index 0000000000..a4b01cc2ff --- /dev/null +++ b/content/200-orm/800-more/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "More", + "collapsible": false, + "collapsed": false +} \ No newline at end of file diff --git a/content/200-orm/800-more/index.mdx b/content/200-orm/800-more/index.mdx index cb53782d2b..17df80274d 100644 --- a/content/200-orm/800-more/index.mdx +++ b/content/200-orm/800-more/index.mdx @@ -3,7 +3,7 @@ title: 'More' metaTitle: 'More' metaDescription: 'Learn more about Prisma ORM.' staticLink: true -toc: false +hide_table_of_contents: true --- ## In this section diff --git a/content/200-orm/index.mdx b/content/200-orm/index.mdx index c9de440270..98ce1754d4 100644 --- a/content/200-orm/index.mdx +++ b/content/200-orm/index.mdx @@ -1,8 +1,11 @@ --- title: 'ORM' +id: 'orm-index' metaTitle: 'ORM' metaDescription: 'ORM' -toc: false +hide_table_of_contents: true +sidebar_position: 0 +pagination_next: 'orm/overview/index' --- @@ -13,4 +16,4 @@ toc: false ## In this section - + \ No newline at end of file diff --git a/content/300-accelerate/100-what-is-accelerate.mdx b/content/300-accelerate/100-what-is-accelerate.mdx index 164766b8e2..f18880b9d0 100644 --- a/content/300-accelerate/100-what-is-accelerate.mdx +++ b/content/300-accelerate/100-what-is-accelerate.mdx @@ -26,4 +26,4 @@ While Accelerate is beneficial for all types of applications, being at the edge We built a small sample application, [Accelerate Speed Test](https://accelerate-speed-test.prisma.io/). The app compares the performance of cached and uncached queries side by side. The app is [open source](https://github.com/prisma/accelerate-speed-test) and you can clone it to try it yourself. -![Screenshot of the Accelerate Speed Test app showing cached query performance](./images/accelerate.png) +![Screenshot of the Accelerate Speed Test app showing cached query performance](/img/accelerate/accelerate.png) diff --git a/content/300-accelerate/200-getting-started.mdx b/content/300-accelerate/200-getting-started.mdx index 5a7b36af62..df98ceeb7a 100644 --- a/content/300-accelerate/200-getting-started.mdx +++ b/content/300-accelerate/200-getting-started.mdx @@ -6,10 +6,6 @@ tocDepth: 3 toc: true --- - - - - ## Prerequisites To get started with Accelerate, you will need the following: @@ -55,17 +51,18 @@ datasource db { Prisma Migrate and Introspection do not work with a `prisma://` connection string. In order to continue using these features add a new variable to the `.env` file named `DIRECT_DATABASE_URL` whose value is the direct database connection string: -```env file=.env highlight=3;add +```env file=.env highlight=3;add showLineNumbers DATABASE_URL="prisma://accelerate.prisma-data.net/?api_key=__API_KEY__" DIRECT_DATABASE_URL="postgresql://user:password@host:port/db_name?schema=public" ``` Then in your Prisma schema's `datasource` block add a field named `directUrl` with the following: -```prisma highlight=4;add +```prisma datasource db { provider = "postgresql" url = env("DATABASE_URL") +//add-next-line directUrl = env("DIRECT_DATABASE_URL") } ``` diff --git a/content/300-accelerate/250-connection-pooling.mdx b/content/300-accelerate/250-connection-pooling.mdx index 312da9edc6..59c6c9a07e 100644 --- a/content/300-accelerate/250-connection-pooling.mdx +++ b/content/300-accelerate/250-connection-pooling.mdx @@ -4,7 +4,7 @@ metaTitle: 'Accelerate: Connection Pooling' metaDescription: "Learn about everything you need to know to use Accelerate's connection pooling." --- -## Connection pooling + A [connection pool](https://en.wikipedia.org/wiki/Connection_pool#:~:text=In%20software%20engineering%2C%20a%20connection,executing%20commands%20on%20a%20database.) is a storage of database connections that can be reused for future requests to the database. When a new connection is requested, it is retrieved from the pool if one is available. Once the connection is no longer needed, it is returned to the pool for reuse. @@ -20,6 +20,8 @@ For more information about connection pooling in Prisma, see the documentation [ + + ### Default connection pool size By default, Accelerate calculates a default connection pool size using the formula `num_physical_cpus * 2 + 1`. @@ -36,7 +38,7 @@ This means that Accelerate will create a maximum of 5 connections to the databas The connection pool size can be configured to a value other than the default via the _database connection string_. -![Update database connection string in Accelerate](./images/accelerate-update-database-connection-string.png) +![Update database connection string in Accelerate](/img/accelerate/accelerate-update-database-connection-string.png) To adjust the connection pool size, you can add the `connection_limit` parameter to the database connection string. The value of `connection_limit` is the maximum number of connections that Accelerate will open against your database. diff --git a/content/300-accelerate/300-caching.mdx b/content/300-accelerate/300-caching.mdx index 30cb276abb..1109f8a331 100644 --- a/content/300-accelerate/300-caching.mdx +++ b/content/300-accelerate/300-caching.mdx @@ -2,8 +2,10 @@ title: 'Caching' metaTitle: 'Accelerate: Caching' metaDescription: "Learn everything you need to know to use Accelerate's global database caching." +toc_max_heading_level: 2 --- + ## Cache strategies For all read queries in Prisma Client, you can define the `cacheStrategy` parameter that configures cache behavior. The cache strategy allows you to define two main characteristics of the cache: @@ -20,7 +22,8 @@ Use `ttl` in `cacheStrategy` and specify the TTL of the query in seconds: ```javascript await prisma.user.findMany({ cacheStrategy: { -+ ttl: 60, + //add-next-line + ttl: 60, }, }); ``` @@ -28,7 +31,7 @@ await prisma.user.findMany({ With a specified TTL of 60 seconds, the majority of requests will result in a cache hit throughout the TTL duration: -![TTL](./images/ttl.png) +![TTL](/img/accelerate/ttl.png) TTL is useful for reducing database load and latency for data that does not require frequent updates. @@ -41,14 +44,15 @@ Use `swr` in `cacheStrategy` and specify the SWR of the query in seconds: ```javascript await prisma.user.findMany({ cacheStrategy: { -+ swr: 60, + //add-next-line + swr: 60, }, }); ``` When specifying a SWR of 60 seconds, the cache serves stale data until the cache refreshes itself in the background after each request: -![SWR](./images/swr.png) +![SWR](/img/accelerate/swr.png) ## Selecting a cache strategy @@ -79,15 +83,17 @@ Use `ttl` and `swr` in `cacheStrategy` and specify the TTL and SWR of the query ```javascript await prisma.user.findMany({ cacheStrategy: { -+ ttl: 30, -+ swr: 60, + //add-start + ttl: 30, + swr: 60, + //add-end }, }); ``` When specifying a TTL of 30 seconds and SWR of 60 seconds, the cache serves fresh data for the initial 30 seconds. Subsequently, it serves stale data until the cache refreshes itself in the background after each request: -![ttl_and_swr.png](./images/ttl_and_swr.png) +![ttl_and_swr.png](/img/accelerate/ttl_and_swr.png) #### Use case: News articles diff --git a/content/300-accelerate/400-api-reference.mdx b/content/300-accelerate/400-api-reference.mdx index a78b3d2971..3843289958 100644 --- a/content/300-accelerate/400-api-reference.mdx +++ b/content/300-accelerate/400-api-reference.mdx @@ -22,7 +22,7 @@ All example are based on the `User` model. -## cacheStrategy +## `cacheStrategy` With the Accelerate extension for Prisma Client, you can use the `cacheStrategy` parameter for model queries and use the [`ttl`](/accelerate/caching#time-to-live-ttl) and [`swr`](/accelerate/caching#stale-while-revalidate-swr) parameters to define a cache strategy for Accelerate. The Accelerate extension requires that you install Prisma Client version `4.10.0`. @@ -46,6 +46,7 @@ await prisma.user.findMany({ contains: 'alice@prisma.io', }, }, + //highlight-next-line cacheStrategy: { swr: 60, ttl: 60 }, }) ``` @@ -69,7 +70,7 @@ The `cacheStrategy` parameter is not supported on any write operations, such as -## withAccelerateInfo +## `withAccelerateInfo` Any query that supports the `cacheStrategy` can append `withAccelerateInfo()` to wrap the response data and include additional information about the Accelerate response. @@ -108,7 +109,7 @@ interface AccelerateInfo { | Property | Type | Description | | -------------- | ------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `cacheStatus` | "ttl" \| "swr" \| "miss" \| "none" | The cache status of the response.
  • `ttl` indicates a cache hit within the `ttl` duration and no database query was executed
  • `swr` indicates a cache hit within the `swr` duration and the data is being refreshed by Accelerate in the background
  • `miss` indicates that both `ttl` and `swr` have expired and the database query was executed by the request
  • `none` indicates that no cache strategy was specified and the database query was executed by the request
| +| `cacheStatus` | `"ttl" \| "swr" \| "miss" \| "none" ` | The cache status of the response.
  • `ttl` indicates a cache hit within the `ttl` duration and no database query was executed
  • `swr` indicates a cache hit within the `swr` duration and the data is being refreshed by Accelerate in the background
  • `miss` indicates that both `ttl` and `swr` have expired and the database query was executed by the request
  • `none` indicates that no cache strategy was specified and the database query was executed by the request
| | `lastModified` | `Date` | The date the response was last refreshed. | | `region` | `String` | The data center region that received the request. | | `requestId` | `String` | Unique identifier of the request. Useful for troubleshooting. | diff --git a/content/300-accelerate/580-local-development.mdx b/content/300-accelerate/580-local-development.mdx index b771d2dd20..053914b1cd 100644 --- a/content/300-accelerate/580-local-development.mdx +++ b/content/300-accelerate/580-local-development.mdx @@ -19,7 +19,8 @@ This guide will explain how to use Prisma Accelerate client extension in a devel ## Using Prisma Accelerate client extension in development and production
- + +![](/img/accelerate/accelerate-in-dev.png) Accelerate does not work with a local database. However, in a development environment, you can still use Prisma Client with the Accelerate client extension. This setup will not provide Accelerate's connection pooling and caching features. @@ -50,7 +51,7 @@ The following steps outline how to use Prisma ORM and Prisma Accelerate with a l > The extended instance of Prisma Client will use the local database. Hence, Prisma Accelerate will not be used in your development environment to respond to your Prisma Client queries. - +![](/img/accelerate/accelerate-in-prod.png) If an Accelerate connection string is used as the `DATABASE_URL` environment variable, Prisma Client will route your queries through Accelerate. diff --git a/content/300-accelerate/650-troubleshoot.mdx b/content/300-accelerate/650-troubleshoot.mdx index 4e4031d99f..f58217d82f 100644 --- a/content/300-accelerate/650-troubleshoot.mdx +++ b/content/300-accelerate/650-troubleshoot.mdx @@ -12,11 +12,11 @@ When working with Prisma Accelerate, you may encounter errors often highlighted
-## [P6009](/orm/reference/error-reference#p6009-responsesizelimitexceeded) (ResponseSizeLimitExceeded) +## [`P6009`](/orm/reference/error-reference#p6009-responsesizelimitexceeded) (`ResponseSizeLimitExceeded`) -This error is triggered when the response size from a database query exceeds the 5MB limit. We've implemented this restriction to safeguard your application performance, as retrieving data over 5MB can significantly slow down your application due to multiple network layers. Typically, transmitting more than 5MB of data is common when conducting ETL (Extract, Transform, Load) operations. However, for other scenarios such as transactional queries, real-time data fetching for user interfaces, bulk data updates, or aggregating large datasets for analytics outside of ETL contexts, it should generally be avoided. These use cases, while essential, can often be optimized to work within the 5MB limit, ensuring smoother performance and a better user experience. +This error is triggered when the response size from a database query exceeds the 5MB limit. We've implemented this restriction to safeguard your application performance, as retrieving data over 5MB can significantly slow down your application due to multiple network layers. Typically, transmitting more than 5MB of data is common when conducting ETL (Extract, Transform, Load) operations. However, for other scenarios such as transactional queries, real-time data fetching for user interfaces, bulk data updates, or aggregating large datasets for analytics outside of ETL contexts, it should generally be avoided. These use cases, while essential, can often be optimised to work within the 5MB limit, ensuring smoother performance and a better user experience. -### Possible causes for [P6009](/orm/reference/error-reference#p6009-responsesizelimitexceeded) +### Possible causes for [`P6009`](/orm/reference/error-reference#p6009-responsesizelimitexceeded) #### Transmitting images/files in response @@ -36,13 +36,13 @@ In many data processing workflows, especially those involving ETL (Extract-Trans **Suggested solution:** Consider splitting your query to fetch data in batches to prevent the 5MB limit from being reached. By splitting your query to retrieve data in batches, you ensure that each operation fetches only a portion of the total data volume, thereby not exceeding the size limit for a single fetch operation. -## [P6004](/orm/reference/error-reference#p6004-querytimeout) (QueryTimeout) +## [`P6004`](/orm/reference/error-reference#p6004-querytimeout) (`QueryTimeout`) This error occurs when a database query fails to return a response within 10 seconds. The 10-second limit includes the duration of waiting for a connection from the pool, network latency to the database, and the execution time of the query itself. We enforce this limit to prevent unintentional long-running queries that can overload system resources. > The time for Accelerate's cross-region networking is excluded from the 10-second limit. -### Possible causes for [P6004](/orm/reference/error-reference#p6004-querytimeout) +### Possible causes for [`P6004`](/orm/reference/error-reference#p6004-querytimeout) This error could be caused by numerous reasons. Some of the prominent ones are: @@ -73,7 +73,7 @@ Users often rely on CPU and memory usage metrics to gauge database load, which c Moreover, it's crucial to periodically scrutinize and refine essential queries and verify that tables are properly indexed. This proactive approach minimizes the vulnerability of these queries to slowdowns caused by competing workloads. -### Considerations for [P6009](/orm/reference/error-reference#p6009-responsesizelimitexceeded) and [P6004](/orm/reference/error-reference#p6004-querytimeout) errors +### Considerations for [`P6009`](/orm/reference/error-reference#p6009-responsesizelimitexceeded) and [`P6004`](/orm/reference/error-reference#p6004-querytimeout) errors For runtimes that support Prisma ORM natively, you could consider creating two `PrismaClient` Instances. One with the Accelerate connection string (prefixed with `prisma://`) and the other one with the direct database connection string (prefixed with `postgres://`, `mysql://` etc). The main idea behind this approach is to bypass Accelerate for certain specific queries. @@ -102,17 +102,17 @@ This setup allows you to strategically direct certain operations through the dir > Also see [**why doesn’t Accelerate fall back to the direct connection string during a service disruption?**](/accelerate/faq#why-doesnt-accelerate-fall-back-to-the-direct-connection-string-during-a-service-disruption) -## [P6008](/orm/reference/error-reference#p6008-connectionerrorenginestarterror) (ConnectionError|EngineStartError) +## [`P6008`](/orm/reference/error-reference#p6008-connectionerrorenginestarterror) (`ConnectionError|EngineStartError`) This error indicates that Prisma Accelerate cannot establish a connection to your database, potentially due to several reasons. -### Possible causes for [P6008](/orm/reference/error-reference#p6008-connectionerrorenginestarterror) +### Possible causes for [`P6008`](/orm/reference/error-reference#p6008-connectionerrorenginestarterror) #### Database Not Publicly accessible -If your database is behind a VPC, or access is restricted to specific IP addresses, this error may occur. +Prisma Accelerate currently requires the database to be publicly accessible. If your database is behind a VPC, or access is restricted to specific IP addresses, this error may occur. -**Suggested solution:** Enable static IP within your Accelerate configuration in your project environment. After you enable static IP, add the obtained IP address in your database firewall's IP allowlist. This will ensure that Accelerate can connect to your database. To learn more about static IP, see this [FAQ](/accelerate/faq#when-do-i-have-to-enable-static-ip-for-prisma-accelerate). +**Suggested solution:** Ensure your database is publicly accessible, if not, allow public access. Please note this is only an interim requirement, Static IPs are coming soon and will alleviate the need for complete public access if that’s not desirable. #### Unreachable Database Host/Port diff --git a/content/300-accelerate/700-feedback.mdx b/content/300-accelerate/700-feedback.mdx index 08755185e4..68adb8c3fb 100644 --- a/content/300-accelerate/700-feedback.mdx +++ b/content/300-accelerate/700-feedback.mdx @@ -3,7 +3,7 @@ title: 'Feedback' metaTitle: 'Accelerate: Feedback' metaDescription: 'Learn where to submit feedback about Accelerate.' tocDepth: 3 -toc: true +hide_table_of_contents: true --- diff --git a/content/300-accelerate/images/no-cache.png b/content/300-accelerate/images/no-cache.png deleted file mode 100644 index 01c6c266ed..0000000000 Binary files a/content/300-accelerate/images/no-cache.png and /dev/null differ diff --git a/content/300-accelerate/images/speed-test.png b/content/300-accelerate/images/speed-test.png deleted file mode 100644 index 1d32a83118..0000000000 Binary files a/content/300-accelerate/images/speed-test.png and /dev/null differ diff --git a/content/300-accelerate/index.mdx b/content/300-accelerate/index.mdx index e1e11ae428..76e56f8ec0 100644 --- a/content/300-accelerate/index.mdx +++ b/content/300-accelerate/index.mdx @@ -2,7 +2,10 @@ title: 'Accelerate' metaTitle: 'Prisma Accelerate' metaDescription: 'Prisma Accelerate is a global database cache with built-in connection pooling that helps improve database performance in Serverless and Edge applications.' -toc: false +sidebar_position: 0 +hide_table_of_contents: true +pagination_next: 'accelerate/what-is-accelerate' + --- diff --git a/content/400-pulse/100-what-is-pulse.mdx b/content/400-pulse/100-what-is-pulse.mdx index e196381dcf..972801f5b9 100644 --- a/content/400-pulse/100-what-is-pulse.mdx +++ b/content/400-pulse/100-what-is-pulse.mdx @@ -20,13 +20,13 @@ The captured events are processed, evaluated, and swiftly distributed to relevan This eliminates the need for complex polling or manual data synchronization, saving you development time and effort. -![What is Pulse](./images/what-is-pulse.png) +![What is Pulse](/img/pulse/what-is-pulse.png) ## What you can build with Prisma Pulse Prisma Pulse can power real-time functionality like chat, notifications, data broadcast, data synchronization, and more. It's ideal for ensuring data consistency in distributed systems, enhancing real-time user experiences. -![Prisma Pulse use-cases](./images/pulse-usecase.png) +![Prisma Pulse use-cases](/img/pulse/pulse-usecase.png) ## Examples diff --git a/content/400-pulse/200-getting-started.mdx b/content/400-pulse/200-getting-started.mdx index 7d52dd1971..53449deffc 100644 --- a/content/400-pulse/200-getting-started.mdx +++ b/content/400-pulse/200-getting-started.mdx @@ -12,7 +12,7 @@ toc: true -💡 Prisma Pulse currently supports PostgreSQL. We'd love to hear [which databases](https://tally.so/r/wLbb8G) you would like to see supported next. +Prisma Pulse currently supports PostgreSQL. We'd love to hear [which databases](https://tally.so/r/wLbb8G) you would like to see supported next. @@ -28,7 +28,7 @@ Navigate to your Prisma Data Platform project, choose an environment, and enable > Once enabled, you'll be prompted to generate an API key that you'll use in your extended Prisma Client to authenticate requests. Store this API key in your application's `.env` file: > -> ```env file=.env +> ```env file=.env showLineNumbers > PULSE_API_KEY="your_secure_pulse_api_key" > ``` @@ -40,7 +40,7 @@ With Pulse enabled, proceed with these steps to integrate Pulse into your applic -💡 Pulse requires [Prisma Client](/orm/prisma-client) version `4.16.1` or higher and [`@prisma/extension-pulse`](https://www.npmjs.com/package/@prisma/extension-pulse) version `1.0.1` or higher +Pulse requires [Prisma Client](/orm/prisma-client) version `4.16.1` or higher and [`@prisma/extension-pulse`](https://www.npmjs.com/package/@prisma/extension-pulse) version `1.0.1` or higher @@ -63,7 +63,7 @@ const prisma = new PrismaClient().$extends( ) ``` - + You stored this API key in your .env file after [enabling Pulse](#1-enable-pulse). If needed, you can navigate to your respective project environment and generate a new API key. diff --git a/content/400-pulse/250-database-setup/100-general-database-instructions.mdx b/content/400-pulse/250-database-setup/100-general-database-instructions.mdx index b7d70487ee..21e680730c 100644 --- a/content/400-pulse/250-database-setup/100-general-database-instructions.mdx +++ b/content/400-pulse/250-database-setup/100-general-database-instructions.mdx @@ -3,6 +3,7 @@ title: 'General database instructions' metaTitle: 'Prisma Pulse: General database instructions' metaDescription: 'Instructions to use your database with Prisma Pulse' tocDepth: 3 +toc_max_heading_level: 6 toc: true --- @@ -10,11 +11,7 @@ toc: true Prepare your database to work with Pulse. - - -Prisma Pulse requires a publicly accessible PostgreSQL (**version 12+**) database with logical replication enabled. To configure specific database providers for Prisma Pulse, visit [here](/pulse/database-setup#provider-specific-instructions). - - +> Prisma Pulse requires a publicly accessible PostgreSQL (**version 12+**) database with logical replication enabled. To configure specific database providers for Prisma Pulse, visit [here](/pulse/database-setup#provider-specific-instructions). @@ -24,7 +21,7 @@ Database replication is the process of creating copies of a database and storing ### Enable logical replication -##### [wal_level](https://www.postgresql.org/docs/current/runtime-config-wal.html) +##### [`wal_level`](https://www.postgresql.org/docs/current/runtime-config-wal.html) Some providers may not allow direct access to this setting. If you are unable to change this setting, please refer to the provider-specific guides for further assistance. @@ -36,37 +33,29 @@ You will need to restart the database after changing this setting. ##### Optional settings -###### [wal_keep_size](https://www.postgresql.org/docs/current/runtime-config-replication.html) +###### [`wal_keep_size`](https://www.postgresql.org/docs/current/runtime-config-replication.html) Setting `wal_keep_size` increases the memory usage of the [write-ahead log](https://www.postgresql.org/docs/current/wal-intro.html) on your PostgreSQL database. We recommend setting a value for `wal_keep_size` tailored to your database's storage capacity. This ensures smooth operation of both your database and Prisma Pulse. - - -We suggest setting these values initially and adjusting them if necessary. - - +> We suggest setting these values initially and adjusting them if necessary. ```sql ALTER SYSTEM SET wal_keep_size = 2048; ``` -###### [max_replication_slots](https://www.postgresql.org/docs/current/runtime-config-replication.html) +###### [`max_replication_slots`](https://www.postgresql.org/docs/current/runtime-config-replication.html) Prisma Pulse only needs one replication slot available. You can set the `max_replication_slots` if you have other replications in use. - - -We suggest setting these values initially and adjusting them if necessary. - - +> We suggest setting these values initially and adjusting them if necessary. ```sql ALTER SYSTEM SET max_replication_slots = 20; ``` -###### [REPLICA IDENTITY](https://www.postgresql.org/docs/current/sql-altertable.html#SQL-ALTERTABLE-REPLICA-IDENTITY) +###### [`REPLICA IDENTITY`](https://www.postgresql.org/docs/current/sql-altertable.html#SQL-ALTERTABLE-REPLICA-IDENTITY) To get the **before** values of **all fields** in the record for some events, you must set `REPLICA IDENTITY` to `FULL` on the table(s) you want to get field values for. If this is not configured, defining a filter for those events will only be possible on the primary key. @@ -87,7 +76,7 @@ You can create publications in the following ways below depending on the version
Publication for all models. - +
```sql CREATE PUBLICATION $PUBLICATION_NAME FOR ALL TABLES; ``` @@ -161,7 +150,7 @@ You can submit the publication name in the [Platform console](https://console.pr 2. Then you can submit the desired publication name in the Platform console: - ![](../images/replication-slot-submission.png) + ![](/img/pulse/replication-slot-submission.png) #### Removing publications @@ -179,8 +168,4 @@ If you are managing your replications independently and choose to disable Prisma SELECT * FROM pg_publication_tables; ``` - - -💡 To configure specific database providers for Prisma Pulse, visit [here](/pulse/database-setup#provider-specific-instructions). - - +> 💡 To configure specific database providers for Prisma Pulse, visit [here](/pulse/database-setup#provider-specific-instructions). diff --git a/content/400-pulse/250-database-setup/200-aws-rds.mdx b/content/400-pulse/250-database-setup/200-aws-rds.mdx index d0a64ceb93..e997e3a011 100644 --- a/content/400-pulse/250-database-setup/200-aws-rds.mdx +++ b/content/400-pulse/250-database-setup/200-aws-rds.mdx @@ -18,15 +18,15 @@ The following instructions show how to create a parameter group, enable logical 1. Create a parameter group for your RDS database (`RDS` > `Parameter groups` > `Create a parameter group`). In the **Parameter group family**, select your Postgres version. Select the type **DB Parameter group** option and assign a descriptive group name and description: - ![Create a parameter group in AWS RDS](../images/aws-rds-create-parameter-group.png) + ![Create a parameter group in AWS RDS](/img/pulse/aws-rds-create-parameter-group.png) 2. Set the `rds.logical_replication` parameter to `1`(`true`) in the parameter group. - ![Set logical replication parameter group](../images/set-logical-replication-parameter.png) + ![Set logical replication parameter group](/img/pulse/set-logical-replication-parameter.png) 3. Modify **Database options** (`RDS` > `Databases` > `Modify`) to use the new DB parameter group: - ![Add Parameter group to AWS RDS](../images/add-group.png) + ![Add Parameter group to AWS RDS](/img/pulse/add-group.png) To reflect the configuration change into `wal_level`, select the **Apply immediately** option. diff --git a/content/400-pulse/250-database-setup/300-railway.mdx b/content/400-pulse/250-database-setup/300-railway.mdx index 40667aaf4a..0e4b2d2d1d 100644 --- a/content/400-pulse/250-database-setup/300-railway.mdx +++ b/content/400-pulse/250-database-setup/300-railway.mdx @@ -40,7 +40,7 @@ The template consists of two [services](https://docs.railway.app/reference/servi ``` > **Note**: > The `DATABASE_URL` can also be found by clicking on the **Postgres** Service and navigating to the **Variables** tab, then clicking the copy icon next to `DATABASE_URL` environment variable value. - > ![](../images/railway-database-url.png) + > ![](/img/pulse/railway-database-url.png) 6. Copy the `DATABASE_URL` connection string and save it for later. Then restart your Railway database for the changes to be reflected: 1. Click on the **Postgres** service that represents your deployed database. 2. Navigate to the **Deployments** tab. @@ -64,7 +64,7 @@ The template consists of three [services](https://docs.railway.app/reference/ser 1. Deploy the [template](https://railway.app/template/pulse-starter) on Railway. 2. You'll be navigated to a page prompting configuration for both the **restart-db-then-delete-me** and **pulse-starter** service: - ![Configure Railway template](../images/railway-template-configure.png) + ![Configure Railway template](/img/pulse/railway-template-configure.png) 1. For the **restart-db-then-delete-me** service, click on the **Configure** button and then save the configuration by clicking on **Save Config**. 2. On the **pulse-starter** service, locate and click the **Configure** button. Within the **Environment variables** section, you'll find an option to include the `PULSE_API_KEY` environment variable. Keep the `PULSE_API_KEY` field blank for the time being. Once you've set up the database and obtained the database URL from the [Prisma Data Platform](https://console.prisma.io/), you can then add the `PULSE_API_KEY` to the **pulse-starter** service. With the empty field for the Pulse API key, click **Save Config**. 3. Click on the **Deploy** button. @@ -110,15 +110,15 @@ To see an event in action, you need to make changes to the `User` table. You can You can run these queries using a tool such as [pgAdmin](https://www.pgadmin.org/), [dbeaver](https://dbeaver.io/), or any other way you might run queries on your database. - - Set the [wal_level](https://www.postgresql.org/docs/current/runtime-config-wal.html) to `logical`: + - Set the [`wal_level`](https://www.postgresql.org/docs/current/runtime-config-wal.html) to `logical`: ```sql ALTER SYSTEM SET wal_level = logical; ``` - - Set the [max_replication_slots](https://www.postgresql.org/docs/current/runtime-config-replication.html) to `20`: + - Set the [`max_replication_slots`](https://www.postgresql.org/docs/current/runtime-config-replication.html) to `20`: ```sql ALTER SYSTEM SET max_replication_slots = 20; ``` - - Set the [wal_keep_size](https://www.postgresql.org/docs/current/runtime-config-replication.html) to `2048`: + - Set the [`wal_keep_size`](https://www.postgresql.org/docs/current/runtime-config-replication.html) to `2048`: ```sql ALTER SYSTEM SET wal_keep_size = 2048; ``` diff --git a/content/400-pulse/250-database-setup/400-neon.mdx b/content/400-pulse/250-database-setup/400-neon.mdx index 3539f8ee56..f3a6109085 100644 --- a/content/400-pulse/250-database-setup/400-neon.mdx +++ b/content/400-pulse/250-database-setup/400-neon.mdx @@ -33,4 +33,4 @@ To enable logical replication in Neon for Prisma Pulse, follow these steps: 3. Before enabling Prisma Pulse, make sure to provide the publication name in the Platform Console: - ![](../images/replication-slot-submission.png) + ![](/img/pulse/replication-slot-submission.png) diff --git a/content/400-pulse/250-database-setup/500-supabase.mdx b/content/400-pulse/250-database-setup/500-supabase.mdx index 7d1a7b0fc6..ce88ac8d23 100644 --- a/content/400-pulse/250-database-setup/500-supabase.mdx +++ b/content/400-pulse/250-database-setup/500-supabase.mdx @@ -18,7 +18,7 @@ To use a direct database connection string in Supabase: 1. Navigate to your Project settings (`Settings` > `Configurations` > `Database`). 2. Disable the **Use connection pooling** option. - ![Supabase direct database connection](../images/supabase-direct-database-connection.png) + ![Supabase direct database connection](/img/pulse/supabase-direct-database-connection.png) 3. Copy the direct database connection string. diff --git a/content/400-pulse/250-database-setup/_category_.json b/content/400-pulse/250-database-setup/_category_.json new file mode 100644 index 0000000000..47ccf8cefe --- /dev/null +++ b/content/400-pulse/250-database-setup/_category_.json @@ -0,0 +1,4 @@ +{ + "collapsed": false, + "collapsible": false +} \ No newline at end of file diff --git a/content/400-pulse/300-concepts.mdx b/content/400-pulse/300-concepts.mdx index 877ecdc28b..bf16e09e89 100644 --- a/content/400-pulse/300-concepts.mdx +++ b/content/400-pulse/300-concepts.mdx @@ -6,8 +6,6 @@ tocDepth: 3 toc: true --- - - ## Change data capture [Change data capture (CDC)](https://en.wikipedia.org/wiki/Change_data_capture) refers to the process of identifying and capturing changes made to data in a database and then delivering those changes in real-time to a downstream process or system. diff --git a/content/400-pulse/400-api-reference.mdx b/content/400-pulse/400-api-reference.mdx index f95660ca6e..965d1823b0 100644 --- a/content/400-pulse/400-api-reference.mdx +++ b/content/400-pulse/400-api-reference.mdx @@ -3,6 +3,7 @@ title: 'API reference' metaTitle: 'Pulse: API reference' metaDescription: 'API reference documentation for Pulse.' tocDepth: 4 +toc_max_heading_level: 4 toc: true --- @@ -22,7 +23,7 @@ All example are based on the `User` model. -## subscribe +## `subscribe` `subscribe` returns all data change events related to the table you call this method on: @@ -42,7 +43,7 @@ const subscription = await prisma.user.subscribe({}) Inside of the `subscribe()` method you can use filters to get specific events and data. The three filter options currently supported are described below: -#### create +#### `create` You can use the `create` filter to retrieve all _create_ events on a table. A create event is triggered when a new record is created in a table. @@ -76,7 +77,7 @@ const subscription = await prisma.user.subscribe({ -#### update +#### `update` You can use the `update` filter to retrieve all _update_ events on a table. An update event is triggered when a value in a database record has changed. @@ -110,7 +111,7 @@ const subscription = await prisma.user.subscribe({ -#### delete +#### `delete` You can use the `delete` filter to retrieve all _delete_ events on a table. A delete event is triggered when a record has been removed from the database. @@ -155,7 +156,7 @@ ALTER TABLE public."User" REPLICA IDENTITY FULL; -## stop +## `stop` Allows you to explicitly stop subscriptions and close the connection. This is needed to ensure that the limited number of subscriptions allowed per table is not exhausted. diff --git a/content/400-pulse/700-feedback.mdx b/content/400-pulse/700-feedback.mdx index 8fe9bf14bf..6a3b7b6f5e 100644 --- a/content/400-pulse/700-feedback.mdx +++ b/content/400-pulse/700-feedback.mdx @@ -3,7 +3,6 @@ title: 'Feedback' metaTitle: 'Prisma Pulse: Feedback' metaDescription: 'Learn where to submit feedback about Prisma Pulse.' tocDepth: 3 -toc: true --- diff --git a/content/400-pulse/index.mdx b/content/400-pulse/index.mdx index 6647275405..90f81928a6 100644 --- a/content/400-pulse/index.mdx +++ b/content/400-pulse/index.mdx @@ -2,7 +2,10 @@ title: 'Pulse' metaTitle: 'Prisma Pulse' metaDescription: 'Prisma Pulse enables real-time database events with type-safe Prisma Client subscriptions.' -toc: false +hide_table_of_contents: true +sidebar_position: 0 +pagination_next: 'pulse/what-is-pulse' + --- diff --git a/content/500-platform/10-about.mdx b/content/500-platform/10-about.mdx index dbc81a1cbc..98b42b1f9d 100644 --- a/content/500-platform/10-about.mdx +++ b/content/500-platform/10-about.mdx @@ -2,6 +2,7 @@ title: 'About' metaTitle: 'Platform Console: About' metaDescription: '' +displayed_sidebar: platformSidebar --- diff --git a/content/500-platform/20-concepts/10-workspaces.mdx b/content/500-platform/20-concepts/10-workspaces.mdx index 910b3f6f04..83462bec87 100644 --- a/content/500-platform/20-concepts/10-workspaces.mdx +++ b/content/500-platform/20-concepts/10-workspaces.mdx @@ -4,6 +4,7 @@ metaTitle: 'Platform Console: Workspaces' metaDescription: 'Learn how to manage workspaces via Platform Console.' tocDepth: 3 toc: true +displayed_sidebar: platformSidebar --- diff --git a/content/500-platform/20-concepts/20-projects.mdx b/content/500-platform/20-concepts/20-projects.mdx index 777fff1be9..b3c37a4a6d 100644 --- a/content/500-platform/20-concepts/20-projects.mdx +++ b/content/500-platform/20-concepts/20-projects.mdx @@ -3,7 +3,8 @@ title: 'Projects' metaTitle: 'Platform Console: Projects' metaDescription: 'Learn how to manage projects via Platform Console.' tocDepth: 3 -toc: true +hide_table_of_contents: true +displayed_sidebar: platformSidebar --- diff --git a/content/500-platform/20-concepts/30-environments.mdx b/content/500-platform/20-concepts/30-environments.mdx index cb19c3148d..65cd7fbee6 100644 --- a/content/500-platform/20-concepts/30-environments.mdx +++ b/content/500-platform/20-concepts/30-environments.mdx @@ -4,7 +4,8 @@ metaTitle: 'Platform Environments' metaDescription: 'Learn about Environments in Platform Console.' tocDepth: 3 toc: true -highlight: false +highlight: true +displayed_sidebar: platformSidebar --- diff --git a/content/500-platform/20-concepts/_category_.json b/content/500-platform/20-concepts/_category_.json new file mode 100644 index 0000000000..47ccf8cefe --- /dev/null +++ b/content/500-platform/20-concepts/_category_.json @@ -0,0 +1,4 @@ +{ + "collapsed": false, + "collapsible": false +} \ No newline at end of file diff --git a/content/500-platform/20-concepts/index.mdx b/content/500-platform/20-concepts/index.mdx index 2e62e7a25e..906b233feb 100644 --- a/content/500-platform/20-concepts/index.mdx +++ b/content/500-platform/20-concepts/index.mdx @@ -2,7 +2,8 @@ title: 'Concepts' metaTitle: 'Platform Console: Concepts' metaDescription: '' -tocDepth: 4 +hide_table_of_contents: true +displayed_sidebar: platformSidebar --- diff --git a/content/500-platform/30-maturity-levels.mdx b/content/500-platform/30-maturity-levels.mdx index e878bf221a..94d42845a3 100644 --- a/content/500-platform/30-maturity-levels.mdx +++ b/content/500-platform/30-maturity-levels.mdx @@ -2,6 +2,7 @@ title: 'Maturity levels' metaTitle: 'Platform Console: Maturity levels' metaDescription: '' +displayed_sidebar: platformSidebar --- @@ -12,8 +13,6 @@ You can [check out the releases and maturity process for the Prisma ORM](/orm/mo -## - ### Early Access If a feature on the Prisma Data Platform is labeled as **Early Access**: diff --git a/content/500-platform/40-limits.mdx b/content/500-platform/40-limits.mdx index 888e642bd0..d02e7dadfc 100644 --- a/content/500-platform/40-limits.mdx +++ b/content/500-platform/40-limits.mdx @@ -2,7 +2,8 @@ title: 'Limits' metaTitle: 'Platform Console: Limits' tocDepth: 3 -toc: true +hide_table_of_contents: true +displayed_sidebar: platformSidebar --- diff --git a/content/500-platform/50-support.mdx b/content/500-platform/50-support.mdx index d058d632d7..feadab2505 100644 --- a/content/500-platform/50-support.mdx +++ b/content/500-platform/50-support.mdx @@ -4,6 +4,7 @@ metaTitle: 'Platform console: Support' metaDescription: '' tocDepth: 3 toc: true +displayed_sidebar: platformSidebar --- diff --git a/content/500-platform/60-platform-cli/10-about.mdx b/content/500-platform/60-platform-cli/10-about.mdx index ac076f1513..26c2b74ba9 100644 --- a/content/500-platform/60-platform-cli/10-about.mdx +++ b/content/500-platform/60-platform-cli/10-about.mdx @@ -2,6 +2,8 @@ title: 'About' metaTitle: 'Platform CLI: About' tocDepth: 3 +hide_table_of_contents: true +displayed_sidebar: platformSidebar --- diff --git a/content/500-platform/60-platform-cli/20-commands.mdx b/content/500-platform/60-platform-cli/20-commands.mdx index 7f55dd5051..0ad7f43838 100644 --- a/content/500-platform/60-platform-cli/20-commands.mdx +++ b/content/500-platform/60-platform-cli/20-commands.mdx @@ -1,7 +1,8 @@ --- title: 'Commands' metaTitle: 'Platform CLI: Commands' -tocDepth: 4 +toc_max_heading_level: 4 +displayed_sidebar: platformSidebar --- @@ -22,9 +23,9 @@ To get started, ensure you have the [Prisma CLI](/orm/tools/prisma-cli) updated ## Authentication -### platform +### `platform` -#### auth login +#### `auth login` Opens a browser window that allows you to log into your Prisma Data Platform account or create a new one. @@ -32,7 +33,7 @@ Opens a browser window that allows you to log into your Prisma Data Platform acc npx prisma platform auth login --early-access ``` -#### auth logout +#### `auth logout` Logs out of your Prisma Data Platform account. @@ -40,7 +41,7 @@ Logs out of your Prisma Data Platform account. npx prisma platform auth logout --early-access ``` -#### auth show +#### `auth show` Displays information about the currently authenticated user. @@ -50,9 +51,9 @@ npx prisma platform auth show --early-access ### Workspace Management -### platform +### `platform` -#### workspace show +#### `workspace show` Lists all workspaces available to your account. @@ -62,9 +63,9 @@ npx prisma platform workspace show --early-access ### Project Management -### platform +### `platform` -#### project show +#### `project show` Lists all projects within the specified workspace. @@ -80,7 +81,7 @@ npx prisma platform project show \ | ------------------ | -------- | -------- | --------------------------------------------------------------------------------------------------------------------------- | | `--workspace` `-w` | `string` | yes | The workspace id.

**Hint:** You can view your workspace ids with the [`workspace show`](#workspace-show) command. | -#### project create +#### `project create` Creates a new project within the specified workspace. @@ -98,7 +99,7 @@ npx prisma platform project create \ | `--workspace` `-w` | `string` | yes | The workspace `id`.

**Hint:** You can view your workspace ids with the [`workspace show`](#workspace-show) command. | | `--name` `-n` | `string` | no | The display name for the project.

If omitted, a default project name will be generated for you. | -#### project delete +#### `project delete` Deletes the specified project. @@ -116,9 +117,9 @@ npx prisma platform project delete \ ### Environment Management -### platform +### `platform` -#### environment show +#### `environment show` Lists all environments within the specified project. @@ -134,7 +135,7 @@ npx prisma platform environment show \ | ---------------- | -------- | -------- | -------------------------------------------------------------------------------------------------------------------- | | `--project` `-p` | `string` | yes | The project `id`.

**Hint:** You can view your project ids with the [`project show`](#project-show) command. | -#### environment create +#### `environment create` Creates a new environment within the specified project. @@ -152,7 +153,7 @@ npx prisma platform environment create \ | `--project` `-p` | `string` | yes | The project `id`.

**Hint:** You can view your project ids with the [`project show`](#project-show) command. | | `--name` `-n` | `string` | no | The display name for the environment.

If omitted, a default environment name will be generated for you. | -#### environment delete +#### `environment delete` Deletes the specified environment. @@ -170,9 +171,9 @@ npx prisma platform environment delete \ ### API Key Management -### platform +### `platform` -#### apikey show +#### `apikey show` Lists all API keys for the specified environment. @@ -188,7 +189,7 @@ npx prisma platform apikey show \ | -------------------- | -------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------- | | `--environment` `-e` | `string` | yes | The environment `id`.

**Hint:** You can view your environment ids with the [`environment show`](#environment-show) command. | -#### apikey create +#### `apikey create` Creates a new API key for the specified project. @@ -206,7 +207,7 @@ npx prisma platform apikey create \ | `--environment` `-e` | `string` | yes | The environment `id`.

**Hint:** You can view your environment ids with the [`environment show`](#environment-show) command. | | `--name` `-n` | `string` | no | The display name for the API key.

If omitted, a default API key name will be generated for you. | -#### apikey delete +#### `apikey delete` Deletes the specified API Key. @@ -224,9 +225,9 @@ npx prisma platform apikey delete \ ### Prisma Accelerate -### platform +### `platform` -#### accelerate enable +#### `accelerate enable` Enables Prisma Accelerate for the specified environment. @@ -248,7 +249,7 @@ npx prisma platform accelerate enable \ | `--region` | `string` | no | The region for Prisma Accelerate’s managed connection pool.

View the list of available regions [here](/accelerate/faq#what-regions-is-accelerates-connection-pool-available-in).

**Hint**: Select the region _nearest_ your database for optimal latency. | | `--apikey` | `boolean` | no | If yes, a new API key will be generated for the associated environment. | -#### accelerate disable +#### `accelerate disable` Disables Prisma Accelerate for the specified environment. @@ -266,9 +267,9 @@ npx prisma platform accelerate disable \ ### Prisma Pulse -### platform +### `platform` -#### pulse enable +#### `pulse enable` Enables Prisma Pulse for the specified environment. @@ -290,7 +291,7 @@ npx prisma platform pulse enable \ | `--region` | `string` | no | The region for Prisma Pulse. | | `--apikey` | `boolean` | no | If yes, a new API key will be generated for the associated environment. | -#### pulse disable +#### `pulse disable` Disables Prisma Pulse for the specified environment. diff --git a/content/500-platform/60-platform-cli/_category_.json b/content/500-platform/60-platform-cli/_category_.json new file mode 100644 index 0000000000..b353f0c5d1 --- /dev/null +++ b/content/500-platform/60-platform-cli/_category_.json @@ -0,0 +1,7 @@ +{ + "collapsed": false, + "collapsible": false, + "customProps": { + "badge": "Early Access" + } +} \ No newline at end of file diff --git a/content/500-platform/60-platform-cli/index.mdx b/content/500-platform/60-platform-cli/index.mdx index 10845e4817..abcab86b45 100644 --- a/content/500-platform/60-platform-cli/index.mdx +++ b/content/500-platform/60-platform-cli/index.mdx @@ -3,10 +3,13 @@ title: 'Platform CLI' metaTitle: 'Platform CLI' staticLink: true earlyaccess: true +displayed_sidebar: platformSidebar --- +## In this section + diff --git a/content/500-platform/_category_.json b/content/500-platform/_category_.json new file mode 100644 index 0000000000..cf9e804f7d --- /dev/null +++ b/content/500-platform/_category_.json @@ -0,0 +1,5 @@ +{ + "collapsed": false, + "collapsible": false, + "className": "firstTitle" +} \ No newline at end of file diff --git a/content/500-platform/index.mdx b/content/500-platform/index.mdx index 05c12f5fc3..cd3581c6fa 100644 --- a/content/500-platform/index.mdx +++ b/content/500-platform/index.mdx @@ -2,8 +2,9 @@ title: 'Platform' metaTitle: 'Platform' metaDescription: 'Get started with the Prisma Data Platform with its official documentation, and learn more about its features with reference documentation, guides, and more.' -toc: false -# earlyaccess: false +hide_table_of_contents: true +sidebar_position: 0 +displayed_sidebar: platformSidebar --- diff --git a/content/600-about/200-prisma-docs/20-style-guide/01-writing-style.mdx b/content/600-about/200-prisma-docs/20-style-guide/01-writing-style.mdx index 299e0a0073..9dde9725ec 100644 --- a/content/600-about/200-prisma-docs/20-style-guide/01-writing-style.mdx +++ b/content/600-about/200-prisma-docs/20-style-guide/01-writing-style.mdx @@ -3,6 +3,7 @@ title: 'Writing style' metaTitle: 'Prisma docs style guide: writing style' metaDescription: 'This section of the style guide provides guidelines on tone of voice, audience, and other tonal matters.' tocDepth: 4 +toc_max_heading_level: 4 search: false --- diff --git a/content/600-about/200-prisma-docs/20-style-guide/02-word-choice.mdx b/content/600-about/200-prisma-docs/20-style-guide/02-word-choice.mdx index d2244e84b8..2265012612 100644 --- a/content/600-about/200-prisma-docs/20-style-guide/02-word-choice.mdx +++ b/content/600-about/200-prisma-docs/20-style-guide/02-word-choice.mdx @@ -3,6 +3,7 @@ title: 'Word choice' metaTitle: 'Prisma docs style guide: word choice' metaDescription: 'This section of the style guide provides guidelines on what terms and phrase constructions to use.' tocDepth: 4 +toc_max_heading_level: 4 search: false --- diff --git a/content/600-about/200-prisma-docs/20-style-guide/03-spelling-punctuation-formatting.mdx b/content/600-about/200-prisma-docs/20-style-guide/03-spelling-punctuation-formatting.mdx index 80680d9ce7..6f601b4edd 100644 --- a/content/600-about/200-prisma-docs/20-style-guide/03-spelling-punctuation-formatting.mdx +++ b/content/600-about/200-prisma-docs/20-style-guide/03-spelling-punctuation-formatting.mdx @@ -3,6 +3,7 @@ title: 'Spelling, punctuation, and formatting' metaTitle: 'Prisma docs style guide: spelling, punctuation, and formatting' metaDescription: 'This section of the style guide provides guidelines on how to present the information you add.' tocDepth: 4 +toc_max_heading_level: 4 search: false --- @@ -55,7 +56,7 @@ If you're not sure about the spelling of a proper noun, check its official web s - Use sentence case for titles and headings: only the initial word is uppercase (exception: [capitalize proper nouns](#capitalize-and-spell-out-proper-nouns)) - [Avoid gerunds](/about/prisma-docs/style-guide/word-choice#avoid-gerunds-ing-verb-forms) ("Configure the database", not "Configuring the database") - Do not use punctuation at the end of a title or heading unless a question mark is required -- Use `code` for code in headings - this is required by our navigation elements +- Use ``code`` for code in headings - this is required by our navigation elements ## Tables, bullet lists, and numbered lists @@ -173,6 +174,7 @@ Use the [`highlight` property](/about/prisma-docs/docs-components/mdx-examples#c ```prisma highlight=3;normal generator client { provider = "prisma-client-js" + //highlight-next-line previewFeatures = ["namedConstraints"] } ``` @@ -302,7 +304,7 @@ When you bring the error messages into the page, remove any double quotes around Bad: ``` -#### P1008 +#### `P1008` "Operations timed out after `{time}`" ``` @@ -310,7 +312,7 @@ Bad: Good: ``` -#### P1008 +#### `P1008` Operations timed out after `{time}` ``` diff --git a/content/600-about/200-prisma-docs/20-style-guide/05-prisma-product-names.mdx b/content/600-about/200-prisma-docs/20-style-guide/05-prisma-product-names.mdx index 2b7d89b099..b71480a1fe 100644 --- a/content/600-about/200-prisma-docs/20-style-guide/05-prisma-product-names.mdx +++ b/content/600-about/200-prisma-docs/20-style-guide/05-prisma-product-names.mdx @@ -3,6 +3,7 @@ title: 'Prisma product and component names' metaTitle: 'Prisma docs style guide: Prisma product and component names' metaDescription: 'This section of the style guide provides guidelines on how to refer to Prisma products and components.' tocDepth: 4 +toc_max_heading_level: 4 search: false --- diff --git a/content/600-about/200-prisma-docs/20-style-guide/06-image-guidelines.mdx b/content/600-about/200-prisma-docs/20-style-guide/06-image-guidelines.mdx index 3a9f795606..775ac3e641 100644 --- a/content/600-about/200-prisma-docs/20-style-guide/06-image-guidelines.mdx +++ b/content/600-about/200-prisma-docs/20-style-guide/06-image-guidelines.mdx @@ -3,6 +3,7 @@ title: 'Prisma docs image guidelines' metaTitle: 'Prisma docs style guide: image guidelines' metaDescription: 'This page provides guidelines for images in our docs.' tocDepth: 4 +toc_max_heading_level: 4 search: false --- @@ -32,7 +33,7 @@ You can take screenshots with your favorite tool. We find it very easy to use Sn SnagIt - Screenshot canvas shadow @@ -42,7 +43,7 @@ You can take screenshots with your favorite tool. We find it very easy to use Sn If you can, avoid annotations. If necessary, apply annotations that are minimal and similar in style to the screenshot below. Data Browser - Save multiple changes @@ -58,7 +59,7 @@ For details, see the sections below. Again, we suggest the use of SnagIt as a be - Apply a white outline on the text. This ensures that the black text will be visible in Dark mode. SnagIt - Screenshot text annotations @@ -69,7 +70,7 @@ For details, see the sections below. Again, we suggest the use of SnagIt as a be - If you have text annotations that use arrows or lines to point to an area on the screenshot, a small part of the line or arrow should appear on the canvas (and outside of the screenshot). - Apply a centered shadow on each pointer and make the shadow color white. This ensures that the part of the line that is outside of the screenshot remains visible in Dark mode. SnagIt - Screenshot arrow line annotations @@ -137,7 +138,7 @@ To decide where to save images, use the guidelines below. ```md -![image](trace-diagram.png) +![image](./trace-diagram.png) ``` ## Add images to MDX files @@ -152,7 +153,7 @@ If you need to shrink an image by width, use the `` component. ```html SnagIt - Screenshot text annotations diff --git a/content/600-about/200-prisma-docs/20-style-guide/07-user-interace-guidelines.mdx b/content/600-about/200-prisma-docs/20-style-guide/07-user-interace-guidelines.mdx index 1524aae564..7d23c35703 100644 --- a/content/600-about/200-prisma-docs/20-style-guide/07-user-interace-guidelines.mdx +++ b/content/600-about/200-prisma-docs/20-style-guide/07-user-interace-guidelines.mdx @@ -124,7 +124,8 @@ It can feel excessive to include the UI term for each UI element when you write To make UI steps easier to read, in most cases you can omit the UI term for each UI element. -
Example 1: drop-down menu +
+Example 1: drop-down menu @@ -136,7 +137,8 @@ From **GitHub Accounts & Organizations**, select a GitHub account or an organiza
-
Example 2: text box +
+Example 2: text box @@ -148,7 +150,8 @@ In **Display Name**, enter a name for your project.
-
Example 3: select the option +
+Example 3: select the option @@ -160,7 +163,8 @@ Select **Create a repository**.
-
Example 4: clear the checkbox +
+Example 4: clear the checkbox @@ -174,7 +178,8 @@ Clear **Include sample data** to skip seeding the database with sample data. In specific cases, calling out the UI control name brings clarity and makes it easy to document a more complex step. Use your judgement and avoid this rule in such cases. -
Example 5: UI control under a section +
+Example 5: UI control under a section ```md diff --git a/content/600-about/200-prisma-docs/20-style-guide/10-boilerplate-content.mdx b/content/600-about/200-prisma-docs/20-style-guide/10-boilerplate-content.mdx index dd405a5e42..f3db678a54 100644 --- a/content/600-about/200-prisma-docs/20-style-guide/10-boilerplate-content.mdx +++ b/content/600-about/200-prisma-docs/20-style-guide/10-boilerplate-content.mdx @@ -24,6 +24,7 @@ To enable this feature, add `namedConstraints` to `previewFeatures` in your sche ```prisma highlight=3;normal generator client { provider = "prisma-client-js" + //highlight-next-line previewFeatures = ["namedConstraints"] } ``` diff --git a/content/600-about/200-prisma-docs/20-style-guide/save-multiple-changes.png b/content/600-about/200-prisma-docs/20-style-guide/images/save-multiple-changes.png similarity index 100% rename from content/600-about/200-prisma-docs/20-style-guide/save-multiple-changes.png rename to content/600-about/200-prisma-docs/20-style-guide/images/save-multiple-changes.png diff --git a/content/600-about/200-prisma-docs/20-style-guide/snagit-arrow-line-config.png b/content/600-about/200-prisma-docs/20-style-guide/images/snagit-arrow-line-config.png similarity index 100% rename from content/600-about/200-prisma-docs/20-style-guide/snagit-arrow-line-config.png rename to content/600-about/200-prisma-docs/20-style-guide/images/snagit-arrow-line-config.png diff --git a/content/600-about/200-prisma-docs/20-style-guide/snagit-screenshot-shadow-config.png b/content/600-about/200-prisma-docs/20-style-guide/images/snagit-screenshot-shadow-config.png similarity index 100% rename from content/600-about/200-prisma-docs/20-style-guide/snagit-screenshot-shadow-config.png rename to content/600-about/200-prisma-docs/20-style-guide/images/snagit-screenshot-shadow-config.png diff --git a/content/600-about/200-prisma-docs/20-style-guide/snagit-text-annotation-config.png b/content/600-about/200-prisma-docs/20-style-guide/images/snagit-text-annotation-config.png similarity index 100% rename from content/600-about/200-prisma-docs/20-style-guide/snagit-text-annotation-config.png rename to content/600-about/200-prisma-docs/20-style-guide/images/snagit-text-annotation-config.png diff --git a/content/600-about/200-prisma-docs/20-style-guide/index.mdx b/content/600-about/200-prisma-docs/20-style-guide/index.mdx index 50a4108110..7fcf60a907 100644 --- a/content/600-about/200-prisma-docs/20-style-guide/index.mdx +++ b/content/600-about/200-prisma-docs/20-style-guide/index.mdx @@ -3,6 +3,7 @@ title: 'Prisma docs style guide' metaTitle: 'Prisma documentation style guide' metaDescription: 'The Prisma style guide provides contributor guidelines for the Prisma docs.' tocDepth: 4 +toc_max_heading_level: 4 hidePage: false --- diff --git a/content/600-about/200-prisma-docs/20-style-guide/save-multiple-changes.snagx b/content/600-about/200-prisma-docs/20-style-guide/save-multiple-changes.snagx deleted file mode 100644 index ae9462fb9d..0000000000 Binary files a/content/600-about/200-prisma-docs/20-style-guide/save-multiple-changes.snagx and /dev/null differ diff --git a/content/600-about/200-prisma-docs/20-style-guide/snagit-arrow-line-config.snagx b/content/600-about/200-prisma-docs/20-style-guide/snagit-arrow-line-config.snagx deleted file mode 100644 index f65da0f36f..0000000000 Binary files a/content/600-about/200-prisma-docs/20-style-guide/snagit-arrow-line-config.snagx and /dev/null differ diff --git a/content/600-about/200-prisma-docs/20-style-guide/snagit-screenshot-shadow-config.snagx b/content/600-about/200-prisma-docs/20-style-guide/snagit-screenshot-shadow-config.snagx deleted file mode 100644 index c1d310081a..0000000000 Binary files a/content/600-about/200-prisma-docs/20-style-guide/snagit-screenshot-shadow-config.snagx and /dev/null differ diff --git a/content/600-about/200-prisma-docs/20-style-guide/snagit-text-annotation-config.snagx b/content/600-about/200-prisma-docs/20-style-guide/snagit-text-annotation-config.snagx deleted file mode 100644 index 69adeeddd1..0000000000 Binary files a/content/600-about/200-prisma-docs/20-style-guide/snagit-text-annotation-config.snagx and /dev/null differ diff --git a/content/600-about/200-prisma-docs/30-docs-components/01-mdx-examples.mdx b/content/600-about/200-prisma-docs/30-docs-components/01-mdx-examples.mdx index e789fb0277..4496424195 100644 --- a/content/600-about/200-prisma-docs/30-docs-components/01-mdx-examples.mdx +++ b/content/600-about/200-prisma-docs/30-docs-components/01-mdx-examples.mdx @@ -2,7 +2,7 @@ title: 'MDX components' metaTitle: 'MDX components in the Prisma docs' metaDescription: 'MDX components components available on the Prisma documentation site.' -navTitle: 'MDX components' +sidebar_label: 'MDX components' search: false --- @@ -10,9 +10,11 @@ search: false This page describes how to use the custom [MDX](https://mdxjs.com/) components (e.g. code blocks) in the Prisma docs. +Components not listed here are part of the [Docusaurus Markdown features](https://docusaurus.io/docs/markdown-features) + -## TopBlock +## `TopBlock` Required at the top of the page to avoid styling issues: @@ -21,15 +23,9 @@ Required at the top of the page to avoid styling issues: This page describes how to use [MDX](https://mdxjs.com/) components (e.g. code blocks) in the Prisma docs. - -``` - -## inlinecode +Components not listed here are part of the [Docusaurus Markdown features](https://docusaurus.io/docs/markdown-features) -Instead of using backticks (`` ` ``) to surround code snippets in headings, you should instead surround the snippet with `` - -```md -## inlinecode + ``` ## Code blocks @@ -303,138 +299,26 @@ async function main() { }``` ```` -## FootNote - -Example: - -Every¹ feature in your [data model](/orm/prisma-schema/data-model/models) maps to a corresponding feature in the underlying database. - - - -¹ Comments and Prisma-level functions (`uuid()` and `cuid()`) do not map to database features. - - - -Code: - -``` - - -¹ Footnote text. - - -``` - -## File icons - -There are 4 icons available: - -- -- -- -- -- - -``` - - - - - -``` - -## Tabbed blocks - -Example: - -, ]}> - - - -| **id** | **email** | **name** | -| :----- | :------------------ | :-------- | -| `1` | `"sarah@prisma.io"` | `"Sarah"` | -| `2` | `"maria@prisma.io"` | `"Maria"` | - - - - - -```copy bash-symbol -npm run dev -``` - - - - - -Code: - -````wrap -, ]}> - - - -| **id** | **email** | **name** | -| :----- | :------------------ | :-------- | -| `1` | `"sarah@prisma.io"` | `"Sarah"` | -| `2` | `"maria@prisma.io"` | `"Maria"` | - - - - - -```copy bash-symbol -npm run dev -``` - - - - -```` - -## Subsections - -Lists all child pages of the current page to the specified depth: - -``` - -``` - ## Expand/Collapse section Example: -
Expand if you want to view more +
+Expand if you want to view more Here's more!
``` -
Expand if you want to view more +
+Expand if you want to view more Here's more!
``` -## Button link - -Example: - - - Button text - - -Code: - -``` - - Button text - -``` - ## Code with result Example: @@ -654,128 +538,3 @@ Code: ```` - -## Quiz component - -Example: - - - -Code: - -```tsx - -``` - -## Tip component - -Example: - - - -To find out if Prisma is the right fit for your project, head on over to [What is Prisma](/orm/overview/introduction/what-is-prisma) and read all about what makes Prisma, Prisma! - - - -Code: - -``` - - - To find out if Prisma is the right fit for your project, head on over to [What is Prisma](/orm/overview/introduction/what-is-prisma) and read all about what makes Prisma, Prisma! - - -``` - -## Admonition component - -The Admonition shows a message to the user with different levels of priority. - -- `info`: The message is informational. -- `warning`: The message is a warning. -- `alert`: The message is an alert. - -### Info Example - - - -This is some information that might be of use to the reader - - - -### Warning Example - - - -This is some information we want to warn the user about, maybe they should know this before they start using a feature. - - - -### Alert Example - - - -This is some information we want to alert the user to, maybe they should be aware of some **breaking changes** - - - -```tsx - - - -This is some information that might be of use to the reader - - - - - -This is some information we want to warn the user about, maybe they should know this before they start using a feature. - - - - - -This is some information we want to alert the user to, maybe they should be aware of some **breaking changes** - - -``` diff --git a/content/600-about/200-prisma-docs/30-docs-components/03-frontmatter.mdx b/content/600-about/200-prisma-docs/30-docs-components/03-frontmatter.mdx index a85ee90ca2..ba79728d6f 100644 --- a/content/600-about/200-prisma-docs/30-docs-components/03-frontmatter.mdx +++ b/content/600-about/200-prisma-docs/30-docs-components/03-frontmatter.mdx @@ -10,7 +10,7 @@ search: false Front matter that informs the meta information of a page. -### title +### `title` The `

` title of the page. This title appears at the top of the page, and in the left-hand navigation. @@ -21,7 +21,7 @@ Note: - You can wrap the `title` text in single quotes, but this is not mandatory. - If you wrap the `title` text in single quotes, then you cannot include apostrophes in the text. -### metaTitle +### `metaTitle` The `` of the page - falls back to `title` (`h1`). @@ -34,11 +34,11 @@ Note: - You can wrap the `metaTitle` text in single quotes, but this is not mandatory. - If you wrap the `metaTitle` text in single quotes, then you cannot include apostrophes in the text. -## <inlinecode>navTitle</inlinecode> +## `sidebar_label` Specifies a different, usually shorter title for the left-hand navigation. -### <inlinecode>metaDescription</inlinecode> +### `metaDescription` The `<meta name="description" content="" />` of the page. @@ -51,50 +51,27 @@ Note: Front matter that configured the navigation. -### <inlinecode>staticLink</inlinecode> - -Accepts `true` or `false` (defaults to `false`). - -If `true`, this option turns the page into a heading in the left-hand navigation. This heading cannot be clicked by the docs user. For example on [this page](/orm/overview). - -> **Note**: The page still exists, but docs users can only navigate to it with the breadcrumb trail. We recommend that you add a [subsections](/about/prisma-docs/docs-components/mdx-examples#subsections) MDX component to the page, so that it contains useful content when a user navigates to it with the breadcrumb trail. - -### <inlinecode>duration</inlinecode> +### `duration` Accepts a string specifying the duration to read the article. Example: `duration: '15 min'` -### <inlinecode>preview</inlinecode> +### `preview` Accepts `true` or `false` (defaults to `false`). Adds a `Preview` label to a page in the left-hand navigation. -### <inlinecode>deprecated</inlinecode> +### `deprecated` Accepts `true` or `false` (defaults to `false`). Adds a `Deprecated` label to a page in the left-hand navigation. -### <inlinecode>hidePage</inlinecode> - -Accepts `true` or `false` (defaults to `false`). - -When set to `true`, hides the page from all navigation. - -``` -hidePage: true -``` - -Note: - -- A page hidden with `hidePage` is not listed by the [subsections](/about/prisma-docs/docs-components/mdx-examples#subsections) MDX component. -- A page hidden with `hidePage` is still findable by docs users with a search. To omit a page from the search results, use the [`search`](#search) tag. - ## Table of Contents (right sidebar) -### <inlinecode>toc</inlinecode> +### `toc` Enable or disable table of contents navigation on the page (defaults to `false`). For example: @@ -102,7 +79,7 @@ Enable or disable table of contents navigation on the page (defaults to `false`) toc: true ``` -### <inlinecode>tocDepth</inlinecode> +### `tocDepth` Controls the depth of headings to show in the in-page ToC: @@ -116,7 +93,7 @@ tocDepth: 2 Front matter that configures search. -### <inlinecode>search</inlinecode> +### `search` Accepts `true` or `false` (defaults to `true`). @@ -134,7 +111,7 @@ Note: Front matter that configured page content -### <inlinecode>langSwitcher</inlinecode> +### `langSwitcher` Accepts an array of languages to be shown in the page as dropdown options in order to switch the context between the pages @@ -144,7 +121,7 @@ Example: langSwitcher: ['typescript', 'node'] ``` -### <inlinecode>dbSwitcher</inlinecode> +### `dbSwitcher` Accepts an array of database options to be shown in the page as dropdown options in order to switch the context between the pages @@ -158,7 +135,7 @@ dbSwitcher: ['postgresql', 'mysql', 'sqlserver', 'planetscale', 'cockroachdb'] Front matter to configure the visual appearance of a page. -### <inlinecode>wide</inlinecode> +### `wide` Accepts `true` or `false` (defaults to `false`). diff --git a/content/600-about/200-prisma-docs/30-docs-components/index.mdx b/content/600-about/200-prisma-docs/30-docs-components/index.mdx index 29119086e3..d9c52b7ecf 100644 --- a/content/600-about/200-prisma-docs/30-docs-components/index.mdx +++ b/content/600-about/200-prisma-docs/30-docs-components/index.mdx @@ -2,8 +2,8 @@ title: 'Prisma docs components' metaTitle: 'Prisma documentation components' metaDescription: 'This section describes the Prisma docs file format.' -tocDepth: 4 search: false +hide_table_of_contents: true --- ## In this section diff --git a/content/600-about/200-prisma-docs/index.mdx b/content/600-about/200-prisma-docs/index.mdx index 1e74fa1b2f..27d62cf233 100644 --- a/content/600-about/200-prisma-docs/index.mdx +++ b/content/600-about/200-prisma-docs/index.mdx @@ -2,7 +2,7 @@ title: 'Prisma docs' metaTitle: 'About Prisma docs' metaDescription: 'About Prisma docs' -toc: false +hide_table_of_contents: true staticLink: true search: false --- diff --git a/content/600-about/index.mdx b/content/600-about/index.mdx index 594a2b0e24..0b27515e4b 100644 --- a/content/600-about/index.mdx +++ b/content/600-about/index.mdx @@ -2,7 +2,7 @@ title: 'About' metaTitle: 'About' metaDescription: 'About the Prisma docs.' -toc: false +hide_table_of_contents: true --- <TopBlock> diff --git a/content/600-about/user-table.svg b/content/600-about/user-table.svg deleted file mode 100644 index 1bc2e636a6..0000000000 --- a/content/600-about/user-table.svg +++ /dev/null @@ -1 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="181" height="186" viewBox="-0.5 -0.5 181 186" content="<mxfile host="www.draw.io" modified="2020-02-19T08:45:21.851Z" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36" etag="ehJuVmiVKOUOl8xOHWRN" version="12.7.2" type="github"><diagram id="C5RBs43oDa-KdzZeNtuy" name="Page-1">7ZlrU+IwFIZ/DR/ZoS0U/GhRcZXdwcXbNyfQ0GZJk24aBPz1e9KmNysqy4qX6QzDJG9PkibnyVtCG1Y/WA0ECv0f3MW0YbbcVcM6aphmt9uCbyWsE+GgYyeCJ4ibSEYujMkD1qJu5y2Ii6NSoOScShKWxSlnDE9lSUNC8GU5bMZpedQQebgijKeIVtUb4ko/UXtmN9dPMfH8dGTDPkiuBCgN1jOJfOTyZUGyjhtWX3Auk1Kw6mOq1i5dl5vv6xs6nNuDs4voD7pyzi9/XjeTzk62aZJNQWAm/7nrh/ns5PS6/fs2HJ1cLFuDw8lZs2m3k77vEV3oBbuKsNATlut0FaMlCShiUHNmnMmxvmJAfeoT6g7Rmi/UvUUSTedpzfG5IA8Qj6gOhstCakhMuxQxVi1BboEqcAQxo3TCRiYNUSR1zJRTisKITLI7CZDwCHO4lDxIO+IL5mJX17IMxhUp+DxjQrV/5TLrdNxjIfGqAJle9gHmAZZiDSHpHtIA6R3U09VljqORan4RxZ6pt4HeAl7WczbYL9gyiHmwBNuMZj8xmmmXB0NUYsGQxI5awqiIFhQK08ylGLht4OtU4IP4Cno+ClUR8iIJovmMLUfyUCeT4lnKhdBzUuVJyoJKL6LEY1BOYh2VPwI+cajluDNnRijtc8oFKIzHwEchmhLmDZMh2q1c+qWHaoPEob8ZjenyietiFtMnkUQJoKpZyAmT8fp2HPhAFvqtb51GB6bZh7qR1+GjwoXscwagIhITiYH+JVY7wHEFDy+Bd5xNexvSi3u4XcX+eat4mft1GamXQH+MXpHzEnNbA2ZXABud7wzYpGgwT/DyKs4eQfW/mHoJGzXHjW73/CZ9nPbska1vpvRULOFQyL9l7zP93Ur6Z0RE8o6hAOqHMQYC1rz2nD14zpvZTMd8b5vpVTirTWa7pHc3JP1DmcytPV+ytud793Q+YKI5MgnVP7qLuaeotpgvZjHd3v4s5knKjApltcNsyvmz2/TzGYxZST0OEKG1uXwVczFa7Xd2F6t2l93cxdyQ84/vLtWfrrG73MF9w1kpUJtD+cyEc1q7zKd2GeuVfzu+GWoHtcvs5jK9DTn/+C5jVE9JEyKkf4SkPiW5qlQbzGc2mM4e/+59mrL6lLSjwxgf8ZgE1fwla/LuKX9TbR3/BQ==</diagram></mxfile>" style="background-color:#fff"><defs><clipPath id="mx-clip-40-31-136-26-0"><rect x="40" y="31" width="136" height="26"/></clipPath><clipPath id="mx-clip-4-31-28-26-0"><rect x="4" y="31" width="28" height="26"/></clipPath><clipPath id="mx-clip-40-57-136-26-0"><rect x="40" y="57" width="136" height="26"/></clipPath><clipPath id="mx-clip-40-83-136-26-0"><rect x="40" y="83" width="136" height="26"/></clipPath><clipPath id="mx-clip-40-109-136-26-0"><rect x="40" y="109" width="136" height="26"/></clipPath><clipPath id="mx-clip-40-135-136-26-0"><rect x="40" y="135" width="136" height="26"/></clipPath><clipPath id="mx-clip-40-161-136-26-0"><rect x="40" y="161" width="136" height="26"/></clipPath></defs><g><path d="M 0 26 L 0 0 L 180 0 L 180 26" fill="#fff" stroke="#000" stroke-miterlimit="10" pointer-events="all"/><path d="M 0 26 L 0 182 L 180 182 L 180 26" fill="none" stroke="#000" stroke-miterlimit="10" pointer-events="none"/><path d="M 0 26 L 180 26" fill="none" stroke="#000" stroke-miterlimit="10" pointer-events="none"/><g fill="#000" font-family="Helvetica" font-weight="bold" text-anchor="middle" font-size="12"><text x="89.5" y="17.5">User</text></g><path d="M 0 26 M 180 26 M 180 52 L 0 52" fill="none" stroke="#000" stroke-miterlimit="10" pointer-events="none"/><g fill="#000" font-family="Helvetica" text-decoration="underline" clip-path="url(#mx-clip-40-31-136-26-0)" font-size="12"><text x="41.5" y="43.5">id</text></g><path d="M 0 26 M 36 26 L 36 52 M 0 52" fill="none" stroke="#000" stroke-miterlimit="10" pointer-events="none"/><g fill="#000" font-family="Helvetica" clip-path="url(#mx-clip-4-31-28-26-0)" font-size="12"><text x="5.5" y="43.5">PK</text></g><path d="M 0 52 M 180 52 M 180 78 L 0 78" fill="none" stroke="#000" stroke-miterlimit="10" pointer-events="none"/><g fill="#000" font-family="Helvetica" clip-path="url(#mx-clip-40-57-136-26-0)" font-size="12"><text x="41.5" y="69.5">first_name: string</text></g><path d="M 0 52 M 36 52 L 36 78 M 0 78" fill="none" stroke="#000" stroke-miterlimit="10" pointer-events="none"/><path d="M 0 78 M 180 78 M 180 104 L 0 104" fill="none" stroke="#000" stroke-miterlimit="10" pointer-events="none"/><g fill="#000" font-family="Helvetica" clip-path="url(#mx-clip-40-83-136-26-0)" font-size="12"><text x="41.5" y="95.5">last_name: string</text></g><path d="M 0 78 M 36 78 L 36 104 M 0 104" fill="none" stroke="#000" stroke-miterlimit="10" pointer-events="none"/><path d="M 0 104 M 180 104 M 180 130 L 0 130" fill="none" stroke="#000" stroke-miterlimit="10" pointer-events="none"/><g fill="#000" font-family="Helvetica" clip-path="url(#mx-clip-40-109-136-26-0)" font-size="12"><text x="41.5" y="121.5">email: string</text></g><path d="M 0 104 M 36 104 L 36 130 M 0 130" fill="none" stroke="#000" stroke-miterlimit="10" pointer-events="none"/><path d="M 0 130 M 180 130 M 180 156 L 0 156" fill="none" stroke="#000" stroke-miterlimit="10" pointer-events="none"/><g fill="#000" font-family="Helvetica" clip-path="url(#mx-clip-40-135-136-26-0)" font-size="12"><text x="41.5" y="147.5">email_confirmed: bool</text></g><path d="M 0 130 M 36 130 L 36 156 M 0 156" fill="none" stroke="#000" stroke-miterlimit="10" pointer-events="none"/><path d="M 0 156 M 180 156 M 180 182 L 0 182" fill="none" stroke="#000" stroke-miterlimit="10" pointer-events="none"/><g fill="#000" font-family="Helvetica" clip-path="url(#mx-clip-40-161-136-26-0)" font-size="12"><text x="41.5" y="173.5">birthDate: date</text></g><path d="M 0 156 M 36 156 L 36 182 M 0 182" fill="none" stroke="#000" stroke-miterlimit="10" pointer-events="none"/></g></svg> \ No newline at end of file diff --git a/content/doc-images/data-platform/data-browser/data-browser-simple-app-data.png b/content/doc-images/data-platform/data-browser/data-browser-simple-app-data.png deleted file mode 100644 index 57ce753d70..0000000000 Binary files a/content/doc-images/data-platform/data-browser/data-browser-simple-app-data.png and /dev/null differ diff --git a/content/doc-images/data-platform/data-browser/data-browser-simple-app-data.snagx b/content/doc-images/data-platform/data-browser/data-browser-simple-app-data.snagx deleted file mode 100644 index b57f8739a7..0000000000 Binary files a/content/doc-images/data-platform/data-browser/data-browser-simple-app-data.snagx and /dev/null differ diff --git a/content/doc-images/data-platform/pdp-signup.png b/content/doc-images/data-platform/pdp-signup.png deleted file mode 100644 index e73fc22afa..0000000000 Binary files a/content/doc-images/data-platform/pdp-signup.png and /dev/null differ diff --git a/content/doc-images/data-platform/pdp-signup.snagx b/content/doc-images/data-platform/pdp-signup.snagx deleted file mode 100644 index 8b3579ec9e..0000000000 Binary files a/content/doc-images/data-platform/pdp-signup.snagx and /dev/null differ diff --git a/content/doc-images/data-platform/platform/accelerate/accelerate-response.png b/content/doc-images/data-platform/platform/accelerate/accelerate-response.png deleted file mode 100644 index d071765db7..0000000000 Binary files a/content/doc-images/data-platform/platform/accelerate/accelerate-response.png and /dev/null differ diff --git a/content/doc-images/data-platform/platform/delete-account.png b/content/doc-images/data-platform/platform/delete-account.png deleted file mode 100644 index bd423abbb7..0000000000 Binary files a/content/doc-images/data-platform/platform/delete-account.png and /dev/null differ diff --git a/content/doc-images/data-platform/platform/github-permission.png b/content/doc-images/data-platform/platform/github-permission.png deleted file mode 100644 index 6965fb9cab..0000000000 Binary files a/content/doc-images/data-platform/platform/github-permission.png and /dev/null differ diff --git a/content/doc-images/data-platform/platform/logout.png b/content/doc-images/data-platform/platform/logout.png deleted file mode 100644 index 1dd0aea3a8..0000000000 Binary files a/content/doc-images/data-platform/platform/logout.png and /dev/null differ diff --git a/content/doc-images/data-platform/platform/profile-button.png b/content/doc-images/data-platform/platform/profile-button.png deleted file mode 100644 index 6df8155c13..0000000000 Binary files a/content/doc-images/data-platform/platform/profile-button.png and /dev/null differ diff --git a/content/doc-images/data-platform/platform/profile-form.png b/content/doc-images/data-platform/platform/profile-form.png deleted file mode 100644 index 555cb1bc83..0000000000 Binary files a/content/doc-images/data-platform/platform/profile-form.png and /dev/null differ diff --git a/content/doc-images/data-platform/platform/projects/api-alternate.png b/content/doc-images/data-platform/platform/projects/api-alternate.png deleted file mode 100644 index 72b4d956b3..0000000000 Binary files a/content/doc-images/data-platform/platform/projects/api-alternate.png and /dev/null differ diff --git a/content/doc-images/data-platform/platform/projects/api-keys.png b/content/doc-images/data-platform/platform/projects/api-keys.png deleted file mode 100644 index cad25e2952..0000000000 Binary files a/content/doc-images/data-platform/platform/projects/api-keys.png and /dev/null differ diff --git a/content/doc-images/data-platform/platform/projects/project-overview.png b/content/doc-images/data-platform/platform/projects/project-overview.png deleted file mode 100644 index 7115c31862..0000000000 Binary files a/content/doc-images/data-platform/platform/projects/project-overview.png and /dev/null differ diff --git a/content/doc-images/data-platform/platform/projects/projects.png b/content/doc-images/data-platform/platform/projects/projects.png deleted file mode 100644 index 768183a375..0000000000 Binary files a/content/doc-images/data-platform/platform/projects/projects.png and /dev/null differ diff --git a/content/doc-images/data-platform/platform/pulse/diagram.png b/content/doc-images/data-platform/platform/pulse/diagram.png deleted file mode 100644 index 23ca0c5834..0000000000 Binary files a/content/doc-images/data-platform/platform/pulse/diagram.png and /dev/null differ diff --git a/content/doc-images/data-platform/projects/create-01-paste-connection-string.png b/content/doc-images/data-platform/projects/create-01-paste-connection-string.png deleted file mode 100644 index d5a9d15b4e..0000000000 Binary files a/content/doc-images/data-platform/projects/create-01-paste-connection-string.png and /dev/null differ diff --git a/content/doc-images/data-platform/projects/create-01-paste-connection-string.snagx b/content/doc-images/data-platform/projects/create-01-paste-connection-string.snagx deleted file mode 100644 index a116158602..0000000000 Binary files a/content/doc-images/data-platform/projects/create-01-paste-connection-string.snagx and /dev/null differ diff --git a/content/doc-images/data-platform/projects/create-03-copy-data-proxy-connection-string.png b/content/doc-images/data-platform/projects/create-03-copy-data-proxy-connection-string.png deleted file mode 100644 index ac304be4f0..0000000000 Binary files a/content/doc-images/data-platform/projects/create-03-copy-data-proxy-connection-string.png and /dev/null differ diff --git a/content/doc-images/data-platform/projects/create-03-copy-data-proxy-connection-string.snagx b/content/doc-images/data-platform/projects/create-03-copy-data-proxy-connection-string.snagx deleted file mode 100644 index f8f2795d28..0000000000 Binary files a/content/doc-images/data-platform/projects/create-03-copy-data-proxy-connection-string.snagx and /dev/null differ diff --git a/content/doc-images/database-setup-illustration.png b/content/doc-images/database-setup-illustration.png deleted file mode 100644 index 446ce655b4..0000000000 Binary files a/content/doc-images/database-setup-illustration.png and /dev/null differ diff --git a/content/doc-images/database-tables.png b/content/doc-images/database-tables.png deleted file mode 100644 index 850ad9a0de..0000000000 Binary files a/content/doc-images/database-tables.png and /dev/null differ diff --git a/content/doc-images/guides/deploy/create-repo.png b/content/doc-images/guides/deploy/create-repo.png deleted file mode 100644 index 8c7c8cfbfd..0000000000 Binary files a/content/doc-images/guides/deploy/create-repo.png and /dev/null differ diff --git a/content/doc-images/guides/deploy/create-repo.snagx b/content/doc-images/guides/deploy/create-repo.snagx deleted file mode 100644 index c51aee6462..0000000000 Binary files a/content/doc-images/guides/deploy/create-repo.snagx and /dev/null differ diff --git a/content/doc-images/mongodb-logo.svg b/content/doc-images/mongodb-logo.svg deleted file mode 100644 index f4828669b6..0000000000 --- a/content/doc-images/mongodb-logo.svg +++ /dev/null @@ -1,9 +0,0 @@ -<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1112.61 300"> - <defs> - <style>.cls-4{fill:#21313c}</style> - </defs> - <path d="M134.44 120.34C119.13 52.8 87.22 34.82 79.08 22.11a144.57 144.57 0 0 1-8.9-17.42c-.43 6-1.22 9.78-6.32 14.33-10.24 9.13-53.73 44.57-57.39 121.31-3.41 71.55 52.6 115.67 60 120.23 5.69 2.8 12.62.06 16-2.51 27-18.53 63.89-67.93 52-137.71" style="fill:#10aa50" /> - <path d="M72.5 222.46c-1.41 17.71-2.42 28-6 38.12 0 0 2.35 16.86 4 34.72h5.84a324.73 324.73 0 0 1 6.37-37.39c-7.56-3.72-9.92-19.91-10.21-35.45Z" style="fill:#b8c4c2" /> - <path d="M82.7 257.92c-7.64-3.53-9.85-20.06-10.19-35.46a725.83 725.83 0 0 0 1.65-76.35c-.4-13.36.19-123.74-3.29-139.9a134.29 134.29 0 0 0 8.21 15.89c8.14 12.72 40.06 30.7 55.36 98.24C146.36 190 109.67 239.27 82.7 257.92Z" style="fill:#12924f" /> - <path class="cls-4" d="M1089.7 233.5a16.59 16.59 0 1 1 16.59-16.82 16.38 16.38 0 0 1-16.59 16.82m0-31.68a15.1 15.1 0 1 0 15 15.14 14.85 14.85 0 0 0-15-15.14m4 25.58-4.28-9.23h-3.45v9.23h-2.51v-21h6.19c4.61 0 6.53 2 6.53 5.87 0 3.08-1.45 5-4.15 5.59l4.42 9.51Zm-7.63-11.4h3.63c2.94 0 4.06-1 4.06-3.68s-1.07-3.59-4.38-3.59h-3.31ZM842.79 218.38c4.49 3.59 13.46 5.07 21.37 5.07 10.25 0 20.3-1.9 30.12-10.77 10-9.09 16.88-23 16.88-45.21 0-21.34-8.12-38.66-24.78-48.8-9.4-5.91-21.58-8.24-35.47-8.24-4 0-8.12.21-10.46 1.27a5.49 5.49 0 0 0-1.93 3c-.42 3.8-.42 32.74-.42 49.85 0 17.54 0 42 .42 45 .22 2.54 1.5 7 4.27 8.87m-42.64-117.49c3.63 0 17.43.63 23.85.63 12 0 20.29-.63 42.72-.63 18.8 0 34.62 5.07 45.93 14.78 13.68 11.84 21 28.31 21 48.38 0 28.52-13 45-26.07 54.29-13 9.72-29.91 15.21-54 15.21-12.82 0-34.83-.42-53.2-.63H800c-.86-1.69 1.57-8.28 3.07-8.45 5-.56 6.32-.76 8.62-1.71 3.88-1.59 4.79-3.57 5.22-10.54.64-13.1.43-28.73.43-46.48 0-12.67.21-37.39-.21-45.21-.65-6.54-3.41-8.23-9-9.5a116.24 116.24 0 0 0-12-1.9c-.42-1.27 2.86-7 3.93-8.24M986.6 111.65c-.85.21-1.92 2.33-1.92 3.38-.22 7.61-.43 27.46-.43 41.19a1.36 1.36 0 0 0 1.07 1.06c2.77.21 9.61.43 15.38.43 8.12 0 12.82-1.06 15.38-2.33 6.84-3.38 10-10.78 10-18.8 0-18.38-12.82-25.35-31.83-25.35a57.35 57.35 0 0 0-7.69.42m48.5 84.5c0-18.59-13.68-29.15-38.68-29.15-1.06 0-9-.21-10.89.21-.64.21-1.28.63-1.28 1.06 0 13.31-.22 34.64.43 43.09.43 3.59 3 8.66 6.19 10.14 3.42 1.9 11.11 2.32 16.45 2.32 14.74 0 27.78-8.23 27.78-27.67M948 101.3c1.93 0 7.61.63 22.14.63 13.67 0 24.78-.42 38-.42 16.45 0 39.09 5.92 39.09 30.42 0 12-8.54 21.76-19.65 26.41-.64.21-.64.63 0 .84 15.81 4 29.69 13.73 29.69 32.32 0 18.17-11.32 29.58-27.77 36.76-10 4.44-22.43 5.91-35 5.91-9.61 0-35.37-1-49.69-.84-1.5-.63 1.37-7.4 2.65-8.45a39.38 39.38 0 0 0 9.69-1.52c5.12-1.26 5.73-2.91 6.37-10.52.43-6.55.43-30 .43-46.69 0-22.82.22-38.23 0-45.84-.21-5.91-2.35-7.82-6.41-8.87-3.2-.64-8.54-1.27-12.81-1.9-1.07-1.06 2.22-7.4 3.28-8.24M181.75 233.5a9.26 9.26 0 0 1-.65-4.27 5.43 5.43 0 0 1 .65-2.85 72.58 72.58 0 0 0 8.2-1.67c3.78-.94 5.2-3 5.42-7.82.62-11.39.66-32.76.44-47.78v-.44c0-1.62 0-3.82-2-5.37a42.94 42.94 0 0 0-11.33-5c-1.79-.53-2.78-1.47-2.73-2.57s1.18-2.4 3.51-2.86c6.19-.63 22.41-4.5 28.78-7.44a4.22 4.22 0 0 1 .85 3c0 .66-.1 1.36-.17 2.08-.18 2.12-.38 4.53-.38 6.93a1.58 1.58 0 0 0 2.68.91c12.13-9.51 23-12.9 28.57-12.9 9.17 0 16.31 4.38 21.84 13.4a1.47 1.47 0 0 0 1.24.73 1.42 1.42 0 0 0 1.16-.62c11.15-8.46 22.2-13.51 29.6-13.51 17.48 0 27.93 13.09 27.93 35 0 6.3-.06 14.29-.12 21.74-.05 6.54-.1 12.67-.1 16.91 0 1 1.38 3.88 3.45 4.45 2.56 1.25 6.25 1.89 10.92 2.69h.18c.35 1.26-.39 6.15-1.1 7.15-1.16 0-2.76-.1-4.76-.2-3.63-.18-8.61-.43-14.4-.43-11.62 0-17.69.22-23.49.6-.44-1.45-.59-6.13-.06-7.11a61.55 61.55 0 0 0 7.12-1.55c3.7-1.22 4.77-2.9 5-7.81.09-3.49.76-34.24-.43-41.54-1.1-7.57-6.8-16.43-19.27-16.43-4.63 0-12.1 1.93-19.22 7.33a2.8 2.8 0 0 0-.7 1.81v.15c.84 3.94.84 8.54.84 15.49 0 4 0 8.17-.05 12.34-.05 8.48-.09 16.48.05 22.53 0 4.12 2.49 5.11 4.5 5.9 1.09.24 1.95.45 2.82.65 1.67.41 3.41.83 6 1.24a11.49 11.49 0 0 1-.1 5.32 4.26 4.26 0 0 1-.75 1.81c-6.46-.22-13.09-.41-22.66-.41-2.9 0-7.63.12-11.81.23-3.39.09-6.59.18-8.41.19a8.24 8.24 0 0 1-.64-3.68 6.38 6.38 0 0 1 .67-3.44l2.57-.47c2.24-.4 4.18-.74 6-1.2 3.16-1 4.35-2.72 4.58-6.75.62-9.4 1.1-36.49-.23-43.27-2.26-10.88-8.45-16.4-18.41-16.4-5.83 0-13.2 2.81-19.22 7.32a5.86 5.86 0 0 0-1.77 4.35v11.19c0 13.6-.09 30.53.24 37.85.2 2.26 1 4.94 5.23 5.92.93.27 2.53.53 4.39.84 1.07.18 2.24.37 3.45.59a15.16 15.16 0 0 1-.57 7.15c-1.86 0-4.15-.12-6.77-.23-4-.18-9-.4-14.65-.4-6.68 0-11.33.22-15.06.4-2.51.12-4.68.22-6.85.23M396.2 154.49a18.22 18.22 0 0 0-10.2 2.87c-7.42 4.51-11.2 13.52-11.2 26.76 0 24.78 12.41 42.09 30.18 42.09A19 19 0 0 0 418 221.6c5.46-4.45 8.36-13.55 8.36-26.29 0-24.41-12.13-40.82-30.18-40.82m3.42 80.91c-32.1 0-43.53-23.55-43.53-45.58 0-15.39 6.29-27.42 18.7-35.77a57.11 57.11 0 0 1 28.89-8.54c24.49 0 41.6 17.61 41.6 42.84 0 17.14-6.83 30.68-19.76 39.14-6.21 3.8-17 7.91-25.9 7.91M723 154.49a18.17 18.17 0 0 0-10.22 2.87c-7.42 4.51-11.2 13.52-11.2 26.76 0 24.78 12.41 42.09 30.18 42.09a19 19 0 0 0 13.06-4.61c5.46-4.45 8.35-13.55 8.35-26.29 0-24.41-12.12-40.82-30.17-40.82m3.42 80.91c-32.1 0-43.53-23.55-43.53-45.57 0-15.41 6.29-27.43 18.71-35.78a57 57 0 0 1 28.88-8.54c24.49 0 41.6 17.62 41.6 42.83 0 17.16-6.83 30.69-19.76 39.14-6.21 3.81-17 7.92-25.9 7.92M614.92 153.65c-9.89 0-16.29 7.81-16.29 19.9s5.51 26.46 21 26.46c2.66 0 7.48-1.18 9.87-3.81 3.6-3.31 6-10.15 6-17.37 0-15.77-7.68-25.18-20.53-25.18m-1.28 83.44a16.29 16.29 0 0 0-8 2c-7.83 5-11.46 10-11.46 15.81 0 5.44 2.11 9.77 6.65 13.61 5.5 4.66 12.92 6.93 22.67 6.93 19.19 0 27.79-10.32 27.79-20.54 0-7.12-3.57-11.89-10.92-14.59-5.66-2.07-15.12-3.21-26.7-3.21m1.28 49c-11.52 0-19.82-2.43-26.91-7.89-6.9-5.32-10-13.22-10-18.68a14.61 14.61 0 0 1 3.78-9.5c2-2.28 6.65-6.55 17.4-13.94a.92.92 0 0 0 .56-.85.89.89 0 0 0-.68-.88c-8.85-3.39-11.52-9-12.33-12 0-.11 0-.28-.09-.47-.25-1.18-.49-2.3 1.12-3.45 1.24-.88 3.22-2.06 5.34-3.31a71.89 71.89 0 0 0 8.59-5.59 1.41 1.41 0 0 0-.36-2.2c-13.1-4.4-19.7-14.13-19.7-29a28.83 28.83 0 0 1 12.1-23.73c5.27-4.17 18.5-9.18 27.07-9.18h.5c8.81.21 13.78 2.06 20.66 4.6a32.84 32.84 0 0 0 12.22 1.94c7.29 0 10.48-2.31 13.22-5a11.47 11.47 0 0 1 .7 3.78 14.22 14.22 0 0 1-2.38 8.68c-1.49 2.07-5 3.57-8.21 3.57-.33 0-.65 0-1-.05a26.94 26.94 0 0 1-5-.83l-.82.29c-.26.38-.09.8.12 1.34a1.7 1.7 0 0 1 .12.33 58.52 58.52 0 0 1 1.19 8.1c0 15.55-6.13 22.32-12.76 27.34a43.56 43.56 0 0 1-22 8.52c-.17 0-1 .07-2.56.21-1 .09-2.3.21-2.49.21h-.19c-1.44.4-5.2 2.19-5.2 5.52 0 2.76 1.7 6.19 9.83 6.81l5.26.37c10.72.75 24.11 1.68 30.41 3.81a21.06 21.06 0 0 1 14.07 20.27c0 13.95-9.92 27.07-26.53 35.09a57.66 57.66 0 0 1-25.09 5.63M565.86 226.06c-4.7-.63-8.13-1.27-12.18-3.17a5.6 5.6 0 0 1-1.5-3c-.43-6.55-.43-25.56-.43-38 0-10.15-1.7-19-6-25.35-5.13-7.19-12.39-11.41-21.79-11.41-8.33 0-19.44 5.7-28.62 13.52-.22.21-1.63 1.55-1.6-.53s.35-6.3.55-9a4.63 4.63 0 0 0-1.4-3.92c-6 3-22.83 7-29.06 7.61-4.54.88-5.69 5.25-.84 6.76h.07a41.46 41.46 0 0 1 11 4.84c1.92 1.48 1.71 3.59 1.71 5.28.21 14.15.21 35.91-.43 47.74-.21 4.65-1.5 6.34-4.92 7.19l.32-.11a66.46 66.46 0 0 1-7.91 1.48c-1.07 1.05-1.07 7.18 0 8.45 2.14 0 13-.63 22-.63 12.38 0 18.79.63 22 .63 1.29-1.48 1.71-7.18.86-8.45a45 45 0 0 1-8.77-1.27c-3.41-.84-4.27-2.54-4.48-6.33-.42-9.94-.42-31.06-.42-45.43 0-4 1.06-5.91 2.34-7 4.27-3.8 11.33-6.33 17.52-6.33 6 0 10 1.9 13 4.43A18.1 18.1 0 0 1 533 176c.85 8 .63 24.09.63 38 0 7.61-.63 9.52-3.41 10.36-1.28.63-4.7 1.27-8.76 1.69-1.28 1.27-.86 7.18 0 8.45 5.55 0 12-.63 21.36-.63 11.75 0 19.23.63 22.22.63 1.28-1.48 1.71-7 .86-8.45" /> -</svg> \ No newline at end of file diff --git a/content/doc-images/new-query.png b/content/doc-images/new-query.png deleted file mode 100644 index a8d949f8ee..0000000000 Binary files a/content/doc-images/new-query.png and /dev/null differ diff --git a/content/doc-images/prisma-introspection-development-workflow.png b/content/doc-images/prisma-introspection-development-workflow.png deleted file mode 100644 index c852ab8f90..0000000000 Binary files a/content/doc-images/prisma-introspection-development-workflow.png and /dev/null differ diff --git a/docusaurus.config.ts b/docusaurus.config.ts new file mode 100644 index 0000000000..fce2b598a5 --- /dev/null +++ b/docusaurus.config.ts @@ -0,0 +1,483 @@ +import { themes as prismThemes } from 'prism-react-renderer'; +import type { Config } from '@docusaurus/types'; +import type * as Preset from '@docusaurus/preset-classic'; + +const DOCUSAURUS_BASE_URL = process.env.DOCUSAURUS_BASE_URL ?? '/'; + +const config: Config = { + title: 'Prisma Documentation', + tagline: 'Get started with Prisma in the official documentation, and learn more about all Prisma\'s features with reference documentation, guides, and more.', + favicon: 'img/favicon.png', + + // Set the production url of your site here + url: 'https://www.prisma.io', + // Set the /<baseUrl>/ pathname under which your site is served + // For GitHub pages deployment, it is often '/<projectName>/' + baseUrl: DOCUSAURUS_BASE_URL ?? '/', + + trailingSlash: false, + onBrokenLinks: 'throw', + onBrokenAnchors: 'throw', + onBrokenMarkdownLinks: 'throw', + + // Even if you don't use internationalization, you can use this field to set + // useful metadata like html lang. For example, if your site is Chinese, you + // may want to replace "en" with "zh-Hans". + i18n: { + defaultLocale: 'en', + locales: ['en'], + }, + customFields: { + 'BREVO_API_KEY': process.env.BREVO_API_KEY + }, + scripts: [ + // kapa.ai script + { + src: 'https://widget.kapa.ai/kapa-widget.bundle.js', + defer: true, + 'data-website-id': '1b51bb03-43cc-4ef4-95f1-93288a91b560', + 'data-project-name': 'Prisma', + 'data-project-color': '#2D3748', + 'data-project-logo': 'https://www.prisma.io/docs/ai_logo.png', + 'data-button-text': 'Ask AI', + 'data-modal-example-questions': + "How can I setup relations in my schema file?,What is the difference between the 'migrate dev' and 'db push' commands?,Which cache strategy should I use for my query with Prisma Accelerate?,How can I subscribe to database events with Prisma Pulse?", + 'data-button-image': 'https://www.prisma.io/docs/ai_button.svg', + 'data-button-text-color': '#71E8DF', + 'data-button-bg-color': '#2D3748', + 'data-button-border': '2px', + 'data-button-border-color': '#71e8df', + 'data-button-border-style': 'solid', + 'data-button-box-shadow': + 'drop-shadow(0px 0.724px 1.251px rgba(14, 18, 28, 0.02)) drop-shadow(0px 1.608px 2.909px rgba(14, 18, 28, 0.04)) drop-shadow(0px 2.793px 5.225px rgba(14, 18, 28, 0.06)) drop-shadow(0px 4.55px 8.671px rgba(14, 18, 28, 0.07)) drop-shadow(0px 7.485px 14.285px rgba(14, 18, 28, 0.08)) drop-shadow(0px 13.358px 24.966px rgba(14, 18, 28, 0.09)) drop-shadow(0px 33px 54px rgba(14, 18, 28, 0.07))', + }, + // OneTrust Cookies Consent Notice start for prisma.io + { + src: 'https://cdn.cookielaw.org/scripttemplates/otSDKStub.js', + 'data-document-language': 'true', + 'data-domain-script': '22c2e2c0-3df0-4958-8672-1194370ee230', + }, + ], + plugins: ['docusaurus-plugin-sass'], + presets: [ + [ + 'classic', + { + gtag: { + trackingID: 'G-YS7QHR40SL', + anonymizeIP: true, + }, + googleTagManager: { + containerId: 'GTM-KCGZPWB', + }, + sitemap: { + // @ts-ignore + changefreq: 'daily', + priority: 0.7, + ignorePatterns: [ + '/search', + // Remove these from sitemap for SEO purposes as they're redirected + '/getting-started/quickstart', + '/getting-started/setup-prisma/add-to-existing-project', + '/getting-started/setup-prisma/start-from-scratch-prisma-migrate', + '/getting-started/setup-prisma/start-from-scratch-sql', + ], + filename: 'sitemap.xml', + }, + docs: { + routeBasePath: '/', + path: 'content', + sidebarPath: './sidebars.ts', + // Remove this to remove the "edit this page" links. + editUrl: + 'https://github.com/prisma/docs', + }, + blog: false, + theme: { + customCss: [ + './src/css/custom.css', + './src/css/admonition.css', + './src/css/docsearch.css', + './src/css/all.css', + './src/css/theming.css', + './src/css/prism.css' + ], + }, + } satisfies Preset.Options + ], + ], + themeConfig: { + image: '/docs/social/docs-social.png', + navbar: { + logo: { + srcDark: 'img/logo-white.svg', + alt: 'Prisma logo', + src: 'img/logo.svg', + href: "https://www.prisma.io/", + target: "_self" + }, + items: [ + { + to: DOCUSAURUS_BASE_URL, + position: 'left', + label: '/docs', + className: 'logo-link', + }, + { + type: 'docSidebar', + sidebarId: 'gettingStarted', + position: 'left', + label: 'Get Started', + className: 'indigo first-item', + }, + { + type: 'docSidebar', + sidebarId: 'ormSidebar', + position: 'left', + className: 'indigo', + label: 'ORM', + }, + { + type: 'docSidebar', + sidebarId: 'accelerateSidebar', + position: 'left', + className: 'teal', + label: 'Accelerate', + }, + { + type: 'docSidebar', + sidebarId: 'pulseSidebar', + position: 'left', + className: 'teal', + label: 'Pulse', + }, + { + href: 'https://github.com/prisma/', + position: 'right', + className: 'header-github-link', + 'aria-label': 'GitHub repository', + }, + { + href: 'https://console.prisma.io/login?utm_source=docs&utm_medium=login', + position: 'right', + label: "Login", + className: 'navbar-login-btn internal teal-btn', + }, + ], + }, + algolia: { + appId: 'MF58UJZ648', + apiKey: 'fd3d0a05bfe5d280348060ca5ea416be', + indexName: 'prisma', + contextualSearch: false, + replaceSearchResultPathname: { + from: '/docs/', + to: DOCUSAURUS_BASE_URL + } + }, + footer: { + style: 'dark', + links: [ + { + title: 'Product', + items: [ + { + label: 'ORM', + href: 'https://www.prisma.io/orm', + target: "_self", + customProps: { + internal: true + } + }, + { + label: 'Accelerate', + href: 'https://www.prisma.io/accelerate', + target: "_self", + customProps: { + internal: true + } + }, + { + label: 'Pulse', + href: 'https://www.prisma.io/pulse', + target: "_self", + customProps: { + internal: true + } + }, + { + label: 'Pricing', + href: 'https://www.prisma.io/pricing', + target: "_self", + customProps: { + internal: true + } + }, + { + label: 'Changelog', + href: 'https://www.prisma.io/changelog', + target: "_self", + customProps: { + internal: true + } + }, + ], + }, + { + title: 'Resources', + items: [ + { + label: 'Docs', + to: '/', + }, + { + label: 'Get started', + to: '/getting-started', + }, + { + label: 'prisma-examples', + href: 'https://github.com/prisma/prisma-examples', + }, + { + label: 'Prisma in your stack', + href: 'https://www.prisma.io/stack', + target: "_self", + customProps: { + internal: true + } + }, + { + label: 'Ecosystem', + href: 'https://www.prisma.io/ecosystem', + target: "_self", + customProps: { + internal: true + } + }, + { + label: 'Tutorials', + href: 'https://www.prisma.io/learn', + target: "_self", + customProps: { + internal: true + } + }, + { + label: 'Playground', + href: 'https://playground.prisma.io/', + }, + { + label: 'Customer stories', + href: 'https://www.prisma.io/showcase', + target: "_self", + customProps: { + internal: true + } + }, + { + label: 'Data guide', + href: 'https://www.prisma.io/dataguide', + target: "_self", + customProps: { + internal: true + } + }, + { + label: 'Data Platform status', + href: 'https://www.prisma-status.com/', + }, + { + label: 'VS Code extension', + href: 'https://marketplace.visualstudio.com/items?itemName=Prisma.prisma', + }, + ], + }, + { + title: 'Contact us', + items: [ + { + label: 'Community', + href: 'https://www.prisma.io/community', + target: "_self", + customProps: { + internal: true + } + }, + { + label: 'Support', + href: 'https://www.prisma.io/support', + target: "_self", + customProps: { + internal: true + } + }, + { + label: 'Enterprise', + href: 'https://www.prisma.io/enterprise', + target: "_self", + customProps: { + internal: true + } + }, + { + label: 'Partners', + href: 'https://www.prisma.io/partners', + target: "_self", + customProps: { + internal: true + } + }, + ], + }, + { + title: 'Company', + items: [ + { + label: 'About', + href: 'https://www.prisma.io/about', + target: "_self", + customProps: { + internal: true + } + }, + { + label: 'Blog', + to: 'https://www.prisma.io/blog', + target: "_self", + customProps: { + internal: true + } + }, + { + label: 'Data DX', + href: 'https://www.datadx.io/', + }, + { + label: 'Careers', + to: 'https://www.prisma.io/careers', + target: "_self", + customProps: { + internal: true + } + }, + { + label: 'Events', + to: 'https://www.prisma.io/events', + target: "_self", + customProps: { + internal: true + } + }, + { + label: 'Causes', + href: 'https://prismaio.notion.site/Prisma-Causes-0c9e1ddc0f5942edaba355692cfee69f', + }, + { + label: 'OSS Friends', + to: 'https://www.prisma.io/oss-friends', + target: "_self", + customProps: { + internal: true + } + }, + { + label: 'Terms & Privacy', + href: 'https://prismaio.notion.site/Terms-Privacy-5b5b9938b3a941ccb2ad97eaf5524c07', + }, + { + label: 'Service Level Agreement', + href: 'https://pris.ly/sla', + }, + ], + }, + { + items: [ + { + label: ' ', + href: "https://discord.gg/KQyTW2H5ca", + customProps: { + icon: "fa-brands fa-discord", + internal: true, + } + }, + { + label: ' ', + href: "https://x.com/prisma", + customProps: { + icon: "fa-brands fa-x-twitter", + internal: true, + } + }, + { + label: ' ', + href: "https://www.youtube.com/prismadata", + customProps: { + icon: "fa-brands fa-youtube", + internal: true, + } + }, + { + label: ' ', + href: "https://pris.ly/whatsapp", + customProps: { + icon: "fa-brands fa-whatsapp", + internal: true, + } + }, + { + label: ' ', + href: "https://github.com/prisma", + customProps: { + icon: "fa-brands fa-github", + internal: true, + } + }, + ] + } + ], + logo: { + srcDark: 'img/logo-white.svg', + alt: 'Prisma logo', + src: 'img/logo-white.svg', + href: "https://www.prisma.io/", + target: "_self", + }, + copyright: `© ${new Date().getFullYear()} Prisma Data, Inc.`, + }, + docs: { + sidebar: { + autoCollapseCategories: true + }, + }, + prism: { + theme: prismThemes.github, + darkTheme: prismThemes.dracula, + additionalLanguages: ['json', 'bash'], + magicComments: [ + // Remember to extend the default highlight class name as well! + { + className: 'theme-code-block-added-line added-line code-highlight', + line: 'add-next-line', + block: { start: 'add-start', end: 'add-end' }, + }, + { + className: 'theme-code-block-deleted-line deleted-line code-highlight', + line: 'delete-next-line', + block: { start: 'delete-start', end: 'delete-end' }, + }, + { + className: 'theme-code-block-edited-line edited-line code-highlight', + line: 'edit-next-line', + block: { start: 'edit-start', end: 'edit-end' }, + }, + { + className: 'theme-code-block-highlighted-line highlighted-line', + line: 'highlight-next-line', + block: { start: 'highlight-start', end: 'highlight-end' }, + } + ] + }, + } satisfies Preset.ThemeConfig, +}; + +export default config; diff --git a/gatsby-browser.tsx b/gatsby-browser.tsx deleted file mode 100644 index b765c1b9dd..0000000000 --- a/gatsby-browser.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import { goToNav } from './src/utils/goToNavItem' -import { trackPage, init } from './src/utils/stats' -import docsConfig from './config' - -export const onClientEntry = () => { - init() -} - -export const onRouteUpdate = ({ location }) => { - trackPage(location.pathname) - goToNav(location.pathname) // This may not work anymore due to the new scroll behavior of the sidebar - const isRedirectablePath = docsConfig.redirects.filter((redirect) => { - const redirectFromSplit = redirect.from.split('#') - if (redirectFromSplit.length > 1) { - const isHashPath = - location.href.includes(redirectFromSplit[0]) && location.hash === `#${redirectFromSplit[1]}` - return isHashPath - } - return location.href.includes(redirect.from) - }) - if (isRedirectablePath[0]) { - const fromPathWithoutHash = isRedirectablePath[0].from.split('#') - const toPathWithoutHash = isRedirectablePath[0].to.split('#') - if (fromPathWithoutHash[0] === toPathWithoutHash[0]) { - window.location.hash = toPathWithoutHash[1] - } else { - const newpath = location.href.replace(isRedirectablePath[0].from, isRedirectablePath[0].to) - window.location.replace(newpath) - } - } -} diff --git a/gatsby-config.ts b/gatsby-config.ts deleted file mode 100644 index 6db8ab9a12..0000000000 --- a/gatsby-config.ts +++ /dev/null @@ -1,186 +0,0 @@ -import type { GatsbyConfig } from 'gatsby' -import docsConfig from './config' -require('dotenv').config({ - path: `.env`, -}) - -let plugins: any = [ - 'gatsby-plugin-image', - 'gatsby-plugin-sharp', - 'gatsby-transformer-sharp', - 'gatsby-plugin-styled-components', - 'gatsby-plugin-smoothscroll', - 'gatsby-plugin-catch-links', - { - resolve: `gatsby-plugin-mdx`, - options: { - extensions: ['.mdx', '.md'], - gatsbyRemarkPlugins: [ - 'gatsby-remark-sectionize', - 'gatsby-remark-normalize-paths', - { - resolve: `gatsby-remark-autolink-headers`, - options: { - icon: `<svg width="17" height="18" viewBox="0 0 17 18" fill="none" xmlns="http://www.w3.org/2000/svg"> - <path d="M1.5 6.33337H15.5" stroke="#CBD5E0" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"/> - <path d="M1.5 11.6666H15.5" stroke="#CBD5E0" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"/> - <path d="M6.75 1L5 17" stroke="#CBD5E0" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"/> - <path d="M12 1L10.25 17" stroke="#CBD5E0" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"/> - </svg>`, - className: `title-link`, - enableCustomId: true, - }, - }, - { - resolve: `gatsby-remark-image-custom`, - options: { - disableBgImageOnAlpha: true, - quality: 100, - }, - }, - { - resolve: 'gatsby-remark-to-absoluteurl', - options: { - redirects: docsConfig.redirects, - }, - }, - { - resolve: 'gatsby-remark-check-links-numberless', - options: { - // Do not surface links to these pages as broken: - exceptions: [ - '/orm/more/upgrade-guides/upgrade-from-prisma-1/schema-incompatibilities-postgresql', - '/orm/more/upgrade-guides/upgrade-from-prisma-1/upgrading-the-prisma-layer-postgresql', - '/getting-started/setup-prisma/add-to-existing-project/relational-databases-typescript-postgresql', - '/getting-started/setup-prisma/start-from-scratch/relational-databases-typescript-postgresql', - '/getting-started/setup-prisma/add-to-existing-project/relational-databases-typescript-planetscale', - '/getting-started/setup-prisma/start-from-scratch/relational-databases-typescript-planetscale', - '/getting-started/setup-prisma/add-to-existing-project/relational-databases/introspection-typescript-planetscale', - '/getting-started/setup-prisma/start-from-scratch/relational-databases/connect-your-database-typescript-planetscale', - '/getting-started/setup-prisma/add-to-existing-project/mongodb-typescript-mongodb', - '/getting-started/setup-prisma/start-from-scratch/mongodb-typescript-mongodb', - '/getting-started/setup-prisma/add-to-existing-project/relational-databases-typescript-cockroachdb', - '/getting-started/setup-prisma/start-from-scratch/relational-databases-typescript-cockroachdb', - '/getting-started/setup-prisma/add-to-existing-project/relational-databases/baseline-your-database-typescript-cockroachdb', - ], - }, - }, - { - resolve: 'gatsby-remark-copy-linked-files', - options: { - destinationDir: 'static', - }, - }, - ], - }, - }, - { - resolve: 'gatsby-plugin-google-tagmanager', - options: { - id: 'GTM-KCGZPWB', - includeInDevelopment: false, - defaultDataLayer: { website: 'docs' }, - }, - }, - { - resolve: `gatsby-plugin-sitemap`, - options: { - entryLimit: 5000, - excludes: [ - // Remove these from sitemap for SEO purposes as they're redirected - `/getting-started/quickstart`, - `/getting-started/setup-prisma/add-to-existing-project`, - `/getting-started/setup-prisma/start-from-scratch-prisma-migrate`, - `/getting-started/setup-prisma/start-from-scratch-sql`, - ], - resolvePagePath: (page: any) => { - return page.path.replace(/\/$/, '') - }, - }, - }, - { - resolve: 'gatsby-plugin-robots-txt', - options: { - policy: [ - { - userAgent: '*', - disallow: ['/', '/*?query=*', '/*?page=*', '/*&query=*', '/*&page=*'], - }, - ], - }, - }, - { - resolve: 'gatsby-source-filesystem', - options: { - name: 'images', - path: `${__dirname}/src/images/`, - }, - __key: 'images', - }, - { - resolve: 'gatsby-source-filesystem', - options: { - name: `docs`, - path: `${__dirname}/content`, - }, - __key: 'pages', - }, - 'gatsby-plugin-meta-redirect', - 'gatsby-plugin-page-list', - 'gatsby-plugin-lost-pixel', -] - -if (process.env.INDEX_ALGOLIA === 'true') { - if (process.env.GATSBY_ALGOLIA_APP_ID) { - // only set this up when we actually need it - const algoliaPlugin = { - resolve: 'gatsby-algolia-indexer', - options: { - appId: process.env.GATSBY_ALGOLIA_APP_ID, - adminKey: process.env.GATSBY_ALGOLIA_ADMIN_API_KEY, - searchKey: process.env.GATSBY_ALGOLIA_SEARCH_KEY, - indexName: process.env.GATSBY_ALGOLIA_INDEX_NAME, - types: [`Mdx`], - }, - __key: 'search', - } - - plugins.push(algoliaPlugin) - - console.log( - 'INDEX_ALGOLIA is `true`, and GATSBY_ALGOLIA_APP_ID is set, so pushing algoliaPlugin to list of plugins to trigger search indexing.' - ) - } else { - console.warn('INDEX_ALGOLIA === true, but GATSBY_ALGOLIA_APP_ID is undefined.') - } -} else { - console.log('INDEX_ALGOLIA not `true`, not pushing algoliaPlugin to skip any search indexing.') -} - -const config: GatsbyConfig = { - pathPrefix: process.env.ADD_PREFIX === 'true' ? docsConfig.gatsby.pathPrefix : '/', - // trailingSlash: 'never', - siteMetadata: { - pathPrefix: docsConfig.gatsby.pathPrefix, - title: docsConfig.siteMetadata.title, - titlePrefix: docsConfig.gatsby.titlePrefix, - titleSuffix: docsConfig.gatsby.titleSuffix, - description: docsConfig.siteMetadata.description, - keywords: docsConfig.siteMetadata.keywords, - twitter: docsConfig.siteMetadata.twitter, - og: docsConfig.siteMetadata.og, - header: docsConfig.header, - siteUrl: docsConfig.gatsby.siteUrl, - footer: docsConfig.footer, - docsLocation: docsConfig.siteMetadata.docsLocation, - redirects: docsConfig.redirects, - homepage: docsConfig.homepage, - }, - // More easily incorporate content into your pages through automatic TypeScript type generation and better GraphQL IntelliSense. - // If you use VSCode you can also use the GraphQL plugin - // Learn more at: https://gatsby.dev/graphql-typegen - graphqlTypegen: true, - plugins, -} - -export default config diff --git a/gatsby-node.ts b/gatsby-node.ts deleted file mode 100644 index ec81aeb796..0000000000 --- a/gatsby-node.ts +++ /dev/null @@ -1,228 +0,0 @@ -const path = require('path') -// const docTemplate = path.resolve(`./src/templates/docs.tsx`); - -exports.onCreateNode = ({ node, getNode, actions }: any) => { - const { createNodeField } = actions - if (node.internal.type === `Mdx`) { - const parent = getNode(node.parent) - let value = parent.relativePath.replace(parent.ext, '') - if (value === 'index') { - value = '' - } - - createNodeField({ - node, - name: `slug`, - value: `/${value}`, - }) - createNodeField({ - node, - name: 'id', - value: node.id, - }) - createNodeField({ - node, - name: 'modSlug', - value: `/${value.replace('/index', '')}`, - }) - } -} - -const getTitle = (frontmatter: any, lang?: any, db?: any) => { - let pageSeoTitle = frontmatter.metaTitle || frontmatter.title - if (lang || db) { - const queryParam = `${lang ? `${lang}${db ? '-' : ''}` : ''}${db ? `${db}` : ''}` - const titleEntry = frontmatter.techMetaTitles - ? frontmatter.techMetaTitles.find((item: any) => item.name === queryParam) - : null - pageSeoTitle = titleEntry ? titleEntry.value : `${pageSeoTitle} : ${queryParam}` - } - return pageSeoTitle -} - -const getDesc = (frontmatter: any, lang?: any, db?: any) => { - let pageSeoDesc = frontmatter.metaDescription || frontmatter.title - if (lang || db) { - const queryParam = `${lang ? `${lang}${db ? '-' : ''}` : ''}${db ? `${db}` : ''}` - const descEntry = frontmatter.techMetaDescriptions - ? frontmatter.techMetaDescriptions.find((item: any) => item.name === queryParam) - : null - pageSeoDesc = descEntry ? descEntry.value : pageSeoDesc - } - - return pageSeoDesc -} - -exports.createPages = async ({ graphql, actions, reporter }: any) => { - const { createPage, createRedirect } = actions - - const result = await graphql(` - query { - allMdx { - nodes { - id - fields { - slug - id - modSlug - } - frontmatter { - title - metaTitle - metaDescription - langSwitcher - dbSwitcher - techMetaTitles { - name - value - } - techMetaDescriptions { - name - value - } - } - internal { - contentFilePath - } - } - } - site { - siteMetadata { - redirects { - from - to - } - } - } - } - `) - - if (result.errors) { - reporter.panicOnBuild('Error loading MDX result', result.errors) - } - - // Create blog post pages. - const posts = result.data.allMdx.nodes - const redirects = result.data.site.siteMetadata.redirects - - // you'll call `createPage` for each result - posts.forEach((node: any) => { - // createPage({ - // // As mentioned above you could also query something else like frontmatter.title above and use a helper function - // // like slugify to create a slug - // path: node.fields.modSlug - // ? node.fields.modSlug.replace(/\d{2,}-/g, "") - // : "/", - // // Provide the path to the MDX content file so webpack can pick it up and transform it into JSX - // component: `${docTemplate}?__contentFilePath=${node.internal.contentFilePath}`, - // // You can use the values in this context in - // // our page layout component - // context: { - // id: node.id, - // seoTitle: getTitle(node.frontmatter), - // seoDescription: getDesc(node.frontmatter), - // }, - // }); - const { langSwitcher, dbSwitcher } = node.frontmatter - if (langSwitcher && dbSwitcher) { - langSwitcher.forEach((lang: any) => - dbSwitcher.forEach((db: any) => { - createPage({ - path: `${node.fields.modSlug.replace(/\d{2,}-/g, '')}-${lang}-${db}`, - component: path.resolve('./src/templates/docs.tsx'), - context: { - id: node.fields.id, - seoTitle: getTitle(node.frontmatter, lang, db), - seoDescription: getDesc(node.frontmatter, lang, db), - }, - }) - }) - ) - } else if (langSwitcher && !dbSwitcher) { - langSwitcher.forEach((lang: any) => - createPage({ - path: `${node.fields.modSlug.replace(/\d{2,}-/g, '')}-${lang}`, - component: path.resolve('./src/templates/docs.tsx'), - context: { - id: node.fields.id, - seoTitle: getTitle(node.frontmatter, lang, null), - seoDescription: getDesc(node.frontmatter, lang, null), - }, - }) - ) - } else if (!langSwitcher && dbSwitcher) { - node.frontmatter.dbSwitcher.forEach((db: any) => - createPage({ - path: `${node.fields.modSlug.replace(/\d{2,}-/g, '')}-${db}`, - component: path.resolve('./src/templates/docs.tsx'), - context: { - id: node.fields.id, - seoTitle: getTitle(node.frontmatter, null, db), - seoDescription: getDesc(node.frontmatter, null, db), - }, - }) - ) - } else if (!langSwitcher && !dbSwitcher) { - createPage({ - path: node.fields.modSlug ? node.fields.modSlug.replace(/\d{2,}-/g, '') : '/', - component: path.resolve('./src/templates/docs.tsx'), - context: { - id: node.fields.id, - seoTitle: getTitle(node.frontmatter), - seoDescription: getDesc(node.frontmatter), - }, - }) - } - }) - - redirects - .filter((redirect: any) => !redirect.from.includes('#')) - .map((redirect: any) => - createRedirect({ - fromPath: redirect.from, - toPath: redirect.to, - statusCode: 301, - }) - ) -} - -exports.createSchemaCustomization = ({ actions }: any) => { - const { createTypes } = actions - const typeDefs = ` - type MarkdownRemark implements Node { - frontmatter: Frontmatter - } - type Frontmatter { - title: String! - navTitle: String - metaTitle: String - metaDescription: String - langSwitcher: [String!] - dbSwitcher: [String!] - staticLink: Boolean - duration: String - preview: Boolean - deprecated: Boolean - earlyaccess: Boolean - highlight: Boolean - toc: Boolean - hidePage: Boolean - tocDepth: Int - codeStyle: Boolean - } - ` - createTypes(typeDefs) -} - -exports.onCreateWebpackConfig = ({ stage, actions }: any) => { - actions.setWebpackConfig({ - devtool: false, - resolve: { - modules: [path.resolve(__dirname, 'src'), 'node_modules'], - alias: { - $components: path.resolve(__dirname, 'src/components'), - buble: '@philpl/buble', // to reduce bundle size - }, - }, - }) -} diff --git a/gatsby-ssr.js b/gatsby-ssr.js deleted file mode 100644 index dee081b740..0000000000 --- a/gatsby-ssr.js +++ /dev/null @@ -1,102 +0,0 @@ -import * as React from 'react' - -export const onRenderBody = ({ setHeadComponents }) => { - setHeadComponents([ - <link - rel="preload" - href="/docs/fonts/Inter-Regular.woff2" - as="font" - type="font/woff2" - crossOrigin="anonymous" - key="interFont" - />, - <link - rel="preload" - href="/docs/fonts/Inter-Medium.woff2" - as="font" - type="font/woff2" - crossOrigin="anonymous" - key="interFont" - />, - <link - rel="preload" - href="/docs/fonts/Inter-Italic.woff2" - as="font" - type="font/woff2" - crossOrigin="anonymous" - key="interFont" - />, - <link - rel="preload" - href="/docs/fonts/Inter-Bold.woff2" - as="font" - type="font/woff2" - crossOrigin="anonymous" - key="interFont" - />, - <link - rel="preload" - href="/docs/fonts/Inter-SemiBold.woff2" - as="font" - type="font/woff2" - crossOrigin="anonymous" - key="interFont" - />, - <link - rel="preload" - href="/docs/fonts/Inter-SemiBoldItalic.woff2" - as="font" - type="font/woff2" - crossOrigin="anonymous" - key="interFont" - />, - <link - rel="preload" - href="/docs/fonts/Barlow-Bold.woff2" - as="font" - type="font/woff2" - crossOrigin="anonymous" - key="interFont" - />, - <link - rel="preload" - href="/docs/fonts/JetBrainsMono-Regular.woff2" - as="font" - type="font/woff2" - crossOrigin="anonymous" - key="interFont" - />, - <link - rel="preload" - href="/docs/fonts/fa-brands-400.woff2" - as="font" - type="font/woff2" - crossOrigin="anonymous" - key="interFont" - />, - <link - rel="preload" - href="/docs/fonts/fa-light-300.woff2" - as="font" - type="font/woff2" - crossOrigin="anonymous" - key="interFont" - />, - <link - rel="preload" - href="/docs/fonts/fa-regular-400.woff2" - as="font" - type="font/woff2" - crossOrigin="anonymous" - key="interFont" - />, - <link - rel="preload" - href="/docs/fonts/fa-solid-900.woff2" - as="font" - type="font/woff2" - crossOrigin="anonymous" - key="interFont" - />, - ]) -} diff --git a/images.d.ts b/images.d.ts deleted file mode 100644 index f6a4076480..0000000000 --- a/images.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -declare module '*.png' -declare module '*.jpg' -declare module '*.jpeg' -declare module '*.gif' diff --git a/lostpixel.config.js b/lostpixel.config.ts similarity index 80% rename from lostpixel.config.js rename to lostpixel.config.ts index 520c684259..e81dc64626 100644 --- a/lostpixel.config.js +++ b/lostpixel.config.ts @@ -1,8 +1,10 @@ -module.exports = { +import { CustomProjectConfig } from 'lost-pixel'; + +export const config: CustomProjectConfig = { pageShots: { - pagesJsonUrl: 'http://172.17.0.1:9000/lost-pixel.json', - baseUrl: 'http://172.17.0.1:9000', - mask: [{ selector: 'span.gatsby-resp-image-background-image' }], + pages: [], + pagesJsonUrl: './lost-pixel-pages.json', + baseUrl: 'http://172.17.0.1:3000', }, lostPixelProjectId: 'clb5ek3mm1772001qqg7yban38', apiKey: process.env.LOST_PIXEL_API_KEY, @@ -29,12 +31,12 @@ module.exports = { #onetrust-consent-sdk { display: none; } - + /* reset menu item alignment */ #sidebar-holder li a { vertical-align: baseline; } `, }) - }, -} + } +}; diff --git a/package-lock.json b/package-lock.json index 11aa58e605..cee02ef43c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,161 +1,149 @@ { - "name": "prisma2-docs", - "version": "1.0.0", - "lockfileVersion": 2, + "name": "docs", + "version": "0.0.0", + "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "prisma2-docs", - "version": "1.0.0", - "hasInstallScript": true, - "license": "Apache-2.0", - "dependencies": { - "@mdx-js/loader": "1.6.22", - "@mdx-js/mdx": "1.6.22", - "@mdx-js/react": "1.6.22", - "@philpl/buble": "0.19.7", - "@prisma/client": "^4.8.1", - "@react-aria/overlays": "^3.20.0", - "@react-aria/tooltip": "^3.7.0", - "@react-aria/utils": "^3.23.0", - "@react-stately/tooltip": "^3.4.6", - "algoliasearch": "4.14.2", - "babel-plugin-styled-components": "2.0.7", - "gatsby": "4.22.1", - "gatsby-plugin-algolia": "^1.0.3", - "gatsby-plugin-catch-links": "4.22.0", - "gatsby-plugin-google-tagmanager": "4.22.0", - "gatsby-plugin-image": "2.22.0", - "gatsby-plugin-mdx": "3.15.2", - "gatsby-plugin-meta-redirect": "1.1.1", - "gatsby-plugin-robots-txt": "1.7.1", - "gatsby-plugin-sharp": "4.22.0", - "gatsby-plugin-sitemap": "5.22.0", - "gatsby-plugin-smoothscroll": "1.2.0", - "gatsby-plugin-styled-components": "5.22.0", - "gatsby-remark-autolink-headers": "5.22.0", - "gatsby-remark-copy-linked-files": "5.22.0", - "gatsby-remark-normalize-paths": "1.1.0", - "gatsby-remark-rewrite-relative-links": "1.0.8", - "gatsby-remark-sectionize": "1.0.0", - "gatsby-source-filesystem": "4.22.0", - "gatsby-transformer-remark": "5.25.1", - "gatsby-transformer-sharp": "4.22.0", - "normalize.css": "^8.0.1", - "parse-numeric-range": "1.3.0", - "prop-types": "15.7.2", - "qs": "6.11.2", - "react": "17.0.2", - "react-copy-to-clipboard": "5.1.0", - "react-dom": "17.0.2", - "react-feather": "2.0.10", - "react-ga": "3.3.1", - "react-instantsearch-dom": "6.32.1", - "react-refresh": "^0.14.0", - "react-select": "5.4.0", - "react-sticky-box": "1.0.2", - "react-toastify": "9.0.8", - "styled-components": "5.3.11", - "write": "2.0.0" + "name": "docs", + "version": "0.0.0", + "dependencies": { + "@docusaurus/core": "^3.2.1", + "@docusaurus/preset-classic": "^3.2.1", + "@mdx-js/react": "^3.0.0", + "@react-aria/overlays": "^3.21.1", + "@react-aria/tooltip": "^3.7.2", + "@react-aria/utils": "^3.23.2", + "clsx": "^2.0.0", + "docusaurus-plugin-sass": "^0.2.5", + "lost-pixel": "^3.16.0", + "prism-react-renderer": "^2.3.0", + "react": "^18.0.0", + "react-dom": "^18.0.0", + "react-select": "^5.8.0", + "sass": "^1.72.0" }, "devDependencies": { - "@percy/cli": "^1.11.0", - "@types/node": "17.0.45", - "@types/react": "18.2.28", - "@types/react-dom": "18.2.13", - "@types/react-instantsearch-dom": "6.12.4", - "@types/styled-components": "5.1.28", - "gatsby-plugin-webpack-bundle-analyser-v2": "^1.1.31", - "husky": "7.0.4", - "is-absolute-url": "4.0.1", - "lint-staged": "11.2.6", - "path-browserify": "1.0.1", - "prettier": "2.8.8", - "prettier-plugin-prisma": "4.13.0", - "prism-react-renderer": "1.2.1", - "prisma": "^4.8.1", - "react-is": "18.2.0", - "tslint": "6.1.3", - "typescript": "4.9.5" - } - }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "@docusaurus/module-type-aliases": "^3.2.1", + "@docusaurus/tsconfig": "^3.2.1", + "@docusaurus/types": "^3.2.1", + "typescript": "~5.2.2", + "wrangler": "^3.48.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=18.0" + } + }, + "node_modules/@algolia/autocomplete-core": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz", + "integrity": "sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==", + "dependencies": { + "@algolia/autocomplete-plugin-algolia-insights": "1.9.3", + "@algolia/autocomplete-shared": "1.9.3" + } + }, + "node_modules/@algolia/autocomplete-plugin-algolia-insights": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz", + "integrity": "sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==", + "dependencies": { + "@algolia/autocomplete-shared": "1.9.3" + }, + "peerDependencies": { + "search-insights": ">= 1 < 3" + } + }, + "node_modules/@algolia/autocomplete-preset-algolia": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.3.tgz", + "integrity": "sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==", + "dependencies": { + "@algolia/autocomplete-shared": "1.9.3" + }, + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/autocomplete-shared": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz", + "integrity": "sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==", + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" } }, "node_modules/@algolia/cache-browser-local-storage": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.14.2.tgz", - "integrity": "sha512-FRweBkK/ywO+GKYfAWbrepewQsPTIEirhi1BdykX9mxvBPtGNKccYAxvGdDCumU1jL4r3cayio4psfzKMejBlA==", + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.23.2.tgz", + "integrity": "sha512-PvRQdCmtiU22dw9ZcTJkrVKgNBVAxKgD0/cfiqyxhA5+PHzA2WDt6jOmZ9QASkeM2BpyzClJb/Wr1yt2/t78Kw==", "dependencies": { - "@algolia/cache-common": "4.14.2" + "@algolia/cache-common": "4.23.2" } }, "node_modules/@algolia/cache-common": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.14.2.tgz", - "integrity": "sha512-SbvAlG9VqNanCErr44q6lEKD2qoK4XtFNx9Qn8FK26ePCI8I9yU7pYB+eM/cZdS9SzQCRJBbHUumVr4bsQ4uxg==" + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.23.2.tgz", + "integrity": "sha512-OUK/6mqr6CQWxzl/QY0/mwhlGvS6fMtvEPyn/7AHUx96NjqDA4X4+Ju7aXFQKh+m3jW9VPB0B9xvEQgyAnRPNw==" }, "node_modules/@algolia/cache-in-memory": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.14.2.tgz", - "integrity": "sha512-HrOukWoop9XB/VFojPv1R5SVXowgI56T9pmezd/djh2JnVN/vXswhXV51RKy4nCpqxyHt/aGFSq2qkDvj6KiuQ==", + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.23.2.tgz", + "integrity": "sha512-rfbi/SnhEa3MmlqQvgYz/9NNJ156NkU6xFxjbxBtLWnHbpj+qnlMoKd+amoiacHRITpajg6zYbLM9dnaD3Bczw==", "dependencies": { - "@algolia/cache-common": "4.14.2" + "@algolia/cache-common": "4.23.2" } }, "node_modules/@algolia/client-account": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.14.2.tgz", - "integrity": "sha512-WHtriQqGyibbb/Rx71YY43T0cXqyelEU0lB2QMBRXvD2X0iyeGl4qMxocgEIcbHyK7uqE7hKgjT8aBrHqhgc1w==", + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.23.2.tgz", + "integrity": "sha512-VbrOCLIN/5I7iIdskSoSw3uOUPF516k4SjDD4Qz3BFwa3of7D9A0lzBMAvQEJJEPHWdVraBJlGgdJq/ttmquJQ==", "dependencies": { - "@algolia/client-common": "4.14.2", - "@algolia/client-search": "4.14.2", - "@algolia/transporter": "4.14.2" + "@algolia/client-common": "4.23.2", + "@algolia/client-search": "4.23.2", + "@algolia/transporter": "4.23.2" } }, "node_modules/@algolia/client-analytics": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.14.2.tgz", - "integrity": "sha512-yBvBv2mw+HX5a+aeR0dkvUbFZsiC4FKSnfqk9rrfX+QrlNOKEhCG0tJzjiOggRW4EcNqRmaTULIYvIzQVL2KYQ==", + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.23.2.tgz", + "integrity": "sha512-lLj7irsAztGhMoEx/SwKd1cwLY6Daf1Q5f2AOsZacpppSvuFvuBrmkzT7pap1OD/OePjLKxicJS8wNA0+zKtuw==", "dependencies": { - "@algolia/client-common": "4.14.2", - "@algolia/client-search": "4.14.2", - "@algolia/requester-common": "4.14.2", - "@algolia/transporter": "4.14.2" + "@algolia/client-common": "4.23.2", + "@algolia/client-search": "4.23.2", + "@algolia/requester-common": "4.23.2", + "@algolia/transporter": "4.23.2" } }, "node_modules/@algolia/client-common": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.14.2.tgz", - "integrity": "sha512-43o4fslNLcktgtDMVaT5XwlzsDPzlqvqesRi4MjQz2x4/Sxm7zYg5LRYFol1BIhG6EwxKvSUq8HcC/KxJu3J0Q==", + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.23.2.tgz", + "integrity": "sha512-Q2K1FRJBern8kIfZ0EqPvUr3V29ICxCm/q42zInV+VJRjldAD9oTsMGwqUQ26GFMdFYmqkEfCbY4VGAiQhh22g==", "dependencies": { - "@algolia/requester-common": "4.14.2", - "@algolia/transporter": "4.14.2" + "@algolia/requester-common": "4.23.2", + "@algolia/transporter": "4.23.2" } }, "node_modules/@algolia/client-personalization": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.14.2.tgz", - "integrity": "sha512-ACCoLi0cL8CBZ1W/2juehSltrw2iqsQBnfiu/Rbl9W2yE6o2ZUb97+sqN/jBqYNQBS+o0ekTMKNkQjHHAcEXNw==", + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.23.2.tgz", + "integrity": "sha512-vwPsgnCGhUcHhhQG5IM27z8q7dWrN9itjdvgA6uKf2e9r7vB+WXt4OocK0CeoYQt3OGEAExryzsB8DWqdMK5wg==", "dependencies": { - "@algolia/client-common": "4.14.2", - "@algolia/requester-common": "4.14.2", - "@algolia/transporter": "4.14.2" + "@algolia/client-common": "4.23.2", + "@algolia/requester-common": "4.23.2", + "@algolia/transporter": "4.23.2" } }, "node_modules/@algolia/client-search": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.14.2.tgz", - "integrity": "sha512-L5zScdOmcZ6NGiVbLKTvP02UbxZ0njd5Vq9nJAmPFtjffUSOGEp11BmD2oMJ5QvARgx2XbX4KzTTNS5ECYIMWw==", + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.23.2.tgz", + "integrity": "sha512-CxSB29OVGSE7l/iyoHvamMonzq7Ev8lnk/OkzleODZ1iBcCs3JC/XgTIKzN/4RSTrJ9QybsnlrN/bYCGufo7qw==", "dependencies": { - "@algolia/client-common": "4.14.2", - "@algolia/requester-common": "4.14.2", - "@algolia/transporter": "4.14.2" + "@algolia/client-common": "4.23.2", + "@algolia/requester-common": "4.23.2", + "@algolia/transporter": "4.23.2" } }, "node_modules/@algolia/events": { @@ -164,190 +152,114 @@ "integrity": "sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==" }, "node_modules/@algolia/logger-common": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.14.2.tgz", - "integrity": "sha512-/JGlYvdV++IcMHBnVFsqEisTiOeEr6cUJtpjz8zc0A9c31JrtLm318Njc72p14Pnkw3A/5lHHh+QxpJ6WFTmsA==" + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.23.2.tgz", + "integrity": "sha512-jGM49Q7626cXZ7qRAWXn0jDlzvoA1FvN4rKTi1g0hxKsTTSReyYk0i1ADWjChDPl3Q+nSDhJuosM2bBUAay7xw==" }, "node_modules/@algolia/logger-console": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.14.2.tgz", - "integrity": "sha512-8S2PlpdshbkwlLCSAB5f8c91xyc84VM9Ar9EdfE9UmX+NrKNYnWR1maXXVDQQoto07G1Ol/tYFnFVhUZq0xV/g==", + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.23.2.tgz", + "integrity": "sha512-oo+lnxxEmlhTBTFZ3fGz1O8PJ+G+8FiAoMY2Qo3Q4w23xocQev6KqDTA1JQAGPDxAewNA2VBwWOsVXeXFjrI/Q==", + "dependencies": { + "@algolia/logger-common": "4.23.2" + } + }, + "node_modules/@algolia/recommend": { + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-4.23.2.tgz", + "integrity": "sha512-Q75CjnzRCDzgIlgWfPnkLtrfF4t82JCirhalXkSSwe/c1GH5pWh4xUyDOR3KTMo+YxxX3zTlrL/FjHmUJEWEcg==", "dependencies": { - "@algolia/logger-common": "4.14.2" + "@algolia/cache-browser-local-storage": "4.23.2", + "@algolia/cache-common": "4.23.2", + "@algolia/cache-in-memory": "4.23.2", + "@algolia/client-common": "4.23.2", + "@algolia/client-search": "4.23.2", + "@algolia/logger-common": "4.23.2", + "@algolia/logger-console": "4.23.2", + "@algolia/requester-browser-xhr": "4.23.2", + "@algolia/requester-common": "4.23.2", + "@algolia/requester-node-http": "4.23.2", + "@algolia/transporter": "4.23.2" } }, "node_modules/@algolia/requester-browser-xhr": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.14.2.tgz", - "integrity": "sha512-CEh//xYz/WfxHFh7pcMjQNWgpl4wFB85lUMRyVwaDPibNzQRVcV33YS+63fShFWc2+42YEipFGH2iPzlpszmDw==", + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.23.2.tgz", + "integrity": "sha512-TO9wLlp8+rvW9LnIfyHsu8mNAMYrqNdQ0oLF6eTWFxXfxG3k8F/Bh7nFYGk2rFAYty4Fw4XUtrv/YjeNDtM5og==", "dependencies": { - "@algolia/requester-common": "4.14.2" + "@algolia/requester-common": "4.23.2" } }, "node_modules/@algolia/requester-common": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.14.2.tgz", - "integrity": "sha512-73YQsBOKa5fvVV3My7iZHu1sUqmjjfs9TteFWwPwDmnad7T0VTCopttcsM3OjLxZFtBnX61Xxl2T2gmG2O4ehg==" + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.23.2.tgz", + "integrity": "sha512-3EfpBS0Hri0lGDB5H/BocLt7Vkop0bTTLVUBB844HH6tVycwShmsV6bDR7yXbQvFP1uNpgePRD3cdBCjeHmk6Q==" }, "node_modules/@algolia/requester-node-http": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.14.2.tgz", - "integrity": "sha512-oDbb02kd1o5GTEld4pETlPZLY0e+gOSWjWMJHWTgDXbv9rm/o2cF7japO6Vj1ENnrqWvLBmW1OzV9g6FUFhFXg==", + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.23.2.tgz", + "integrity": "sha512-SVzgkZM/malo+2SB0NWDXpnT7nO5IZwuDTaaH6SjLeOHcya1o56LSWXk+3F3rNLz2GVH+I/rpYKiqmHhSOjerw==", "dependencies": { - "@algolia/requester-common": "4.14.2" + "@algolia/requester-common": "4.23.2" } }, "node_modules/@algolia/transporter": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.14.2.tgz", - "integrity": "sha512-t89dfQb2T9MFQHidjHcfhh6iGMNwvuKUvojAj+JsrHAGbuSy7yE4BylhLX6R0Q1xYRoC4Vvv+O5qIw/LdnQfsQ==", + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.23.2.tgz", + "integrity": "sha512-GY3aGKBy+8AK4vZh8sfkatDciDVKad5rTY2S10Aefyjh7e7UGBP4zigf42qVXwU8VOPwi7l/L7OACGMOFcjB0Q==", "dependencies": { - "@algolia/cache-common": "4.14.2", - "@algolia/logger-common": "4.14.2", - "@algolia/requester-common": "4.14.2" + "@algolia/cache-common": "4.23.2", + "@algolia/logger-common": "4.23.2", + "@algolia/requester-common": "4.23.2" } }, "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, - "node_modules/@ardatan/relay-compiler": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@ardatan/relay-compiler/-/relay-compiler-12.0.0.tgz", - "integrity": "sha512-9anThAaj1dQr6IGmzBMcfzOQKTa5artjuPmw8NYK/fiGEMjADbSguBY2FMDykt+QhilR3wc9VA/3yVju7JHg7Q==", - "dependencies": { - "@babel/core": "^7.14.0", - "@babel/generator": "^7.14.0", - "@babel/parser": "^7.14.0", - "@babel/runtime": "^7.0.0", - "@babel/traverse": "^7.14.0", - "@babel/types": "^7.0.0", - "babel-preset-fbjs": "^3.4.0", - "chalk": "^4.0.0", - "fb-watchman": "^2.0.0", - "fbjs": "^3.0.0", - "glob": "^7.1.1", - "immutable": "~3.7.6", - "invariant": "^2.2.4", - "nullthrows": "^1.1.1", - "relay-runtime": "12.0.0", - "signedsource": "^1.0.0", - "yargs": "^15.3.1" - }, - "bin": { - "relay-compiler": "bin/relay-compiler" - }, - "peerDependencies": { - "graphql": "*" - } - }, - "node_modules/@ardatan/relay-compiler/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@ardatan/relay-compiler/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@ardatan/relay-compiler/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@ardatan/relay-compiler/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/@ardatan/relay-compiler/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/@ardatan/relay-compiler/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@babel/code-frame": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.4.tgz", - "integrity": "sha512-r1IONyb6Ia+jYR2vvIDhdWdlTGhqbBoFqLTQidzZ4kepUFH15ejXvFHxCVbtl7BOXIudsIubf4E81xeA3h3IXA==", + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.3.tgz", - "integrity": "sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz", + "integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.3.tgz", - "integrity": "sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.4.tgz", + "integrity": "sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.3", - "@babel/helper-compilation-targets": "^7.22.15", + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.4", + "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.2", - "@babel/parser": "^7.23.3", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.3", - "@babel/types": "^7.23.3", + "@babel/helpers": "^7.24.4", + "@babel/parser": "^7.24.4", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.1", + "@babel/types": "^7.24.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -362,31 +274,22 @@ "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/eslint-parser": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.23.3.tgz", - "integrity": "sha512-9bTuNlyx7oSstodm1cR1bECj4fkiknsDa1YniISkJemMY3DGhJNYBECbe6QD/q54mp2J8VO66jW3/7uP//iFCw==", - "dependencies": { - "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", - "eslint-visitor-keys": "^2.1.0", - "semver": "^6.3.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || >=14.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.11.0", - "eslint": "^7.5.0 || ^8.0.0" + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" } }, "node_modules/@babel/generator": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.4.tgz", - "integrity": "sha512-esuS49Cga3HcThFNebGhlgsrVLkvhqvYDTzgjfFFlHJcIfLe5jFmRRfCQ1KuBfc4Jrtn3ndLgKWAKjBE+IraYQ==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.4.tgz", + "integrity": "sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==", "dependencies": { - "@babel/types": "^7.23.4", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", + "@babel/types": "^7.24.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" }, "engines": { @@ -416,13 +319,13 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", - "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -430,17 +333,25 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", - "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.4.tgz", + "integrity": "sha512-lG75yeuUSVu0pIcbhiYMXBXANHrpUPaOfu7ryAzskCgKUHuAxRQI5ssrtmF0X9UXldPlvT0XM/A4F44OXRt6iQ==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.23.0", "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-replace-supers": "^7.24.1", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", "semver": "^6.3.1" @@ -452,6 +363,14 @@ "@babel/core": "^7.0.0" } }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/helper-create-regexp-features-plugin": { "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", @@ -468,56 +387,18 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/regenerate-unicode-properties": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", - "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", - "dependencies": { - "regenerate": "^1.4.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/regexpu-core": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", - "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", - "dependencies": { - "@babel/regjsgen": "^0.8.0", - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsparser": "^0.9.1", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", - "dependencies": { - "jsesc": "~0.5.0" - }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { - "regjsparser": "bin/parser" + "semver": "bin/semver.js" } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz", - "integrity": "sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.1.tgz", + "integrity": "sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==", "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-plugin-utils": "^7.22.5", @@ -572,11 +453,11 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz", + "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==", "dependencies": { - "@babel/types": "^7.22.15" + "@babel/types": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -612,9 +493,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz", + "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==", "engines": { "node": ">=6.9.0" } @@ -636,12 +517,12 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", - "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz", + "integrity": "sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==", "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-member-expression-to-functions": "^7.23.0", "@babel/helper-optimise-call-expression": "^7.22.5" }, "engines": { @@ -685,9 +566,9 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", + "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", "engines": { "node": ">=6.9.0" } @@ -701,9 +582,9 @@ } }, "node_modules/@babel/helper-validator-option": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", - "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", "engines": { "node": ">=6.9.0" } @@ -722,35 +603,100 @@ } }, "node_modules/@babel/helpers": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.4.tgz", - "integrity": "sha512-HfcMizYz10cr3h29VqyfGL6ZWIjTwWfvYBMsBVGwpcbhNGe3wQ1ZXZRPzZoAHhd9OqHadHqjQ89iVKINXnbzuw==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.4.tgz", + "integrity": "sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==", "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.4", - "@babel/types": "^7.23.4" + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.1", + "@babel/types": "^7.24.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", + "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", "dependencies": { "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/@babel/parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.4.tgz", - "integrity": "sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz", + "integrity": "sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==", "bin": { "parser": "bin/babel-parser.js" }, @@ -758,12 +704,13 @@ "node": ">=6.0.0" } }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz", - "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.4.tgz", + "integrity": "sha512-qpl6vOOEEzTLLcsuqYYo8yDtrTocmu2xkGvgNebvPjT9DTtfFYGmgDqY+rBYXNlqL4s9qLDn6xkrJv4RxAPiTA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -772,29 +719,12 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", - "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz", + "integrity": "sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.23.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.3.tgz", - "integrity": "sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==", - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -803,88 +733,35 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", - "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", - "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead.", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", - "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead.", + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz", + "integrity": "sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==", "dependencies": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.20.7" + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.24.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.13.0" } }, - "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", - "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.", + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz", + "integrity": "sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-proposal-private-property-in-object": { @@ -956,26 +833,12 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-flow": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.23.3.tgz", - "integrity": "sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", - "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz", + "integrity": "sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -985,11 +848,11 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", - "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz", + "integrity": "sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1021,11 +884,14 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", - "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz", + "integrity": "sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -1126,11 +992,11 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", - "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz", + "integrity": "sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1155,11 +1021,11 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", - "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz", + "integrity": "sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1169,12 +1035,12 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.4.tgz", - "integrity": "sha512-efdkfPhHYTtn0G6n2ddrESE91fgXxjlqLsnUtPWnJs4a4mZIbUaK7ffqKIIUKXSHwcDvaCVX6GXkaJJFqtX7jw==", + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.3.tgz", + "integrity": "sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==", "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-remap-async-to-generator": "^7.22.20", "@babel/plugin-syntax-async-generators": "^7.8.4" }, @@ -1186,12 +1052,12 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", - "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz", + "integrity": "sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==", "dependencies": { - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-module-imports": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-remap-async-to-generator": "^7.22.20" }, "engines": { @@ -1202,11 +1068,11 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", - "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz", + "integrity": "sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1216,11 +1082,11 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", - "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.4.tgz", + "integrity": "sha512-nIFUZIpGKDf9O9ttyRXpHFpKC+X3Y5mtshZONuEUYBomAKoM4y029Jr+uB1bHGPhNmK8YXHevDtKDOLmtRrp6g==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1230,12 +1096,12 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", - "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz", + "integrity": "sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1245,12 +1111,12 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", - "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz", + "integrity": "sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.24.4", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, "engines": { @@ -1261,17 +1127,16 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.3.tgz", - "integrity": "sha512-FGEQmugvAEu2QtgtU0uTASXevfLMFfBeVCIIdcQhn/uBQsMTjBajdnAtanQlOcuihWh10PZ7+HWvc7NtBwP74w==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.1.tgz", + "integrity": "sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-replace-supers": "^7.24.1", "@babel/helper-split-export-declaration": "^7.22.6", "globals": "^11.1.0" }, @@ -1283,12 +1148,12 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", - "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz", + "integrity": "sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/template": "^7.22.15" + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/template": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1298,11 +1163,11 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", - "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.1.tgz", + "integrity": "sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1312,12 +1177,12 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", - "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz", + "integrity": "sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1327,11 +1192,11 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", - "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz", + "integrity": "sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1341,11 +1206,11 @@ } }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", - "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz", + "integrity": "sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, "engines": { @@ -1356,12 +1221,12 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", - "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz", + "integrity": "sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==", "dependencies": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1371,11 +1236,11 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", - "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz", + "integrity": "sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, "engines": { @@ -1385,27 +1250,13 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-flow-strip-types": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.23.3.tgz", - "integrity": "sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-flow": "^7.23.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.3.tgz", - "integrity": "sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz", + "integrity": "sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1415,13 +1266,13 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", - "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz", + "integrity": "sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==", "dependencies": { - "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1431,11 +1282,11 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", - "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz", + "integrity": "sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-json-strings": "^7.8.3" }, "engines": { @@ -1446,11 +1297,11 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", - "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz", + "integrity": "sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1460,11 +1311,11 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", - "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz", + "integrity": "sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { @@ -1475,11 +1326,11 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", - "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz", + "integrity": "sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1489,12 +1340,12 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", - "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz", + "integrity": "sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==", "dependencies": { "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1504,12 +1355,12 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", - "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz", + "integrity": "sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==", "dependencies": { "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-simple-access": "^7.22.5" }, "engines": { @@ -1520,13 +1371,13 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz", - "integrity": "sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz", + "integrity": "sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==", "dependencies": { "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-validator-identifier": "^7.22.20" }, "engines": { @@ -1537,12 +1388,12 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", - "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz", + "integrity": "sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==", "dependencies": { "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1567,11 +1418,11 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", - "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz", + "integrity": "sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1581,11 +1432,11 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", - "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz", + "integrity": "sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, "engines": { @@ -1596,11 +1447,11 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", - "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz", + "integrity": "sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, "engines": { @@ -1611,15 +1462,14 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz", - "integrity": "sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.1.tgz", + "integrity": "sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA==", "dependencies": { - "@babel/compat-data": "^7.23.3", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.23.3" + "@babel/plugin-transform-parameters": "^7.24.1" }, "engines": { "node": ">=6.9.0" @@ -1629,12 +1479,12 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", - "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz", + "integrity": "sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20" + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-replace-supers": "^7.24.1" }, "engines": { "node": ">=6.9.0" @@ -1644,11 +1494,11 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", - "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz", + "integrity": "sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, "engines": { @@ -1659,11 +1509,11 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", - "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.1.tgz", + "integrity": "sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, @@ -1675,11 +1525,11 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", - "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.1.tgz", + "integrity": "sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1689,12 +1539,12 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", - "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz", + "integrity": "sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1704,13 +1554,13 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", - "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.1.tgz", + "integrity": "sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { @@ -1721,11 +1571,25 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", - "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz", + "integrity": "sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-constant-elements": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.24.1.tgz", + "integrity": "sha512-QXp1U9x0R7tkiGB0FOk8o74jhnap0FlZ5gNkRIWdG3eP+SvMFg118e1zaWewDzgABb106QSKpVsD3Wgd8t6ifA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1735,11 +1599,11 @@ } }, "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz", - "integrity": "sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.1.tgz", + "integrity": "sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1780,27 +1644,13 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-react-jsx/node_modules/@babel/plugin-syntax-jsx": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", - "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz", - "integrity": "sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.1.tgz", + "integrity": "sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1810,11 +1660,11 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", - "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz", + "integrity": "sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "regenerator-transform": "^0.15.2" }, "engines": { @@ -1825,11 +1675,11 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", - "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz", + "integrity": "sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1839,15 +1689,15 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.4.tgz", - "integrity": "sha512-ITwqpb6V4btwUG0YJR82o2QvmWrLgDnx/p2A3CTPYGaRgULkDiC0DRA2C4jlRB9uXGUEfaSS/IGHfVW+ohzYDw==", - "dependencies": { - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "babel-plugin-polyfill-corejs2": "^0.4.6", - "babel-plugin-polyfill-corejs3": "^0.8.5", - "babel-plugin-polyfill-regenerator": "^0.5.3", + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.3.tgz", + "integrity": "sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ==", + "dependencies": { + "@babel/helper-module-imports": "^7.24.3", + "@babel/helper-plugin-utils": "^7.24.0", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.1", + "babel-plugin-polyfill-regenerator": "^0.6.1", "semver": "^6.3.1" }, "engines": { @@ -1857,12 +1707,20 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", - "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz", + "integrity": "sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1872,11 +1730,11 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", - "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz", + "integrity": "sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" }, "engines": { @@ -1887,11 +1745,11 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", - "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz", + "integrity": "sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1901,11 +1759,11 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", - "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz", + "integrity": "sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1915,11 +1773,11 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", - "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.1.tgz", + "integrity": "sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1929,14 +1787,14 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.4.tgz", - "integrity": "sha512-39hCCOl+YUAyMOu6B9SmUTiHUU0t/CxJNUmY3qRdJujbqi+lrQcL11ysYUsAvFWPBdhihrv1z0oRG84Yr3dODQ==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.4.tgz", + "integrity": "sha512-79t3CQ8+oBGk/80SQ8MN3Bs3obf83zJ0YZjDmDaEZN8MqhMI760apl5z6a20kFeMXBwJX99VpKT8CKxEBp5H1g==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-typescript": "^7.23.3" + "@babel/helper-create-class-features-plugin": "^7.24.4", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-typescript": "^7.24.1" }, "engines": { "node": ">=6.9.0" @@ -1946,11 +1804,11 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", - "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz", + "integrity": "sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1960,12 +1818,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", - "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz", + "integrity": "sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1975,12 +1833,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", - "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz", + "integrity": "sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1990,12 +1848,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", - "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz", + "integrity": "sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -2005,25 +1863,26 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.3.tgz", - "integrity": "sha512-ovzGc2uuyNfNAs/jyjIGxS8arOHS5FENZaNn4rtE7UdKMMkqHCvboHfcuhWLZNX5cB44QfcGNWjaevxMzzMf+Q==", - "dependencies": { - "@babel/compat-data": "^7.23.3", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.3", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.4.tgz", + "integrity": "sha512-7Kl6cSmYkak0FK/FXjSEnLJ1N9T/WA2RkMhu17gZ/dsxKJUuTYNIylahPTzqpLyJN4WhDif8X0XK1R8Wsguo/A==", + "dependencies": { + "@babel/compat-data": "^7.24.4", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.4", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.1", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.23.3", - "@babel/plugin-syntax-import-attributes": "^7.23.3", + "@babel/plugin-syntax-import-assertions": "^7.24.1", + "@babel/plugin-syntax-import-attributes": "^7.24.1", "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", @@ -2035,58 +1894,58 @@ "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.23.3", - "@babel/plugin-transform-async-generator-functions": "^7.23.3", - "@babel/plugin-transform-async-to-generator": "^7.23.3", - "@babel/plugin-transform-block-scoped-functions": "^7.23.3", - "@babel/plugin-transform-block-scoping": "^7.23.3", - "@babel/plugin-transform-class-properties": "^7.23.3", - "@babel/plugin-transform-class-static-block": "^7.23.3", - "@babel/plugin-transform-classes": "^7.23.3", - "@babel/plugin-transform-computed-properties": "^7.23.3", - "@babel/plugin-transform-destructuring": "^7.23.3", - "@babel/plugin-transform-dotall-regex": "^7.23.3", - "@babel/plugin-transform-duplicate-keys": "^7.23.3", - "@babel/plugin-transform-dynamic-import": "^7.23.3", - "@babel/plugin-transform-exponentiation-operator": "^7.23.3", - "@babel/plugin-transform-export-namespace-from": "^7.23.3", - "@babel/plugin-transform-for-of": "^7.23.3", - "@babel/plugin-transform-function-name": "^7.23.3", - "@babel/plugin-transform-json-strings": "^7.23.3", - "@babel/plugin-transform-literals": "^7.23.3", - "@babel/plugin-transform-logical-assignment-operators": "^7.23.3", - "@babel/plugin-transform-member-expression-literals": "^7.23.3", - "@babel/plugin-transform-modules-amd": "^7.23.3", - "@babel/plugin-transform-modules-commonjs": "^7.23.3", - "@babel/plugin-transform-modules-systemjs": "^7.23.3", - "@babel/plugin-transform-modules-umd": "^7.23.3", + "@babel/plugin-transform-arrow-functions": "^7.24.1", + "@babel/plugin-transform-async-generator-functions": "^7.24.3", + "@babel/plugin-transform-async-to-generator": "^7.24.1", + "@babel/plugin-transform-block-scoped-functions": "^7.24.1", + "@babel/plugin-transform-block-scoping": "^7.24.4", + "@babel/plugin-transform-class-properties": "^7.24.1", + "@babel/plugin-transform-class-static-block": "^7.24.4", + "@babel/plugin-transform-classes": "^7.24.1", + "@babel/plugin-transform-computed-properties": "^7.24.1", + "@babel/plugin-transform-destructuring": "^7.24.1", + "@babel/plugin-transform-dotall-regex": "^7.24.1", + "@babel/plugin-transform-duplicate-keys": "^7.24.1", + "@babel/plugin-transform-dynamic-import": "^7.24.1", + "@babel/plugin-transform-exponentiation-operator": "^7.24.1", + "@babel/plugin-transform-export-namespace-from": "^7.24.1", + "@babel/plugin-transform-for-of": "^7.24.1", + "@babel/plugin-transform-function-name": "^7.24.1", + "@babel/plugin-transform-json-strings": "^7.24.1", + "@babel/plugin-transform-literals": "^7.24.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.1", + "@babel/plugin-transform-member-expression-literals": "^7.24.1", + "@babel/plugin-transform-modules-amd": "^7.24.1", + "@babel/plugin-transform-modules-commonjs": "^7.24.1", + "@babel/plugin-transform-modules-systemjs": "^7.24.1", + "@babel/plugin-transform-modules-umd": "^7.24.1", "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.23.3", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.3", - "@babel/plugin-transform-numeric-separator": "^7.23.3", - "@babel/plugin-transform-object-rest-spread": "^7.23.3", - "@babel/plugin-transform-object-super": "^7.23.3", - "@babel/plugin-transform-optional-catch-binding": "^7.23.3", - "@babel/plugin-transform-optional-chaining": "^7.23.3", - "@babel/plugin-transform-parameters": "^7.23.3", - "@babel/plugin-transform-private-methods": "^7.23.3", - "@babel/plugin-transform-private-property-in-object": "^7.23.3", - "@babel/plugin-transform-property-literals": "^7.23.3", - "@babel/plugin-transform-regenerator": "^7.23.3", - "@babel/plugin-transform-reserved-words": "^7.23.3", - "@babel/plugin-transform-shorthand-properties": "^7.23.3", - "@babel/plugin-transform-spread": "^7.23.3", - "@babel/plugin-transform-sticky-regex": "^7.23.3", - "@babel/plugin-transform-template-literals": "^7.23.3", - "@babel/plugin-transform-typeof-symbol": "^7.23.3", - "@babel/plugin-transform-unicode-escapes": "^7.23.3", - "@babel/plugin-transform-unicode-property-regex": "^7.23.3", - "@babel/plugin-transform-unicode-regex": "^7.23.3", - "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", + "@babel/plugin-transform-new-target": "^7.24.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.1", + "@babel/plugin-transform-numeric-separator": "^7.24.1", + "@babel/plugin-transform-object-rest-spread": "^7.24.1", + "@babel/plugin-transform-object-super": "^7.24.1", + "@babel/plugin-transform-optional-catch-binding": "^7.24.1", + "@babel/plugin-transform-optional-chaining": "^7.24.1", + "@babel/plugin-transform-parameters": "^7.24.1", + "@babel/plugin-transform-private-methods": "^7.24.1", + "@babel/plugin-transform-private-property-in-object": "^7.24.1", + "@babel/plugin-transform-property-literals": "^7.24.1", + "@babel/plugin-transform-regenerator": "^7.24.1", + "@babel/plugin-transform-reserved-words": "^7.24.1", + "@babel/plugin-transform-shorthand-properties": "^7.24.1", + "@babel/plugin-transform-spread": "^7.24.1", + "@babel/plugin-transform-sticky-regex": "^7.24.1", + "@babel/plugin-transform-template-literals": "^7.24.1", + "@babel/plugin-transform-typeof-symbol": "^7.24.1", + "@babel/plugin-transform-unicode-escapes": "^7.24.1", + "@babel/plugin-transform-unicode-property-regex": "^7.24.1", + "@babel/plugin-transform-unicode-regex": "^7.24.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.24.1", "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.6", - "babel-plugin-polyfill-corejs3": "^0.8.5", - "babel-plugin-polyfill-regenerator": "^0.5.3", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.4", + "babel-plugin-polyfill-regenerator": "^0.6.1", "core-js-compat": "^3.31.0", "semver": "^6.3.1" }, @@ -2097,6 +1956,14 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/preset-modules": { "version": "0.1.6-no-external-plugins", "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", @@ -2111,16 +1978,16 @@ } }, "node_modules/@babel/preset-react": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.23.3.tgz", - "integrity": "sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", - "@babel/plugin-transform-react-display-name": "^7.23.3", - "@babel/plugin-transform-react-jsx": "^7.22.15", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.24.1.tgz", + "integrity": "sha512-eFa8up2/8cZXLIpkafhaADTXSnl7IsUFCYenRWrARBz0/qZwcT0RBXpys0LJU4+WfPoF2ZG6ew6s2V6izMCwRA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-transform-react-display-name": "^7.24.1", + "@babel/plugin-transform-react-jsx": "^7.23.4", "@babel/plugin-transform-react-jsx-development": "^7.22.5", - "@babel/plugin-transform-react-pure-annotations": "^7.23.3" + "@babel/plugin-transform-react-pure-annotations": "^7.24.1" }, "engines": { "node": ">=6.9.0" @@ -2130,29 +1997,15 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz", - "integrity": "sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", - "@babel/plugin-syntax-jsx": "^7.23.3", - "@babel/plugin-transform-modules-commonjs": "^7.23.3", - "@babel/plugin-transform-typescript": "^7.23.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-typescript/node_modules/@babel/plugin-syntax-jsx": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", - "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.1.tgz", + "integrity": "sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-syntax-jsx": "^7.24.1", + "@babel/plugin-transform-modules-commonjs": "^7.24.1", + "@babel/plugin-transform-typescript": "^7.24.1" }, "engines": { "node": ">=6.9.0" @@ -2167,9 +2020,9 @@ "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" }, "node_modules/@babel/runtime": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.4.tgz", - "integrity": "sha512-2Yv65nlWnWlSpe3fXEyX5i7fx5kIKo4Qbcj+hMO0odwaneFjfXw5fdum+4yL20O0QiaHpia0cYQ9xpNMqrBwHg==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.4.tgz", + "integrity": "sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -2177,33 +2030,45 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "node_modules/@babel/runtime-corejs3": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.24.4.tgz", + "integrity": "sha512-VOQOexSilscN24VEY810G/PqtpFvx/z6UqDIjIWbDe2368HhDLkYN5TYwaEz/+eRCUkhJ2WaNLLmQAlxzfWj4w==", "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" + "core-js-pure": "^3.30.2", + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.4.tgz", - "integrity": "sha512-IYM8wSUwunWTB6tFC2dkKZhxbIjHoWemdK+3f8/wq8aKhbUscxD5MX72ubd90fxvFknaLPeGw5ycU84V1obHJg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz", + "integrity": "sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==", "dependencies": { - "@babel/code-frame": "^7.23.4", - "@babel/generator": "^7.23.4", + "@babel/code-frame": "^7.24.1", + "@babel/generator": "^7.24.1", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.4", - "@babel/types": "^7.23.4", - "debug": "^4.1.0", + "@babel/parser": "^7.24.1", + "@babel/types": "^7.24.0", + "debug": "^4.3.1", "globals": "^11.1.0" }, "engines": { @@ -2211,9 +2076,9 @@ } }, "node_modules/@babel/types": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.4.tgz", - "integrity": "sha512-7uIFwVYpoplT5jp/kVv6EF93VaJ8H+Yn5IczYiaAi98ajzjfoZfslet/e0sLh+wVBjb2qqIut1b0S26VSafsSQ==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", + "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", "dependencies": { "@babel/helper-string-parser": "^7.23.4", "@babel/helper-validator-identifier": "^7.22.20", @@ -2223,4172 +2088,3315 @@ "node": ">=6.9.0" } }, - "node_modules/@builder.io/partytown": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/@builder.io/partytown/-/partytown-0.5.4.tgz", - "integrity": "sha512-qnikpQgi30AS01aFlNQV6l8/qdZIcP76mp90ti+u4rucXHsn4afSKivQXApqxvrQG9+Ibv45STyvHizvxef/7A==", - "bin": { - "partytown": "bin/partytown.cjs" + "node_modules/@cloudflare/kv-asset-handler": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.3.1.tgz", + "integrity": "sha512-lKN2XCfKCmpKb86a1tl4GIwsJYDy9TGuwjhDELLmpKygQhw8X2xR4dusgpC5Tg7q1pB96Eb0rBo81kxSILQMwA==", + "dev": true, + "dependencies": { + "mime": "^3.0.0" } }, - "node_modules/@discoveryjs/json-ext": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", - "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "node_modules/@cloudflare/kv-asset-handler/node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", "dev": true, + "bin": { + "mime": "cli.js" + }, "engines": { "node": ">=10.0.0" } }, - "node_modules/@emotion/babel-plugin": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", - "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==", - "dependencies": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/runtime": "^7.18.3", - "@emotion/hash": "^0.9.1", - "@emotion/memoize": "^0.8.1", - "@emotion/serialize": "^1.1.2", - "babel-plugin-macros": "^3.1.0", - "convert-source-map": "^1.5.0", - "escape-string-regexp": "^4.0.0", - "find-root": "^1.1.0", - "source-map": "^0.5.7", - "stylis": "4.2.0" + "node_modules/@cloudflare/workerd-darwin-64": { + "version": "1.20240404.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20240404.0.tgz", + "integrity": "sha512-rc/ov3I9GwgKRtUnkShNW3TIoZEPHzExrMRNlHq1VpXQRBSchHdMw8meMn54+oqgxW1AKLmPWj/c0A7EnYAsIw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=16" } }, - "node_modules/@emotion/babel-plugin/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + "node_modules/@cloudflare/workerd-darwin-arm64": { + "version": "1.20240404.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20240404.0.tgz", + "integrity": "sha512-V9oPjeC2PYBCoAYnjbO2bsjT7PtzxfUHnh780FUi1r59Hwxd7FNlojwsIidA0nS/1WV5UKeJusIdrYlQbsketA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=16" + } }, - "node_modules/@emotion/babel-plugin/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "node_modules/@cloudflare/workerd-linux-64": { + "version": "1.20240404.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20240404.0.tgz", + "integrity": "sha512-ndO7q6G2X8uYd5byGFzow4SWPqINQcmJ7pKKATNa+9vh/YMO0of2ihPntnm9uv577l8nRiAwRkHbnsWoEI33qQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=16" } }, - "node_modules/@emotion/babel-plugin/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/@cloudflare/workerd-linux-arm64": { + "version": "1.20240404.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20240404.0.tgz", + "integrity": "sha512-hto5pjKYFqFu2Rvxnh84TzgDwalBRXQSwOVHltcgqo48en9TJDCN48ZtLj2G7QTGUOMW88h+nqdbj8+P7S/GXQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=0.10.0" + "node": ">=16" } }, - "node_modules/@emotion/cache": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", - "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", - "dependencies": { - "@emotion/memoize": "^0.8.1", - "@emotion/sheet": "^1.2.2", - "@emotion/utils": "^1.2.1", - "@emotion/weak-memoize": "^0.3.1", - "stylis": "4.2.0" + "node_modules/@cloudflare/workerd-windows-64": { + "version": "1.20240404.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20240404.0.tgz", + "integrity": "sha512-DpCLvNkOeFinKGJwv9qbyT7RLZ1168dhPx85IHSqAYVWZIszNSmNOkEDqklvoJoab01AqETrrEhwBdmjCA7qfA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=16" } }, - "node_modules/@emotion/hash": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", - "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "optional": true, + "engines": { + "node": ">=0.1.90" + } }, - "node_modules/@emotion/is-prop-valid": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz", - "integrity": "sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==", + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dependencies": { - "@emotion/memoize": "^0.8.1" + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" } }, - "node_modules/@emotion/memoize": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", - "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } }, - "node_modules/@emotion/react": { - "version": "11.11.1", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.1.tgz", - "integrity": "sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==", + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@docsearch/css": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.6.0.tgz", + "integrity": "sha512-+sbxb71sWre+PwDK7X2T8+bhS6clcVMLwBPznX45Qu6opJcgRjAp7gYSDzVFp187J+feSj5dNBN1mJoi6ckkUQ==" + }, + "node_modules/@docsearch/react": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.6.0.tgz", + "integrity": "sha512-HUFut4ztcVNmqy9gp/wxNbC7pTOHhgVVkHVGCACTuLhUKUhKAF9KYHJtMiLUJxEqiFLQiuri1fWF8zqwM/cu1w==", "dependencies": { - "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.11.0", - "@emotion/cache": "^11.11.0", - "@emotion/serialize": "^1.1.2", - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", - "@emotion/utils": "^1.2.1", - "@emotion/weak-memoize": "^0.3.1", - "hoist-non-react-statics": "^3.3.1" + "@algolia/autocomplete-core": "1.9.3", + "@algolia/autocomplete-preset-algolia": "1.9.3", + "@docsearch/css": "3.6.0", + "algoliasearch": "^4.19.1" }, "peerDependencies": { - "react": ">=16.8.0" + "@types/react": ">= 16.8.0 < 19.0.0", + "react": ">= 16.8.0 < 19.0.0", + "react-dom": ">= 16.8.0 < 19.0.0", + "search-insights": ">= 1 < 3" }, "peerDependenciesMeta": { "@types/react": { "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "search-insights": { + "optional": true } } }, - "node_modules/@emotion/serialize": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.2.tgz", - "integrity": "sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==", + "node_modules/@docusaurus/core": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.2.1.tgz", + "integrity": "sha512-ZeMAqNvy0eBv2dThEeMuNzzuu+4thqMQakhxsgT5s02A8LqRcdkg+rbcnuNqUIpekQ4GRx3+M5nj0ODJhBXo9w==", "dependencies": { - "@emotion/hash": "^0.9.1", - "@emotion/memoize": "^0.8.1", - "@emotion/unitless": "^0.8.1", - "@emotion/utils": "^1.2.1", - "csstype": "^3.0.2" - } - }, - "node_modules/@emotion/sheet": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", - "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" - }, - "node_modules/@emotion/stylis": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", - "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==" - }, - "node_modules/@emotion/unitless": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", - "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==" - }, - "node_modules/@emotion/use-insertion-effect-with-fallbacks": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", - "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", + "@babel/core": "^7.23.3", + "@babel/generator": "^7.23.3", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.22.9", + "@babel/preset-env": "^7.22.9", + "@babel/preset-react": "^7.22.5", + "@babel/preset-typescript": "^7.22.5", + "@babel/runtime": "^7.22.6", + "@babel/runtime-corejs3": "^7.22.6", + "@babel/traverse": "^7.22.8", + "@docusaurus/cssnano-preset": "3.2.1", + "@docusaurus/logger": "3.2.1", + "@docusaurus/mdx-loader": "3.2.1", + "@docusaurus/react-loadable": "5.5.2", + "@docusaurus/utils": "3.2.1", + "@docusaurus/utils-common": "3.2.1", + "@docusaurus/utils-validation": "3.2.1", + "@svgr/webpack": "^6.5.1", + "autoprefixer": "^10.4.14", + "babel-loader": "^9.1.3", + "babel-plugin-dynamic-import-node": "^2.3.3", + "boxen": "^6.2.1", + "chalk": "^4.1.2", + "chokidar": "^3.5.3", + "clean-css": "^5.3.2", + "cli-table3": "^0.6.3", + "combine-promises": "^1.1.0", + "commander": "^5.1.0", + "copy-webpack-plugin": "^11.0.0", + "core-js": "^3.31.1", + "css-loader": "^6.8.1", + "css-minimizer-webpack-plugin": "^4.2.2", + "cssnano": "^5.1.15", + "del": "^6.1.1", + "detect-port": "^1.5.1", + "escape-html": "^1.0.3", + "eta": "^2.2.0", + "eval": "^0.1.8", + "file-loader": "^6.2.0", + "fs-extra": "^11.1.1", + "html-minifier-terser": "^7.2.0", + "html-tags": "^3.3.1", + "html-webpack-plugin": "^5.5.3", + "leven": "^3.1.0", + "lodash": "^4.17.21", + "mini-css-extract-plugin": "^2.7.6", + "p-map": "^4.0.0", + "postcss": "^8.4.26", + "postcss-loader": "^7.3.3", + "prompts": "^2.4.2", + "react-dev-utils": "^12.0.1", + "react-helmet-async": "^1.3.0", + "react-loadable": "npm:@docusaurus/react-loadable@5.5.2", + "react-loadable-ssr-addon-v5-slorber": "^1.0.1", + "react-router": "^5.3.4", + "react-router-config": "^5.1.1", + "react-router-dom": "^5.3.4", + "rtl-detect": "^1.0.4", + "semver": "^7.5.4", + "serve-handler": "^6.1.5", + "shelljs": "^0.8.5", + "terser-webpack-plugin": "^5.3.9", + "tslib": "^2.6.0", + "update-notifier": "^6.0.2", + "url-loader": "^4.1.1", + "webpack": "^5.88.1", + "webpack-bundle-analyzer": "^4.9.0", + "webpack-dev-server": "^4.15.1", + "webpack-merge": "^5.9.0", + "webpackbar": "^5.0.2" + }, + "bin": { + "docusaurus": "bin/docusaurus.mjs" + }, + "engines": { + "node": ">=18.0" + }, "peerDependencies": { - "react": ">=16.8.0" + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, - "node_modules/@emotion/utils": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", - "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==" - }, - "node_modules/@emotion/weak-memoize": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", - "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" - }, - "node_modules/@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "node_modules/@docusaurus/cssnano-preset": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.2.1.tgz", + "integrity": "sha512-wTL9KuSSbMJjKrfu385HZEzAoamUsbKqwscAQByZw4k6Ja/RWpqgVvt/CbAC+aYEH6inLzOt+MjuRwMOrD3VBA==", "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" + "cssnano-preset-advanced": "^5.3.10", + "postcss": "^8.4.26", + "postcss-sort-media-queries": "^4.4.1", + "tslib": "^2.6.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=18.0" } }, - "node_modules/@eslint/eslintrc/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/@docusaurus/logger": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.2.1.tgz", + "integrity": "sha512-0voOKJCn9RaM3np6soqEfo7SsVvf2C+CDTWhW+H/1AyBhybASpExtDEz+7ECck9TwPzFQ5tt+I3zVugUJbJWDg==", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "chalk": "^4.1.2", + "tslib": "^2.6.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">=18.0" } }, - "node_modules/@eslint/eslintrc/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dependencies": { - "sprintf-js": "~1.0.2" + "node_modules/@docusaurus/mdx-loader": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-3.2.1.tgz", + "integrity": "sha512-Fs8tXhXKZjNkdGaOy1xSLXSwfjCMT73J3Zfrju2U16uGedRFRjgK0ojpK5tiC7TnunsL3tOFgp1BSMBRflX9gw==", + "dependencies": { + "@docusaurus/logger": "3.2.1", + "@docusaurus/utils": "3.2.1", + "@docusaurus/utils-validation": "3.2.1", + "@mdx-js/mdx": "^3.0.0", + "@slorber/remark-comment": "^1.0.0", + "escape-html": "^1.0.3", + "estree-util-value-to-estree": "^3.0.1", + "file-loader": "^6.2.0", + "fs-extra": "^11.1.1", + "image-size": "^1.0.2", + "mdast-util-mdx": "^3.0.0", + "mdast-util-to-string": "^4.0.0", + "rehype-raw": "^7.0.0", + "remark-directive": "^3.0.0", + "remark-emoji": "^4.0.0", + "remark-frontmatter": "^5.0.0", + "remark-gfm": "^4.0.0", + "stringify-object": "^3.3.0", + "tslib": "^2.6.0", + "unified": "^11.0.3", + "unist-util-visit": "^5.0.0", + "url-loader": "^4.1.1", + "vfile": "^6.0.1", + "webpack": "^5.88.1" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "node_modules/@docusaurus/module-type-aliases": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.2.1.tgz", + "integrity": "sha512-FyViV5TqhL1vsM7eh29nJ5NtbRE6Ra6LP1PDcPvhwPSlA7eiWGRKAn3jWwMUcmjkos5SYY+sr0/feCdbM3eQHQ==", "dependencies": { - "type-fest": "^0.20.2" + "@docusaurus/react-loadable": "5.5.2", + "@docusaurus/types": "3.2.1", + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router-config": "*", + "@types/react-router-dom": "*", + "react-helmet-async": "*", + "react-loadable": "npm:@docusaurus/react-loadable@5.5.2" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*" + } + }, + "node_modules/@docusaurus/plugin-content-blog": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.2.1.tgz", + "integrity": "sha512-lOx0JfhlGZoZu6pEJfeEpSISZR5dQbJGGvb42IP13G5YThNHhG9R9uoWuo4IOimPqBC7sHThdLA3VLevk61Fsw==", + "dependencies": { + "@docusaurus/core": "3.2.1", + "@docusaurus/logger": "3.2.1", + "@docusaurus/mdx-loader": "3.2.1", + "@docusaurus/types": "3.2.1", + "@docusaurus/utils": "3.2.1", + "@docusaurus/utils-common": "3.2.1", + "@docusaurus/utils-validation": "3.2.1", + "cheerio": "^1.0.0-rc.12", + "feed": "^4.2.2", + "fs-extra": "^11.1.1", + "lodash": "^4.17.21", + "reading-time": "^1.5.0", + "srcset": "^4.0.0", + "tslib": "^2.6.0", + "unist-util-visit": "^5.0.0", + "utility-types": "^3.10.0", + "webpack": "^5.88.1" }, "engines": { - "node": ">=8" + "node": ">=18.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, - "node_modules/@eslint/eslintrc/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "node_modules/@docusaurus/plugin-content-docs": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.2.1.tgz", + "integrity": "sha512-GHe5b/lCskAR8QVbfWAfPAApvRZgqk7FN3sOHgjCtjzQACZxkHmq6QqyqZ8Jp45V7lVck4wt2Xw2IzBJ7Cz3bA==", + "dependencies": { + "@docusaurus/core": "3.2.1", + "@docusaurus/logger": "3.2.1", + "@docusaurus/mdx-loader": "3.2.1", + "@docusaurus/module-type-aliases": "3.2.1", + "@docusaurus/types": "3.2.1", + "@docusaurus/utils": "3.2.1", + "@docusaurus/utils-common": "3.2.1", + "@docusaurus/utils-validation": "3.2.1", + "@types/react-router-config": "^5.0.7", + "combine-promises": "^1.1.0", + "fs-extra": "^11.1.1", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "tslib": "^2.6.0", + "utility-types": "^3.10.0", + "webpack": "^5.88.1" + }, "engines": { - "node": ">= 4" - } - }, - "node_modules/@eslint/eslintrc/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "node": ">=18.0" }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "node_modules/@eslint/eslintrc/node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" - }, - "node_modules/@formatjs/ecma402-abstract": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.18.2.tgz", - "integrity": "sha512-+QoPW4csYALsQIl8GbN14igZzDbuwzcpWrku9nyMXlaqAlwRBgl5V+p0vWMGFqHOw37czNXaP/lEk4wbLgcmtA==", - "dependencies": { - "@formatjs/intl-localematcher": "0.5.4", - "tslib": "^2.4.0" - } - }, - "node_modules/@formatjs/fast-memoize": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.0.tgz", - "integrity": "sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==", - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@formatjs/icu-messageformat-parser": { - "version": "2.7.6", - "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.6.tgz", - "integrity": "sha512-etVau26po9+eewJKYoiBKP6743I1br0/Ie00Pb/S/PtmYfmjTcOn2YCh2yNkSZI12h6Rg+BOgQYborXk46BvkA==", - "dependencies": { - "@formatjs/ecma402-abstract": "1.18.2", - "@formatjs/icu-skeleton-parser": "1.8.0", - "tslib": "^2.4.0" - } - }, - "node_modules/@formatjs/icu-skeleton-parser": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.0.tgz", - "integrity": "sha512-QWLAYvM0n8hv7Nq5BEs4LKIjevpVpbGLAJgOaYzg9wABEoX1j0JO1q2/jVkO6CVlq0dbsxZCngS5aXbysYueqA==", - "dependencies": { - "@formatjs/ecma402-abstract": "1.18.2", - "tslib": "^2.4.0" - } - }, - "node_modules/@formatjs/intl-localematcher": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.4.tgz", - "integrity": "sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==", - "dependencies": { - "tslib": "^2.4.0" + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, - "node_modules/@gatsbyjs/parcel-namer-relative-to-cwd": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@gatsbyjs/parcel-namer-relative-to-cwd/-/parcel-namer-relative-to-cwd-1.7.0.tgz", - "integrity": "sha512-KifWxXYcLrXFHvM9Ug77BlyoQ3TLOB3lh4izNHFVuST/NEr5fKpn/IZRqEXhNEYaESjE6C1gDA42Vvhi58pnRQ==", + "node_modules/@docusaurus/plugin-content-pages": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.2.1.tgz", + "integrity": "sha512-TOqVfMVTAHqWNEGM94Drz+PUpHDbwFy6ucHFgyTx9zJY7wPNSG5EN+rd/mU7OvAi26qpOn2o9xTdUmb28QLjEQ==", "dependencies": { - "@babel/runtime": "^7.18.0", - "@parcel/namer-default": "2.6.2", - "@parcel/plugin": "2.6.2", - "gatsby-core-utils": "^3.22.0" + "@docusaurus/core": "3.2.1", + "@docusaurus/mdx-loader": "3.2.1", + "@docusaurus/types": "3.2.1", + "@docusaurus/utils": "3.2.1", + "@docusaurus/utils-validation": "3.2.1", + "fs-extra": "^11.1.1", + "tslib": "^2.6.0", + "webpack": "^5.88.1" }, "engines": { - "node": ">=14.15.0", - "parcel": "2.x" - } - }, - "node_modules/@gatsbyjs/potrace": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@gatsbyjs/potrace/-/potrace-2.3.0.tgz", - "integrity": "sha512-72szhSY/4tPiPPOzq15CG6LW0s9FuWQ86gkLSUvBNoF0s+jsEdRaZmATYNjiY2Skg//EuyPLEqUQnXKXME0szg==", - "dependencies": { - "jimp-compact": "^0.16.1-2" - } - }, - "node_modules/@gatsbyjs/reach-router": { - "version": "1.3.9", - "resolved": "https://registry.npmjs.org/@gatsbyjs/reach-router/-/reach-router-1.3.9.tgz", - "integrity": "sha512-/354IaUSM54xb7K/TxpLBJB94iEAJ3P82JD38T8bLnIDWF+uw8+W/82DKnQ7y24FJcKxtVmG43aiDLG88KSuYQ==", - "dependencies": { - "invariant": "^2.2.3", - "prop-types": "^15.6.1", - "react-lifecycles-compat": "^3.0.4" + "node": ">=18.0" }, "peerDependencies": { - "react": "15.x || 16.x || 17.x || 18.x", - "react-dom": "15.x || 16.x || 17.x || 18.x" - } - }, - "node_modules/@gatsbyjs/webpack-hot-middleware": { - "version": "2.25.3", - "resolved": "https://registry.npmjs.org/@gatsbyjs/webpack-hot-middleware/-/webpack-hot-middleware-2.25.3.tgz", - "integrity": "sha512-ul17OZ8Dlw+ATRbnuU+kwxuAlq9lKbYz/2uBS1FLCdgoPTF1H2heP7HbUbgfMZbfRQNcCG2rMscMnr32ritCDw==", - "dependencies": { - "ansi-html-community": "0.0.8", - "html-entities": "^2.3.3", - "strip-ansi": "^6.0.0" + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, - "node_modules/@graphql-codegen/add": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@graphql-codegen/add/-/add-3.2.3.tgz", - "integrity": "sha512-sQOnWpMko4JLeykwyjFTxnhqjd/3NOG2OyMuvK76Wnnwh8DRrNf2VEs2kmSvLl7MndMlOj7Kh5U154dVcvhmKQ==", + "node_modules/@docusaurus/plugin-debug": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-3.2.1.tgz", + "integrity": "sha512-AMKq8NuUKf2sRpN1m/sIbqbRbnmk+rSA+8mNU1LNxEl9BW9F/Gng8m9HKlzeyMPrf5XidzS1jqkuTLDJ6KIrFw==", "dependencies": { - "@graphql-codegen/plugin-helpers": "^3.1.1", - "tslib": "~2.4.0" + "@docusaurus/core": "3.2.1", + "@docusaurus/types": "3.2.1", + "@docusaurus/utils": "3.2.1", + "fs-extra": "^11.1.1", + "react-json-view-lite": "^1.2.0", + "tslib": "^2.6.0" }, - "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" - } - }, - "node_modules/@graphql-codegen/add/node_modules/@graphql-codegen/plugin-helpers": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-3.1.2.tgz", - "integrity": "sha512-emOQiHyIliVOIjKVKdsI5MXj312zmRDwmHpyUTZMjfpvxq/UVAHUJIVdVf+lnjjrI+LXBTgMlTWTgHQfmICxjg==", - "dependencies": { - "@graphql-tools/utils": "^9.0.0", - "change-case-all": "1.0.15", - "common-tags": "1.8.2", - "import-from": "4.0.0", - "lodash": "~4.17.0", - "tslib": "~2.4.0" + "engines": { + "node": ">=18.0" }, "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" - } - }, - "node_modules/@graphql-codegen/add/node_modules/change-case-all": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/change-case-all/-/change-case-all-1.0.15.tgz", - "integrity": "sha512-3+GIFhk3sNuvFAJKU46o26OdzudQlPNBCu1ZQi3cMeMHhty1bhDxu2WrEilVNYaGvqUtR1VSigFcJOiS13dRhQ==", - "dependencies": { - "change-case": "^4.1.2", - "is-lower-case": "^2.0.2", - "is-upper-case": "^2.0.2", - "lower-case": "^2.0.2", - "lower-case-first": "^2.0.2", - "sponge-case": "^1.0.1", - "swap-case": "^2.0.2", - "title-case": "^3.0.3", - "upper-case": "^2.0.2", - "upper-case-first": "^2.0.2" + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, - "node_modules/@graphql-codegen/core": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/@graphql-codegen/core/-/core-2.6.8.tgz", - "integrity": "sha512-JKllNIipPrheRgl+/Hm/xuWMw9++xNQ12XJR/OHHgFopOg4zmN3TdlRSyYcv/K90hCFkkIwhlHFUQTfKrm8rxQ==", + "node_modules/@docusaurus/plugin-google-analytics": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.2.1.tgz", + "integrity": "sha512-/rJ+9u+Px0eTCiF4TNcNtj3kHf8cp6K1HCwOTdbsSlz6Xn21syZYcy+f1VM9wF6HrvUkXUcbM5TDCvg2IRL6bQ==", "dependencies": { - "@graphql-codegen/plugin-helpers": "^3.1.1", - "@graphql-tools/schema": "^9.0.0", - "@graphql-tools/utils": "^9.1.1", - "tslib": "~2.4.0" + "@docusaurus/core": "3.2.1", + "@docusaurus/types": "3.2.1", + "@docusaurus/utils-validation": "3.2.1", + "tslib": "^2.6.0" }, - "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" - } - }, - "node_modules/@graphql-codegen/core/node_modules/@graphql-codegen/plugin-helpers": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-3.1.2.tgz", - "integrity": "sha512-emOQiHyIliVOIjKVKdsI5MXj312zmRDwmHpyUTZMjfpvxq/UVAHUJIVdVf+lnjjrI+LXBTgMlTWTgHQfmICxjg==", - "dependencies": { - "@graphql-tools/utils": "^9.0.0", - "change-case-all": "1.0.15", - "common-tags": "1.8.2", - "import-from": "4.0.0", - "lodash": "~4.17.0", - "tslib": "~2.4.0" + "engines": { + "node": ">=18.0" }, "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, - "node_modules/@graphql-codegen/core/node_modules/change-case-all": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/change-case-all/-/change-case-all-1.0.15.tgz", - "integrity": "sha512-3+GIFhk3sNuvFAJKU46o26OdzudQlPNBCu1ZQi3cMeMHhty1bhDxu2WrEilVNYaGvqUtR1VSigFcJOiS13dRhQ==", + "node_modules/@docusaurus/plugin-google-gtag": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.2.1.tgz", + "integrity": "sha512-XtuJnlMvYfppeVdUyKiDIJAa/gTJKCQU92z8CLZZ9ibJdgVjFOLS10s0hIC0eL5z0U2u2loJz2rZ63HOkNHbBA==", "dependencies": { - "change-case": "^4.1.2", - "is-lower-case": "^2.0.2", - "is-upper-case": "^2.0.2", - "lower-case": "^2.0.2", - "lower-case-first": "^2.0.2", - "sponge-case": "^1.0.1", - "swap-case": "^2.0.2", - "title-case": "^3.0.3", - "upper-case": "^2.0.2", - "upper-case-first": "^2.0.2" - } - }, - "node_modules/@graphql-codegen/plugin-helpers": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-2.7.2.tgz", - "integrity": "sha512-kln2AZ12uii6U59OQXdjLk5nOlh1pHis1R98cDZGFnfaiAbX9V3fxcZ1MMJkB7qFUymTALzyjZoXXdyVmPMfRg==", - "dependencies": { - "@graphql-tools/utils": "^8.8.0", - "change-case-all": "1.0.14", - "common-tags": "1.8.2", - "import-from": "4.0.0", - "lodash": "~4.17.0", - "tslib": "~2.4.0" + "@docusaurus/core": "3.2.1", + "@docusaurus/types": "3.2.1", + "@docusaurus/utils-validation": "3.2.1", + "@types/gtag.js": "^0.0.12", + "tslib": "^2.6.0" }, - "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" - } - }, - "node_modules/@graphql-codegen/plugin-helpers/node_modules/@graphql-tools/utils": { - "version": "8.13.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.13.1.tgz", - "integrity": "sha512-qIh9yYpdUFmctVqovwMdheVNJqFh+DQNWIhX87FJStfXYnmweBUDATok9fWPleKeFwxnW8IapKmY8m8toJEkAw==", - "dependencies": { - "tslib": "^2.4.0" + "engines": { + "node": ">=18.0" }, "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, - "node_modules/@graphql-codegen/schema-ast": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@graphql-codegen/schema-ast/-/schema-ast-2.6.1.tgz", - "integrity": "sha512-5TNW3b1IHJjCh07D2yQNGDQzUpUl2AD+GVe1Dzjqyx/d2Fn0TPMxLsHsKPS4Plg4saO8FK/QO70wLsP7fdbQ1w==", + "node_modules/@docusaurus/plugin-google-tag-manager": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.2.1.tgz", + "integrity": "sha512-wiS/kE0Ny5pnjTxVCs8ljRnkL1RVMj59t6jmSsgEX7piDOoaXSMIUaoIt9ogS/v132uO0xEsxHstkRUZHQyPcQ==", "dependencies": { - "@graphql-codegen/plugin-helpers": "^3.1.2", - "@graphql-tools/utils": "^9.0.0", - "tslib": "~2.4.0" + "@docusaurus/core": "3.2.1", + "@docusaurus/types": "3.2.1", + "@docusaurus/utils-validation": "3.2.1", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=18.0" }, "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, - "node_modules/@graphql-codegen/schema-ast/node_modules/@graphql-codegen/plugin-helpers": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-3.1.2.tgz", - "integrity": "sha512-emOQiHyIliVOIjKVKdsI5MXj312zmRDwmHpyUTZMjfpvxq/UVAHUJIVdVf+lnjjrI+LXBTgMlTWTgHQfmICxjg==", + "node_modules/@docusaurus/plugin-sitemap": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.2.1.tgz", + "integrity": "sha512-uWZ7AxzdeaQSTCwD2yZtOiEm9zyKU+wqCmi/Sf25kQQqqFSBZUStXfaQ8OHP9cecnw893ZpZ811rPhB/wfujJw==", "dependencies": { - "@graphql-tools/utils": "^9.0.0", - "change-case-all": "1.0.15", - "common-tags": "1.8.2", - "import-from": "4.0.0", - "lodash": "~4.17.0", - "tslib": "~2.4.0" + "@docusaurus/core": "3.2.1", + "@docusaurus/logger": "3.2.1", + "@docusaurus/types": "3.2.1", + "@docusaurus/utils": "3.2.1", + "@docusaurus/utils-common": "3.2.1", + "@docusaurus/utils-validation": "3.2.1", + "fs-extra": "^11.1.1", + "sitemap": "^7.1.1", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=18.0" }, "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" - } - }, - "node_modules/@graphql-codegen/schema-ast/node_modules/change-case-all": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/change-case-all/-/change-case-all-1.0.15.tgz", - "integrity": "sha512-3+GIFhk3sNuvFAJKU46o26OdzudQlPNBCu1ZQi3cMeMHhty1bhDxu2WrEilVNYaGvqUtR1VSigFcJOiS13dRhQ==", - "dependencies": { - "change-case": "^4.1.2", - "is-lower-case": "^2.0.2", - "is-upper-case": "^2.0.2", - "lower-case": "^2.0.2", - "lower-case-first": "^2.0.2", - "sponge-case": "^1.0.1", - "swap-case": "^2.0.2", - "title-case": "^3.0.3", - "upper-case": "^2.0.2", - "upper-case-first": "^2.0.2" + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, - "node_modules/@graphql-codegen/typescript": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/@graphql-codegen/typescript/-/typescript-2.8.8.tgz", - "integrity": "sha512-A0oUi3Oy6+DormOlrTC4orxT9OBZkIglhbJBcDmk34jAKKUgesukXRd4yOhmTrnbchpXz2T8IAOFB3FWIaK4Rw==", + "node_modules/@docusaurus/preset-classic": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-3.2.1.tgz", + "integrity": "sha512-E3OHSmttpEBcSMhfPBq3EJMBxZBM01W1rnaCUTXy9EHvkmB5AwgTfW1PwGAybPAX579ntE03R+2zmXdizWfKnQ==", "dependencies": { - "@graphql-codegen/plugin-helpers": "^3.1.2", - "@graphql-codegen/schema-ast": "^2.6.1", - "@graphql-codegen/visitor-plugin-common": "2.13.8", - "auto-bind": "~4.0.0", - "tslib": "~2.4.0" + "@docusaurus/core": "3.2.1", + "@docusaurus/plugin-content-blog": "3.2.1", + "@docusaurus/plugin-content-docs": "3.2.1", + "@docusaurus/plugin-content-pages": "3.2.1", + "@docusaurus/plugin-debug": "3.2.1", + "@docusaurus/plugin-google-analytics": "3.2.1", + "@docusaurus/plugin-google-gtag": "3.2.1", + "@docusaurus/plugin-google-tag-manager": "3.2.1", + "@docusaurus/plugin-sitemap": "3.2.1", + "@docusaurus/theme-classic": "3.2.1", + "@docusaurus/theme-common": "3.2.1", + "@docusaurus/theme-search-algolia": "3.2.1", + "@docusaurus/types": "3.2.1" + }, + "engines": { + "node": ">=18.0" }, "peerDependencies": { - "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, - "node_modules/@graphql-codegen/typescript-operations": { - "version": "2.5.13", - "resolved": "https://registry.npmjs.org/@graphql-codegen/typescript-operations/-/typescript-operations-2.5.13.tgz", - "integrity": "sha512-3vfR6Rx6iZU0JRt29GBkFlrSNTM6t+MSLF86ChvL4d/Jfo/JYAGuB3zNzPhirHYzJPCvLOAx2gy9ID1ltrpYiw==", + "node_modules/@docusaurus/react-loadable": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz", + "integrity": "sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==", "dependencies": { - "@graphql-codegen/plugin-helpers": "^3.1.2", - "@graphql-codegen/typescript": "^2.8.8", - "@graphql-codegen/visitor-plugin-common": "2.13.8", - "auto-bind": "~4.0.0", - "tslib": "~2.4.0" + "@types/react": "*", + "prop-types": "^15.6.2" }, "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + "react": "*" } }, - "node_modules/@graphql-codegen/typescript-operations/node_modules/@graphql-codegen/plugin-helpers": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-3.1.2.tgz", - "integrity": "sha512-emOQiHyIliVOIjKVKdsI5MXj312zmRDwmHpyUTZMjfpvxq/UVAHUJIVdVf+lnjjrI+LXBTgMlTWTgHQfmICxjg==", - "dependencies": { - "@graphql-tools/utils": "^9.0.0", - "change-case-all": "1.0.15", - "common-tags": "1.8.2", - "import-from": "4.0.0", - "lodash": "~4.17.0", - "tslib": "~2.4.0" + "node_modules/@docusaurus/theme-classic": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-3.2.1.tgz", + "integrity": "sha512-+vSbnQyoWjc6vRZi4vJO2dBU02wqzynsai15KK+FANZudrYaBHtkbLZAQhgmxzBGVpxzi87gRohlMm+5D8f4tA==", + "dependencies": { + "@docusaurus/core": "3.2.1", + "@docusaurus/mdx-loader": "3.2.1", + "@docusaurus/module-type-aliases": "3.2.1", + "@docusaurus/plugin-content-blog": "3.2.1", + "@docusaurus/plugin-content-docs": "3.2.1", + "@docusaurus/plugin-content-pages": "3.2.1", + "@docusaurus/theme-common": "3.2.1", + "@docusaurus/theme-translations": "3.2.1", + "@docusaurus/types": "3.2.1", + "@docusaurus/utils": "3.2.1", + "@docusaurus/utils-common": "3.2.1", + "@docusaurus/utils-validation": "3.2.1", + "@mdx-js/react": "^3.0.0", + "clsx": "^2.0.0", + "copy-text-to-clipboard": "^3.2.0", + "infima": "0.2.0-alpha.43", + "lodash": "^4.17.21", + "nprogress": "^0.2.0", + "postcss": "^8.4.26", + "prism-react-renderer": "^2.3.0", + "prismjs": "^1.29.0", + "react-router-dom": "^5.3.4", + "rtlcss": "^4.1.0", + "tslib": "^2.6.0", + "utility-types": "^3.10.0" + }, + "engines": { + "node": ">=18.0" }, "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" - } - }, - "node_modules/@graphql-codegen/typescript-operations/node_modules/change-case-all": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/change-case-all/-/change-case-all-1.0.15.tgz", - "integrity": "sha512-3+GIFhk3sNuvFAJKU46o26OdzudQlPNBCu1ZQi3cMeMHhty1bhDxu2WrEilVNYaGvqUtR1VSigFcJOiS13dRhQ==", - "dependencies": { - "change-case": "^4.1.2", - "is-lower-case": "^2.0.2", - "is-upper-case": "^2.0.2", - "lower-case": "^2.0.2", - "lower-case-first": "^2.0.2", - "sponge-case": "^1.0.1", - "swap-case": "^2.0.2", - "title-case": "^3.0.3", - "upper-case": "^2.0.2", - "upper-case-first": "^2.0.2" + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, - "node_modules/@graphql-codegen/typescript/node_modules/@graphql-codegen/plugin-helpers": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-3.1.2.tgz", - "integrity": "sha512-emOQiHyIliVOIjKVKdsI5MXj312zmRDwmHpyUTZMjfpvxq/UVAHUJIVdVf+lnjjrI+LXBTgMlTWTgHQfmICxjg==", - "dependencies": { - "@graphql-tools/utils": "^9.0.0", - "change-case-all": "1.0.15", - "common-tags": "1.8.2", - "import-from": "4.0.0", - "lodash": "~4.17.0", - "tslib": "~2.4.0" + "node_modules/@docusaurus/theme-common": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.2.1.tgz", + "integrity": "sha512-d+adiD7L9xv6EvfaAwUqdKf4orsM3jqgeqAM+HAjgL/Ux0GkVVnfKr+tsoe+4ow4rHe6NUt+nkkW8/K8dKdilA==", + "dependencies": { + "@docusaurus/mdx-loader": "3.2.1", + "@docusaurus/module-type-aliases": "3.2.1", + "@docusaurus/plugin-content-blog": "3.2.1", + "@docusaurus/plugin-content-docs": "3.2.1", + "@docusaurus/plugin-content-pages": "3.2.1", + "@docusaurus/utils": "3.2.1", + "@docusaurus/utils-common": "3.2.1", + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router-config": "*", + "clsx": "^2.0.0", + "parse-numeric-range": "^1.3.0", + "prism-react-renderer": "^2.3.0", + "tslib": "^2.6.0", + "utility-types": "^3.10.0" + }, + "engines": { + "node": ">=18.0" }, "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, - "node_modules/@graphql-codegen/typescript/node_modules/change-case-all": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/change-case-all/-/change-case-all-1.0.15.tgz", - "integrity": "sha512-3+GIFhk3sNuvFAJKU46o26OdzudQlPNBCu1ZQi3cMeMHhty1bhDxu2WrEilVNYaGvqUtR1VSigFcJOiS13dRhQ==", - "dependencies": { - "change-case": "^4.1.2", - "is-lower-case": "^2.0.2", - "is-upper-case": "^2.0.2", - "lower-case": "^2.0.2", - "lower-case-first": "^2.0.2", - "sponge-case": "^1.0.1", - "swap-case": "^2.0.2", - "title-case": "^3.0.3", - "upper-case": "^2.0.2", - "upper-case-first": "^2.0.2" - } - }, - "node_modules/@graphql-codegen/visitor-plugin-common": { - "version": "2.13.8", - "resolved": "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.13.8.tgz", - "integrity": "sha512-IQWu99YV4wt8hGxIbBQPtqRuaWZhkQRG2IZKbMoSvh0vGeWb3dB0n0hSgKaOOxDY+tljtOf9MTcUYvJslQucMQ==", - "dependencies": { - "@graphql-codegen/plugin-helpers": "^3.1.2", - "@graphql-tools/optimize": "^1.3.0", - "@graphql-tools/relay-operation-optimizer": "^6.5.0", - "@graphql-tools/utils": "^9.0.0", - "auto-bind": "~4.0.0", - "change-case-all": "1.0.15", - "dependency-graph": "^0.11.0", - "graphql-tag": "^2.11.0", - "parse-filepath": "^1.0.2", - "tslib": "~2.4.0" + "node_modules/@docusaurus/theme-search-algolia": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.2.1.tgz", + "integrity": "sha512-bzhCrpyXBXzeydNUH83II2akvFEGfhsNTPPWsk5N7e+odgQCQwoHhcF+2qILbQXjaoZ6B3c48hrvkyCpeyqGHw==", + "dependencies": { + "@docsearch/react": "^3.5.2", + "@docusaurus/core": "3.2.1", + "@docusaurus/logger": "3.2.1", + "@docusaurus/plugin-content-docs": "3.2.1", + "@docusaurus/theme-common": "3.2.1", + "@docusaurus/theme-translations": "3.2.1", + "@docusaurus/utils": "3.2.1", + "@docusaurus/utils-validation": "3.2.1", + "algoliasearch": "^4.18.0", + "algoliasearch-helper": "^3.13.3", + "clsx": "^2.0.0", + "eta": "^2.2.0", + "fs-extra": "^11.1.1", + "lodash": "^4.17.21", + "tslib": "^2.6.0", + "utility-types": "^3.10.0" + }, + "engines": { + "node": ">=18.0" }, "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, - "node_modules/@graphql-codegen/visitor-plugin-common/node_modules/@graphql-codegen/plugin-helpers": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-3.1.2.tgz", - "integrity": "sha512-emOQiHyIliVOIjKVKdsI5MXj312zmRDwmHpyUTZMjfpvxq/UVAHUJIVdVf+lnjjrI+LXBTgMlTWTgHQfmICxjg==", + "node_modules/@docusaurus/theme-translations": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-3.2.1.tgz", + "integrity": "sha512-jAUMkIkFfY+OAhJhv6mV8zlwY6J4AQxJPTgLdR2l+Otof9+QdJjHNh/ifVEu9q0lp3oSPlJj9l05AaP7Ref+cg==", "dependencies": { - "@graphql-tools/utils": "^9.0.0", - "change-case-all": "1.0.15", - "common-tags": "1.8.2", - "import-from": "4.0.0", - "lodash": "~4.17.0", - "tslib": "~2.4.0" + "fs-extra": "^11.1.1", + "tslib": "^2.6.0" }, - "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + "engines": { + "node": ">=18.0" } }, - "node_modules/@graphql-codegen/visitor-plugin-common/node_modules/change-case-all": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/change-case-all/-/change-case-all-1.0.15.tgz", - "integrity": "sha512-3+GIFhk3sNuvFAJKU46o26OdzudQlPNBCu1ZQi3cMeMHhty1bhDxu2WrEilVNYaGvqUtR1VSigFcJOiS13dRhQ==", - "dependencies": { - "change-case": "^4.1.2", - "is-lower-case": "^2.0.2", - "is-upper-case": "^2.0.2", - "lower-case": "^2.0.2", - "lower-case-first": "^2.0.2", - "sponge-case": "^1.0.1", - "swap-case": "^2.0.2", - "title-case": "^3.0.3", - "upper-case": "^2.0.2", - "upper-case-first": "^2.0.2" - } + "node_modules/@docusaurus/tsconfig": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@docusaurus/tsconfig/-/tsconfig-3.2.1.tgz", + "integrity": "sha512-+biUwtsYW3oChLxYezzA+NIgS3Q9KDRl7add/YT54RXs9Q4rKInebxdHdG6JFs5BaTg45gyjDu0rvNVcGeHODg==", + "dev": true }, - "node_modules/@graphql-tools/code-file-loader": { - "version": "7.3.23", - "resolved": "https://registry.npmjs.org/@graphql-tools/code-file-loader/-/code-file-loader-7.3.23.tgz", - "integrity": "sha512-8Wt1rTtyTEs0p47uzsPJ1vAtfAx0jmxPifiNdmo9EOCuUPyQGEbMaik/YkqZ7QUFIEYEQu+Vgfo8tElwOPtx5Q==", + "node_modules/@docusaurus/types": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.2.1.tgz", + "integrity": "sha512-n/toxBzL2oxTtRTOFiGKsHypzn/Pm+sXyw+VSk1UbqbXQiHOwHwts55bpKwbcUgA530Is6kix3ELiFOv9GAMfw==", "dependencies": { - "@graphql-tools/graphql-tag-pluck": "7.5.2", - "@graphql-tools/utils": "^9.2.1", - "globby": "^11.0.3", - "tslib": "^2.4.0", - "unixify": "^1.0.0" + "@mdx-js/mdx": "^3.0.0", + "@types/history": "^4.7.11", + "@types/react": "*", + "commander": "^5.1.0", + "joi": "^17.9.2", + "react-helmet-async": "^1.3.0", + "utility-types": "^3.10.0", + "webpack": "^5.88.1", + "webpack-merge": "^5.9.0" }, "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, - "node_modules/@graphql-tools/graphql-tag-pluck": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/@graphql-tools/graphql-tag-pluck/-/graphql-tag-pluck-7.5.2.tgz", - "integrity": "sha512-RW+H8FqOOLQw0BPXaahYepVSRjuOHw+7IL8Opaa5G5uYGOBxoXR7DceyQ7BcpMgktAOOmpDNQ2WtcboChOJSRA==", + "node_modules/@docusaurus/utils": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.2.1.tgz", + "integrity": "sha512-DPkIS/EPc+pGAV798PUXgNzJFM3HJouoQXgr0KDZuJVz1EkWbDLOcQwLIz8Qx7liI9ddfkN/TXTRQdsTPZNakw==", "dependencies": { - "@babel/parser": "^7.16.8", - "@babel/plugin-syntax-import-assertions": "^7.20.0", - "@babel/traverse": "^7.16.8", - "@babel/types": "^7.16.8", - "@graphql-tools/utils": "^9.2.1", - "tslib": "^2.4.0" + "@docusaurus/logger": "3.2.1", + "@docusaurus/utils-common": "3.2.1", + "@svgr/webpack": "^6.5.1", + "escape-string-regexp": "^4.0.0", + "file-loader": "^6.2.0", + "fs-extra": "^11.1.1", + "github-slugger": "^1.5.0", + "globby": "^11.1.0", + "gray-matter": "^4.0.3", + "jiti": "^1.20.0", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "micromatch": "^4.0.5", + "prompts": "^2.4.2", + "resolve-pathname": "^3.0.0", + "shelljs": "^0.8.5", + "tslib": "^2.6.0", + "url-loader": "^4.1.1", + "webpack": "^5.88.1" }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, - "node_modules/@graphql-tools/load": { - "version": "7.8.14", - "resolved": "https://registry.npmjs.org/@graphql-tools/load/-/load-7.8.14.tgz", - "integrity": "sha512-ASQvP+snHMYm+FhIaLxxFgVdRaM0vrN9wW2BKInQpktwWTXVyk+yP5nQUCEGmn0RTdlPKrffBaigxepkEAJPrg==", - "dependencies": { - "@graphql-tools/schema": "^9.0.18", - "@graphql-tools/utils": "^9.2.1", - "p-limit": "3.1.0", - "tslib": "^2.4.0" + "engines": { + "node": ">=18.0" }, "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, - "node_modules/@graphql-tools/merge": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.4.2.tgz", - "integrity": "sha512-XbrHAaj8yDuINph+sAfuq3QCZ/tKblrTLOpirK0+CAgNlZUCHs0Fa+xtMUURgwCVThLle1AF7svJCxFizygLsw==", - "dependencies": { - "@graphql-tools/utils": "^9.2.1", - "tslib": "^2.4.0" + "@docusaurus/types": "*" }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + "peerDependenciesMeta": { + "@docusaurus/types": { + "optional": true + } } }, - "node_modules/@graphql-tools/optimize": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/optimize/-/optimize-1.4.0.tgz", - "integrity": "sha512-dJs/2XvZp+wgHH8T5J2TqptT9/6uVzIYvA6uFACha+ufvdMBedkfR4b4GbT8jAKLRARiqRTxy3dctnwkTM2tdw==", + "node_modules/@docusaurus/utils-common": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.2.1.tgz", + "integrity": "sha512-N5vadULnRLiqX2QfTjVEU3u5vo6RG2EZTdyXvJdzDOdrLCGIZAfnf/VkssinFZ922sVfaFfQ4FnStdhn5TWdVg==", "dependencies": { - "tslib": "^2.4.0" + "tslib": "^2.6.0" }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, - "node_modules/@graphql-tools/relay-operation-optimizer": { - "version": "6.5.18", - "resolved": "https://registry.npmjs.org/@graphql-tools/relay-operation-optimizer/-/relay-operation-optimizer-6.5.18.tgz", - "integrity": "sha512-mc5VPyTeV+LwiM+DNvoDQfPqwQYhPV/cl5jOBjTgSniyaq8/86aODfMkrE2OduhQ5E00hqrkuL2Fdrgk0w1QJg==", - "dependencies": { - "@ardatan/relay-compiler": "12.0.0", - "@graphql-tools/utils": "^9.2.1", - "tslib": "^2.4.0" + "engines": { + "node": ">=18.0" }, "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + "@docusaurus/types": "*" + }, + "peerDependenciesMeta": { + "@docusaurus/types": { + "optional": true + } } }, - "node_modules/@graphql-tools/schema": { - "version": "9.0.19", - "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-9.0.19.tgz", - "integrity": "sha512-oBRPoNBtCkk0zbUsyP4GaIzCt8C0aCI4ycIRUL67KK5pOHljKLBBtGT+Jr6hkzA74C8Gco8bpZPe7aWFjiaK2w==", + "node_modules/@docusaurus/utils-validation": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.2.1.tgz", + "integrity": "sha512-+x7IR9hNMXi62L1YAglwd0s95fR7+EtirjTxSN4kahYRWGqOi3jlQl1EV0az/yTEvKbxVvOPcdYicGu9dk4LJw==", "dependencies": { - "@graphql-tools/merge": "^8.4.1", - "@graphql-tools/utils": "^9.2.1", - "tslib": "^2.4.0", - "value-or-promise": "^1.0.12" + "@docusaurus/logger": "3.2.1", + "@docusaurus/utils": "3.2.1", + "@docusaurus/utils-common": "3.2.1", + "joi": "^17.9.2", + "js-yaml": "^4.1.0", + "tslib": "^2.6.0" }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + "engines": { + "node": ">=18.0" } }, - "node_modules/@graphql-tools/utils": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.2.1.tgz", - "integrity": "sha512-WUw506Ql6xzmOORlriNrD6Ugx+HjVgYxt9KCXD9mHAak+eaXSwuGGPyE60hy9xaDEoXKBsG7SkG69ybitaVl6A==", + "node_modules/@emotion/babel-plugin": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", + "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==", "dependencies": { - "@graphql-typed-document-node/core": "^3.1.1", - "tslib": "^2.4.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + "@babel/helper-module-imports": "^7.16.7", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/serialize": "^1.1.2", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.2.0" } }, - "node_modules/@graphql-typed-document-node/core": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", - "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", - "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } + "node_modules/@emotion/babel-plugin/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" }, - "node_modules/@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" + "node_modules/@emotion/babel-plugin/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/@hapi/topo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "node_modules/@emotion/cache": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", + "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", "dependencies": { - "@hapi/hoek": "^9.0.0" + "@emotion/memoize": "^0.8.1", + "@emotion/sheet": "^1.2.2", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "stylis": "4.2.0" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.10.0" - } + "node_modules/@emotion/hash": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", + "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" + "node_modules/@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" }, - "node_modules/@internationalized/date": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.5.1.tgz", - "integrity": "sha512-LUQIfwU9e+Fmutc/DpRTGXSdgYZLBegi4wygCWDSVmUdLTaMHsQyASDiJtREwanwKuQLq0hY76fCJ9J/9I2xOQ==", + "node_modules/@emotion/react": { + "version": "11.11.4", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.4.tgz", + "integrity": "sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw==", "dependencies": { - "@swc/helpers": "^0.5.0" + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/cache": "^11.11.0", + "@emotion/serialize": "^1.1.3", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@internationalized/date/node_modules/@swc/helpers": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.6.tgz", - "integrity": "sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA==", + "node_modules/@emotion/serialize": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.4.tgz", + "integrity": "sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ==", "dependencies": { - "tslib": "^2.4.0" + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/unitless": "^0.8.1", + "@emotion/utils": "^1.2.1", + "csstype": "^3.0.2" } }, - "node_modules/@internationalized/message": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@internationalized/message/-/message-3.1.1.tgz", - "integrity": "sha512-ZgHxf5HAPIaR0th+w0RUD62yF6vxitjlprSxmLJ1tam7FOekqRSDELMg4Cr/DdszG5YLsp5BG3FgHgqquQZbqw==", - "dependencies": { - "@swc/helpers": "^0.5.0", - "intl-messageformat": "^10.1.0" - } + "node_modules/@emotion/sheet": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", + "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" }, - "node_modules/@internationalized/message/node_modules/@swc/helpers": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.6.tgz", - "integrity": "sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA==", - "dependencies": { - "tslib": "^2.4.0" - } + "node_modules/@emotion/unitless": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", + "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==" }, - "node_modules/@internationalized/number": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.5.0.tgz", - "integrity": "sha512-ZY1BW8HT9WKYvaubbuqXbbDdHhOUMfE2zHHFJeTppid0S+pc8HtdIxFxaYMsGjCb4UsF+MEJ4n2TfU7iHnUK8w==", - "dependencies": { - "@swc/helpers": "^0.5.0" + "node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", + "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", + "peerDependencies": { + "react": ">=16.8.0" } }, - "node_modules/@internationalized/number/node_modules/@swc/helpers": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.6.tgz", - "integrity": "sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA==", - "dependencies": { - "tslib": "^2.4.0" - } + "node_modules/@emotion/utils": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", + "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==" }, - "node_modules/@internationalized/string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@internationalized/string/-/string-3.2.0.tgz", - "integrity": "sha512-Xx3Sy3f2c9ctT+vh8c7euEaEHQZltp0euZ3Hy4UfT3E13r6lxpUS3kgKyumEjboJZSnaZv7JhqWz3D75v+IxQg==", - "dependencies": { - "@swc/helpers": "^0.5.0" - } + "node_modules/@emotion/weak-memoize": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", + "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" }, - "node_modules/@internationalized/string/node_modules/@swc/helpers": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.6.tgz", - "integrity": "sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA==", - "dependencies": { - "tslib": "^2.4.0" + "node_modules/@esbuild-plugins/node-globals-polyfill": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@esbuild-plugins/node-globals-polyfill/-/node-globals-polyfill-0.2.3.tgz", + "integrity": "sha512-r3MIryXDeXDOZh7ih1l/yE9ZLORCd5e8vWg02azWRGj5SPTuoh69A2AIyn0Z31V/kHBfZ4HgWJ+OK3GTTwLmnw==", + "dev": true, + "peerDependencies": { + "esbuild": "*" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "node_modules/@esbuild-plugins/node-modules-polyfill": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@esbuild-plugins/node-modules-polyfill/-/node-modules-polyfill-0.2.2.tgz", + "integrity": "sha512-LXV7QsWJxRuMYvKbiznh+U1ilIop3g2TeKRzUxOG5X3YITc8JyyTa90BmLwqqv0YnX4v32CSlG+vsziZp9dMvA==", + "dev": true, "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "escape-string-regexp": "^4.0.0", + "rollup-plugin-node-polyfills": "^0.2.1" }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", - "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@lezer/common": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.1.1.tgz", - "integrity": "sha512-aAPB9YbvZHqAW+bIwiuuTDGB4DG0sYNRObGLxud8cW7osw1ZQxfDuTZ8KQiqfZ0QJGcR34CvpTMDXEyo/+Htgg==" - }, - "node_modules/@lezer/lr": { - "version": "1.3.14", - "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.3.14.tgz", - "integrity": "sha512-z5mY4LStlA3yL7aHT/rqgG614cfcvklS+8oFRFBYrs4YaWLJyKKM4+nN6KopToX0o9Hj6zmH6M5kinOYuy06ug==", - "dependencies": { - "@lezer/common": "^1.0.0" + "peerDependencies": { + "esbuild": "*" } }, - "node_modules/@lmdb/lmdb-darwin-arm64": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-2.5.3.tgz", - "integrity": "sha512-RXwGZ/0eCqtCY8FLTM/koR60w+MXyvBUpToXiIyjOcBnC81tAlTUHrRUavCEWPI9zc9VgvpK3+cbumPyR8BSuA==", + "node_modules/@esbuild/aix-ppc64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.11.tgz", + "integrity": "sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==", "cpu": [ - "arm64" + "ppc64" ], "optional": true, "os": [ - "darwin" - ] - }, - "node_modules/@lmdb/lmdb-darwin-x64": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-2.5.3.tgz", - "integrity": "sha512-337dNzh5yCdNCTk8kPfoU7jR3otibSlPDGW0vKZT97rKnQMb9tNdto3RtWoGPsQ8hKmlRZpojOJtmwjncq1MoA==", - "cpu": [ - "x64" + "aix" ], - "optional": true, - "os": [ - "darwin" - ] + "engines": { + "node": ">=12" + } }, - "node_modules/@lmdb/lmdb-linux-arm": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-2.5.3.tgz", - "integrity": "sha512-mU2HFJDGwECkoD9dHQEfeTG5mp8hNS2BCfwoiOpVPMeapjYpQz9Uw3FkUjRZ4dGHWKbin40oWHuL0bk2bCx+Sg==", + "node_modules/@esbuild/android-arm": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.11.tgz", + "integrity": "sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==", "cpu": [ "arm" ], "optional": true, "os": [ - "linux" - ] + "android" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/@lmdb/lmdb-linux-arm64": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-2.5.3.tgz", - "integrity": "sha512-VJw60Mdgb4n+L0fO1PqfB0C7TyEQolJAC8qpqvG3JoQwvyOv6LH7Ib/WE3wxEW9nuHmVz9jkK7lk5HfWWgoO1Q==", + "node_modules/@esbuild/android-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.11.tgz", + "integrity": "sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==", "cpu": [ "arm64" ], "optional": true, "os": [ - "linux" - ] + "android" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/@lmdb/lmdb-linux-x64": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-2.5.3.tgz", - "integrity": "sha512-qaReO5aV8griBDsBr8uBF/faO3ieGjY1RY4p8JvTL6Mu1ylLrTVvOONqKFlNaCwrmUjWw5jnf7VafxDAeQHTow==", + "node_modules/@esbuild/android-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.11.tgz", + "integrity": "sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==", "cpu": [ "x64" ], "optional": true, "os": [ - "linux" - ] + "android" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/@lmdb/lmdb-win32-x64": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.5.3.tgz", - "integrity": "sha512-cK+Elf3RjEzrm3SerAhrFWL5oQAsZSJ/LmjL1joIpTfEP1etJJ9CTRvdaV6XLYAxaEkfdhk/9hOvHLbR9yIhCA==", + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.11.tgz", + "integrity": "sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==", "cpu": [ - "x64" + "arm64" ], "optional": true, "os": [ - "win32" - ] - }, - "node_modules/@mdx-js/loader": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/@mdx-js/loader/-/loader-1.6.22.tgz", - "integrity": "sha512-9CjGwy595NaxAYp0hF9B/A0lH6C8Rms97e2JS9d3jVUtILn6pT5i5IV965ra3lIWc7Rs1GG1tBdVF7dCowYe6Q==", - "dependencies": { - "@mdx-js/mdx": "1.6.22", - "@mdx-js/react": "1.6.22", - "loader-utils": "2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@mdx-js/mdx": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.22.tgz", - "integrity": "sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA==", - "dependencies": { - "@babel/core": "7.12.9", - "@babel/plugin-syntax-jsx": "7.12.1", - "@babel/plugin-syntax-object-rest-spread": "7.8.3", - "@mdx-js/util": "1.6.22", - "babel-plugin-apply-mdx-type-prop": "1.6.22", - "babel-plugin-extract-import-names": "1.6.22", - "camelcase-css": "2.0.1", - "detab": "2.0.4", - "hast-util-raw": "6.0.1", - "lodash.uniq": "4.5.0", - "mdast-util-to-hast": "10.0.1", - "remark-footnotes": "2.0.0", - "remark-mdx": "1.6.22", - "remark-parse": "8.0.3", - "remark-squeeze-paragraphs": "4.0.0", - "style-to-object": "0.3.0", - "unified": "9.2.0", - "unist-builder": "2.0.3", - "unist-util-visit": "2.0.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@mdx-js/mdx/node_modules/@babel/core": { - "version": "7.12.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", - "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", - "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.12.5", - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helpers": "^7.12.5", - "@babel/parser": "^7.12.7", - "@babel/template": "^7.12.7", - "@babel/traverse": "^7.12.9", - "@babel/types": "^7.12.7", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.2", - "lodash": "^4.17.19", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@mdx-js/mdx/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" - }, - "node_modules/@mdx-js/mdx/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/@mdx-js/mdx/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "darwin" + ], "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@mdx-js/react": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.22.tgz", - "integrity": "sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - }, - "peerDependencies": { - "react": "^16.13.1 || ^17.0.0" - } - }, - "node_modules/@mdx-js/util": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/@mdx-js/util/-/util-1.6.22.tgz", - "integrity": "sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "node": ">=12" } }, - "node_modules/@mischnic/json-sourcemap": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@mischnic/json-sourcemap/-/json-sourcemap-0.1.1.tgz", - "integrity": "sha512-iA7+tyVqfrATAIsIRWQG+a7ZLLD0VaOCKV2Wd/v4mqIU3J9c4jx9p7S0nw1XH3gJCKNBOOwACOPYYSUu9pgT+w==", - "dependencies": { - "@lezer/common": "^1.0.0", - "@lezer/lr": "^1.0.0", - "json5": "^2.2.1" - }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.11.tgz", + "integrity": "sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=12.0.0" + "node": ">=12" } }, - "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.2.tgz", - "integrity": "sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ==", + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.11.tgz", + "integrity": "sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==", "cpu": [ "arm64" ], "optional": true, "os": [ - "darwin" - ] + "freebsd" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.2.tgz", - "integrity": "sha512-lwriRAHm1Yg4iDf23Oxm9n/t5Zpw1lVnxYU3HnJPTi2lJRkKTrps1KVgvL6m7WvmhYVt/FIsssWay+k45QHeuw==", + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.11.tgz", + "integrity": "sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==", "cpu": [ "x64" ], "optional": true, "os": [ - "darwin" - ] + "freebsd" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.2.tgz", - "integrity": "sha512-MOI9Dlfrpi2Cuc7i5dXdxPbFIgbDBGgKR5F2yWEa6FVEtSWncfVNKW5AKjImAQ6CZlBK9tympdsZJ2xThBiWWA==", + "node_modules/@esbuild/linux-arm": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.11.tgz", + "integrity": "sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==", "cpu": [ "arm" ], "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">=12" + } }, - "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.2.tgz", - "integrity": "sha512-FU20Bo66/f7He9Fp9sP2zaJ1Q8L9uLPZQDub/WlUip78JlPeMbVL8546HbZfcW9LNciEXc8d+tThSJjSC+tmsg==", + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.11.tgz", + "integrity": "sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==", "cpu": [ "arm64" ], "optional": true, "os": [ "linux" - ] - }, - "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.2.tgz", - "integrity": "sha512-gsWNDCklNy7Ajk0vBBf9jEx04RUxuDQfBse918Ww+Qb9HCPoGzS+XJTLe96iN3BVK7grnLiYghP/M4L8VsaHeA==", + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.11.tgz", + "integrity": "sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==", "cpu": [ - "x64" + "ia32" ], "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">=12" + } }, - "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.2.tgz", - "integrity": "sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ==", + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.11.tgz", + "integrity": "sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==", "cpu": [ - "x64" + "loong64" ], "optional": true, "os": [ - "win32" - ] - }, - "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { - "version": "5.1.1-v1", - "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", - "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", - "dependencies": { - "eslint-scope": "5.1.1" + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.11.tgz", + "integrity": "sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 8" + "node": ">=12" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.11.tgz", + "integrity": "sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 8" + "node": ">=12" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.11.tgz", + "integrity": "sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 8" + "node": ">=12" } }, - "node_modules/@parcel/bundler-default": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/bundler-default/-/bundler-default-2.6.2.tgz", - "integrity": "sha512-XIa3had/MIaTGgRFkHApXwytYs77k4geaNcmlb6nzmAABcYjW1CLYh83Zt0AbzLFsDT9ZcRY3u2UjhNf6efSaw==", - "dependencies": { - "@parcel/diagnostic": "2.6.2", - "@parcel/hash": "2.6.2", - "@parcel/plugin": "2.6.2", - "@parcel/utils": "2.6.2", - "nullthrows": "^1.1.1" - }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.11.tgz", + "integrity": "sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 12.0.0", - "parcel": "^2.6.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": ">=12" } }, - "node_modules/@parcel/cache": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/cache/-/cache-2.6.2.tgz", - "integrity": "sha512-hhJ6AsEGybeQZd9c/GYqfcKTgZKQXu3Xih6TlnP3gdR3KZoJOnb40ovHD1yYg4COvfcXThKP1cVJ18J6rcv3IA==", - "dependencies": { - "@parcel/fs": "2.6.2", - "@parcel/logger": "2.6.2", - "@parcel/utils": "2.6.2", - "lmdb": "2.5.2" - }, + "node_modules/@esbuild/linux-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.11.tgz", + "integrity": "sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "peerDependencies": { - "@parcel/core": "^2.6.2" + "node": ">=12" } }, - "node_modules/@parcel/cache/node_modules/@lmdb/lmdb-darwin-arm64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-2.5.2.tgz", - "integrity": "sha512-+F8ioQIUN68B4UFiIBYu0QQvgb9FmlKw2ctQMSBfW2QBrZIxz9vD9jCGqTCPqZBRbPHAS/vG1zSXnKqnS2ch/A==", + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.11.tgz", + "integrity": "sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==", "cpu": [ - "arm64" + "x64" ], "optional": true, "os": [ - "darwin" - ] + "netbsd" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/@parcel/cache/node_modules/@lmdb/lmdb-darwin-x64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-2.5.2.tgz", - "integrity": "sha512-KvPH56KRLLx4KSfKBx0m1r7GGGUMXm0jrKmNE7plbHlesZMuPJICtn07HYgQhj1LNsK7Yqwuvnqh1QxhJnF1EA==", + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.11.tgz", + "integrity": "sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==", "cpu": [ "x64" ], "optional": true, "os": [ - "darwin" - ] + "openbsd" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/@parcel/cache/node_modules/@lmdb/lmdb-linux-arm": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-2.5.2.tgz", - "integrity": "sha512-5kQAP21hAkfW5Bl+e0P57dV4dGYnkNIpR7f/GAh6QHlgXx+vp/teVj4PGRZaKAvt0GX6++N6hF8NnGElLDuIDw==", + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.11.tgz", + "integrity": "sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==", "cpu": [ - "arm" + "x64" ], "optional": true, "os": [ - "linux" - ] + "sunos" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/@parcel/cache/node_modules/@lmdb/lmdb-linux-arm64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-2.5.2.tgz", - "integrity": "sha512-aLl89VHL/wjhievEOlPocoefUyWdvzVrcQ/MHQYZm2JfV1jUsrbr/ZfkPPUFvZBf+VSE+Q0clWs9l29PCX1hTQ==", + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.11.tgz", + "integrity": "sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==", "cpu": [ "arm64" ], "optional": true, "os": [ - "linux" - ] + "win32" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/@parcel/cache/node_modules/@lmdb/lmdb-linux-x64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-2.5.2.tgz", - "integrity": "sha512-xUdUfwDJLGjOUPH3BuPBt0NlIrR7f/QHKgu3GZIXswMMIihAekj2i97oI0iWG5Bok/b+OBjHPfa8IU9velnP/Q==", + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.11.tgz", + "integrity": "sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==", "cpu": [ - "x64" + "ia32" ], "optional": true, "os": [ - "linux" - ] + "win32" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/@parcel/cache/node_modules/@lmdb/lmdb-win32-x64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.5.2.tgz", - "integrity": "sha512-zrBczSbXKxEyK2ijtbRdICDygRqWSRPpZMN5dD1T8VMEW5RIhIbwFWw2phDRXuBQdVDpSjalCIUMWMV2h3JaZA==", + "node_modules/@esbuild/win32-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.11.tgz", + "integrity": "sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==", "cpu": [ "x64" ], "optional": true, "os": [ "win32" - ] - }, - "node_modules/@parcel/cache/node_modules/lmdb": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-2.5.2.tgz", - "integrity": "sha512-V5V5Xa2Hp9i2XsbDALkBTeHXnBXh/lEmk9p22zdr7jtuOIY9TGhjK6vAvTpOOx9IKU4hJkRWZxn/HsvR1ELLtA==", - "hasInstallScript": true, - "dependencies": { - "msgpackr": "^1.5.4", - "node-addon-api": "^4.3.0", - "node-gyp-build-optional-packages": "5.0.3", - "ordered-binary": "^1.2.4", - "weak-lru-cache": "^1.2.2" - }, - "optionalDependencies": { - "@lmdb/lmdb-darwin-arm64": "2.5.2", - "@lmdb/lmdb-darwin-x64": "2.5.2", - "@lmdb/lmdb-linux-arm": "2.5.2", - "@lmdb/lmdb-linux-arm64": "2.5.2", - "@lmdb/lmdb-linux-x64": "2.5.2", - "@lmdb/lmdb-win32-x64": "2.5.2" - } - }, - "node_modules/@parcel/cache/node_modules/node-addon-api": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" - }, - "node_modules/@parcel/codeframe": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/codeframe/-/codeframe-2.6.2.tgz", - "integrity": "sha512-oFlHr6HCaYYsB4SHkU+gn9DKtbzvv3/4NdwMX0/6NAKyYVI7inEsXyPGw2Bbd2ZCFatW9QJZUETF0etvh5AEfQ==", - "dependencies": { - "chalk": "^4.1.0" - }, + ], "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": ">=12" } }, - "node_modules/@parcel/codeframe/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, + "node_modules/@fastify/busboy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", + "dev": true, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=14" } }, - "node_modules/@parcel/codeframe/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@floating-ui/core": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.0.tgz", + "integrity": "sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "@floating-ui/utils": "^0.2.1" } }, - "node_modules/@parcel/codeframe/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@floating-ui/dom": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.3.tgz", + "integrity": "sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==", "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "@floating-ui/core": "^1.0.0", + "@floating-ui/utils": "^0.2.0" } }, - "node_modules/@parcel/codeframe/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/@parcel/codeframe/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } + "node_modules/@floating-ui/utils": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz", + "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==" }, - "node_modules/@parcel/codeframe/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@formatjs/ecma402-abstract": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.18.2.tgz", + "integrity": "sha512-+QoPW4csYALsQIl8GbN14igZzDbuwzcpWrku9nyMXlaqAlwRBgl5V+p0vWMGFqHOw37czNXaP/lEk4wbLgcmtA==", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "@formatjs/intl-localematcher": "0.5.4", + "tslib": "^2.4.0" } }, - "node_modules/@parcel/compressor-raw": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/compressor-raw/-/compressor-raw-2.6.2.tgz", - "integrity": "sha512-P3c8jjV5HVs+fNDjhvq7PtHXNm687nit1iwTS5VAt+ScXKhKBhoIJ56q+9opcw0jnXVjAAgZqcRZ50oAJBGdKw==", + "node_modules/@formatjs/fast-memoize": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.0.tgz", + "integrity": "sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==", "dependencies": { - "@parcel/plugin": "2.6.2" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.6.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "tslib": "^2.4.0" } }, - "node_modules/@parcel/core": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/core/-/core-2.6.2.tgz", - "integrity": "sha512-JlKS3Ux0ngmdooSBbzQLShHJdsapF9E7TGMo1hFaHRquZip/DaqzvysYrgMJlDuCoLArciq5ei7ZKzGeK9zexA==", - "dependencies": { - "@mischnic/json-sourcemap": "^0.1.0", - "@parcel/cache": "2.6.2", - "@parcel/diagnostic": "2.6.2", - "@parcel/events": "2.6.2", - "@parcel/fs": "2.6.2", - "@parcel/graph": "2.6.2", - "@parcel/hash": "2.6.2", - "@parcel/logger": "2.6.2", - "@parcel/package-manager": "2.6.2", - "@parcel/plugin": "2.6.2", - "@parcel/source-map": "^2.0.0", - "@parcel/types": "2.6.2", - "@parcel/utils": "2.6.2", - "@parcel/workers": "2.6.2", - "abortcontroller-polyfill": "^1.1.9", - "base-x": "^3.0.8", - "browserslist": "^4.6.6", - "clone": "^2.1.1", - "dotenv": "^7.0.0", - "dotenv-expand": "^5.1.0", - "json5": "^2.2.0", - "msgpackr": "^1.5.4", - "nullthrows": "^1.1.1", - "semver": "^5.7.1" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node_modules/@formatjs/icu-messageformat-parser": { + "version": "2.7.6", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.6.tgz", + "integrity": "sha512-etVau26po9+eewJKYoiBKP6743I1br0/Ie00Pb/S/PtmYfmjTcOn2YCh2yNkSZI12h6Rg+BOgQYborXk46BvkA==", + "dependencies": { + "@formatjs/ecma402-abstract": "1.18.2", + "@formatjs/icu-skeleton-parser": "1.8.0", + "tslib": "^2.4.0" } }, - "node_modules/@parcel/core/node_modules/dotenv": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-7.0.0.tgz", - "integrity": "sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==", - "engines": { - "node": ">=6" + "node_modules/@formatjs/icu-skeleton-parser": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.0.tgz", + "integrity": "sha512-QWLAYvM0n8hv7Nq5BEs4LKIjevpVpbGLAJgOaYzg9wABEoX1j0JO1q2/jVkO6CVlq0dbsxZCngS5aXbysYueqA==", + "dependencies": { + "@formatjs/ecma402-abstract": "1.18.2", + "tslib": "^2.4.0" } }, - "node_modules/@parcel/core/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "bin": { - "semver": "bin/semver" + "node_modules/@formatjs/intl-localematcher": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.4.tgz", + "integrity": "sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==", + "dependencies": { + "tslib": "^2.4.0" } }, - "node_modules/@parcel/diagnostic": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/diagnostic/-/diagnostic-2.6.2.tgz", - "integrity": "sha512-3ODSBkKVihENU763z1/1DhGAWFhYWRxOCOShC72KXp+GFnSgGiBsxclu8NBa/N948Rzp8lqQI8U1nLcKkh0O/w==", - "dependencies": { - "@mischnic/json-sourcemap": "^0.1.0", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/events": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/events/-/events-2.6.2.tgz", - "integrity": "sha512-IaCjOeA5ercdFVi1EZOmUHhGfIysmCUgc2Th9hMugSFO0I3GzRsBcAdP6XPfWm+TV6sQ/qZRfdk/drUxoAupnw==", - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } + "node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" }, - "node_modules/@parcel/fs": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-2.6.2.tgz", - "integrity": "sha512-mIhqdF3tjgeoIGqW7Nc/xfM2ClID7o8livwUe5lpQEP+ZaIBiMigXs6ckv3WToCACK+3uylrSD2A/HmlhrxMqQ==", + "node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", "dependencies": { - "@parcel/fs-search": "2.6.2", - "@parcel/types": "2.6.2", - "@parcel/utils": "2.6.2", - "@parcel/watcher": "^2.0.0", - "@parcel/workers": "2.6.2" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "peerDependencies": { - "@parcel/core": "^2.6.2" + "@hapi/hoek": "^9.0.0" } }, - "node_modules/@parcel/fs-search": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/fs-search/-/fs-search-2.6.2.tgz", - "integrity": "sha512-4STid1zqtGnmGjHD/2TG2g/zPDiCTtE3IAS24QYH3eiUAz2uoKGgEqd2tZbZ2yI96jtCuIhC1bzVu8Hbykls7w==", + "node_modules/@internationalized/date": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.5.2.tgz", + "integrity": "sha512-vo1yOMUt2hzp63IutEaTUxROdvQg1qlMRsbCvbay2AK2Gai7wIgCyK5weEX3nHkiLgo4qCXHijFNC/ILhlRpOQ==", "dependencies": { - "detect-libc": "^1.0.3" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "@swc/helpers": "^0.5.0" } }, - "node_modules/@parcel/graph": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/graph/-/graph-2.6.2.tgz", - "integrity": "sha512-DPH4G/RBFJWayIN2fnhDXqhUw75n7k15YsGzdDKiXuwwz4wMOjoL4cyrI6zOf1SIyh3guRmeTYJ4jjPzwrLYww==", + "node_modules/@internationalized/message": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@internationalized/message/-/message-3.1.2.tgz", + "integrity": "sha512-MHAWsZWz8jf6jFPZqpTudcCM361YMtPIRu9CXkYmKjJ/0R3pQRScV5C0zS+Qi50O5UAm8ecKhkXx6mWDDcF6/g==", "dependencies": { - "@parcel/utils": "2.6.2", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "@swc/helpers": "^0.5.0", + "intl-messageformat": "^10.1.0" } }, - "node_modules/@parcel/hash": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/hash/-/hash-2.6.2.tgz", - "integrity": "sha512-tFB+cJU1Wqag6WyJgsmx3nx+xhmjcNZqtWh/MtK1lHNnZdDRk6bjr7SapnygBwruz+SmSt5bbdVThcpk2dRCcA==", + "node_modules/@internationalized/number": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.5.1.tgz", + "integrity": "sha512-N0fPU/nz15SwR9IbfJ5xaS9Ss/O5h1sVXMZf43vc9mxEG48ovglvvzBjF53aHlq20uoR6c+88CrIXipU/LSzwg==", "dependencies": { - "detect-libc": "^1.0.3", - "xxhash-wasm": "^0.4.2" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "@swc/helpers": "^0.5.0" } }, - "node_modules/@parcel/logger": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-2.6.2.tgz", - "integrity": "sha512-Sz5YGCj1DbEiX0/G8Uw97LLZ0uEK+qtWcRAkHNpJpeMiSqDiRNevxXltz42EcLo+oCh4d4wyiVzwi9mNwzhS/Q==", + "node_modules/@internationalized/string": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@internationalized/string/-/string-3.2.1.tgz", + "integrity": "sha512-vWQOvRIauvFMzOO+h7QrdsJmtN1AXAFVcaLWP9AseRN2o7iHceZ6bIXhBD4teZl8i91A3gxKnWBlGgjCwU6MFQ==", "dependencies": { - "@parcel/diagnostic": "2.6.2", - "@parcel/events": "2.6.2" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "@swc/helpers": "^0.5.0" } }, - "node_modules/@parcel/markdown-ansi": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/markdown-ansi/-/markdown-ansi-2.6.2.tgz", - "integrity": "sha512-N/h9J4eibhc+B+krzvPMzFUWL37GudBIZBa7XSLkcuH6MnYYfh6rrMvhIyyESwk6VkcZNVzAeZrGQqxEs0dHDQ==", + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dependencies": { - "chalk": "^4.1.0" + "@sinclair/typebox": "^0.27.8" }, "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@parcel/markdown-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dependencies": { - "color-convert": "^2.0.1" + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@parcel/markdown-ansi/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=6.0.0" } }, - "node_modules/@parcel/markdown-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "engines": { - "node": ">=7.0.0" + "node": ">=6.0.0" } }, - "node_modules/@parcel/markdown-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/@parcel/markdown-ansi/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "engines": { - "node": ">=8" + "node": ">=6.0.0" } }, - "node_modules/@parcel/markdown-ansi/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, - "node_modules/@parcel/namer-default": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/namer-default/-/namer-default-2.6.2.tgz", - "integrity": "sha512-mp7bx/BQaIuohmZP0uE+gAmDBzzH0Yu8F4yCtE611lc6i0mou+nWRhzyKLNC/ieuI8DB3BFh2QQKeTxJn4W0qg==", - "dependencies": { - "@parcel/diagnostic": "2.6.2", - "@parcel/plugin": "2.6.2", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.6.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, - "node_modules/@parcel/node-resolver-core": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/node-resolver-core/-/node-resolver-core-2.6.2.tgz", - "integrity": "sha512-4b2L5QRYlTybvv3+TIRtwg4PPJXy+cRShCBa8eu1K0Fj297Afe8MOZrcVV+RIr2KPMIRXcIJoqDmOhyci/DynA==", + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dependencies": { - "@parcel/diagnostic": "2.6.2", - "@parcel/utils": "2.6.2", - "nullthrows": "^1.1.1", - "semver": "^5.7.1" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@parcel/node-resolver-core/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "bin": { - "semver": "bin/semver" - } + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==" }, - "node_modules/@parcel/optimizer-terser": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-terser/-/optimizer-terser-2.6.2.tgz", - "integrity": "sha512-ZSEVQ3G3zOiVPeHvH+BrHegZybrQj9kWQAaAA92leSqbvf6UaX4xqXbGRg2OttNFtbGYBzIl28Zm4t2SLeUIuA==", + "node_modules/@mdx-js/mdx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.0.1.tgz", + "integrity": "sha512-eIQ4QTrOWyL3LWEe/bu6Taqzq2HQvHcyTMaOrI95P2/LmJE7AsfPfgJGuFLPVqBUE1BC1rik3VIhU+s9u72arA==", "dependencies": { - "@parcel/diagnostic": "2.6.2", - "@parcel/plugin": "2.6.2", - "@parcel/source-map": "^2.0.0", - "@parcel/utils": "2.6.2", - "nullthrows": "^1.1.1", - "terser": "^5.2.0" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.6.2" + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdx": "^2.0.0", + "collapse-white-space": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-build-jsx": "^3.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-util-to-js": "^2.0.0", + "estree-walker": "^3.0.0", + "hast-util-to-estree": "^3.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "markdown-extensions": "^2.0.0", + "periscopic": "^3.0.0", + "remark-mdx": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "source-map": "^0.7.0", + "unified": "^11.0.0", + "unist-util-position-from-estree": "^2.0.0", + "unist-util-stringify-position": "^4.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://opencollective.com/unified" } }, - "node_modules/@parcel/package-manager": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/package-manager/-/package-manager-2.6.2.tgz", - "integrity": "sha512-xGMqTgnwTE3rgzYwUZMKxR8fzmP5iSYz/gj2H8FR3pEmwh/8xCMtNjTSth+hPVGuqgRZ6JxwpfdY/fXdZ61ViQ==", + "node_modules/@mdx-js/react": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.0.1.tgz", + "integrity": "sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A==", "dependencies": { - "@parcel/diagnostic": "2.6.2", - "@parcel/fs": "2.6.2", - "@parcel/logger": "2.6.2", - "@parcel/types": "2.6.2", - "@parcel/utils": "2.6.2", - "@parcel/workers": "2.6.2", - "semver": "^5.7.1" - }, - "engines": { - "node": ">= 12.0.0" + "@types/mdx": "^2.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://opencollective.com/unified" }, "peerDependencies": { - "@parcel/core": "^2.6.2" - } - }, - "node_modules/@parcel/package-manager/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "bin": { - "semver": "bin/semver" + "@types/react": ">=16", + "react": ">=16" } }, - "node_modules/@parcel/packager-js": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/packager-js/-/packager-js-2.6.2.tgz", - "integrity": "sha512-fm5rKWtaExR0W+UEKWivXNPysRFxuBCdskdxDByb1J1JeGMvp7dJElbi8oXDAQM4MnM5EyG7cg47SlMZNTLm4A==", + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dependencies": { - "@parcel/diagnostic": "2.6.2", - "@parcel/hash": "2.6.2", - "@parcel/plugin": "2.6.2", - "@parcel/source-map": "^2.0.0", - "@parcel/utils": "2.6.2", - "globals": "^13.2.0", - "nullthrows": "^1.1.1" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, "engines": { - "node": ">= 12.0.0", - "parcel": "^2.6.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": ">= 8" } }, - "node_modules/@parcel/packager-js/node_modules/globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", - "dependencies": { - "type-fest": "^0.20.2" - }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 8" } }, - "node_modules/@parcel/packager-raw": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/packager-raw/-/packager-raw-2.6.2.tgz", - "integrity": "sha512-Rl3ZkMtMjb+LEvRowijDD8fibUAS6rWK0/vZQMk9cDNYCP2gCpZayLk0HZIGxneeTbosf/0sbngHq4VeRQOnQA==", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dependencies": { - "@parcel/plugin": "2.6.2" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, "engines": { - "node": ">= 12.0.0", - "parcel": "^2.6.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": ">= 8" } }, - "node_modules/@parcel/plugin": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/plugin/-/plugin-2.6.2.tgz", - "integrity": "sha512-wbbWsM23Pr+8xtLSvf+UopXdVYlpKCCx6PuuZaZcKo+9IcDCWoGXD4M8Kkz14qBmkFn5uM00mULUqmVdSibB2w==", - "dependencies": { - "@parcel/types": "2.6.2" - }, + "node_modules/@pnpm/config.env-replace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", + "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==", "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": ">=12.22.0" } }, - "node_modules/@parcel/reporter-dev-server": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/reporter-dev-server/-/reporter-dev-server-2.6.2.tgz", - "integrity": "sha512-5QtL3ETMFL161jehlIK6rjBM+Pqk5cMhr60s9yLYqE1GY4M4gMj+Act+FXViyM6gmMA38cPxDvUsxTKBYXpFCw==", + "node_modules/@pnpm/network.ca-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", + "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", "dependencies": { - "@parcel/plugin": "2.6.2", - "@parcel/utils": "2.6.2" + "graceful-fs": "4.2.10" }, "engines": { - "node": ">= 12.0.0", - "parcel": "^2.6.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": ">=12.22.0" } }, - "node_modules/@parcel/resolver-default": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/resolver-default/-/resolver-default-2.6.2.tgz", - "integrity": "sha512-Lo5sWb5QkjWvdBr+TdmAF6Mszb/sMldBBatc1osQTkHXCy679VMH+lfyiWxHbwK+F1pmdMeBJpYcMxvrgT8EsA==", + "node_modules/@pnpm/network.ca-file/node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "node_modules/@pnpm/npm-conf": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz", + "integrity": "sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==", "dependencies": { - "@parcel/node-resolver-core": "2.6.2", - "@parcel/plugin": "2.6.2" + "@pnpm/config.env-replace": "^1.1.0", + "@pnpm/network.ca-file": "^1.0.1", + "config-chain": "^1.1.11" }, "engines": { - "node": ">= 12.0.0", - "parcel": "^2.6.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": ">=12" } }, - "node_modules/@parcel/runtime-browser-hmr": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.6.2.tgz", - "integrity": "sha512-M4X0+7dyfdI6smwGUGjGXb8Ns3HX7ZrTemyq4Gc7zp7P/5gWjR8i9eISz46sXmF9bf01a/4dKZpoCC9un1pH1g==", + "node_modules/@polka/url": { + "version": "1.0.0-next.25", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.25.tgz", + "integrity": "sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==" + }, + "node_modules/@react-aria/focus": { + "version": "3.16.2", + "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.16.2.tgz", + "integrity": "sha512-Rqo9ummmgotESfypzFjI3uh58yMpL+E+lJBbQuXkBM0u0cU2YYzu0uOrFrq3zcHk997udZvq1pGK/R+2xk9B7g==", "dependencies": { - "@parcel/plugin": "2.6.2", - "@parcel/utils": "2.6.2" + "@react-aria/interactions": "^3.21.1", + "@react-aria/utils": "^3.23.2", + "@react-types/shared": "^3.22.1", + "@swc/helpers": "^0.5.0", + "clsx": "^2.0.0" }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.6.2" + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/i18n": { + "version": "3.10.2", + "resolved": "https://registry.npmjs.org/@react-aria/i18n/-/i18n-3.10.2.tgz", + "integrity": "sha512-Z1ormoIvMOI4mEdcFLYsoJy9w/EzBdBmgfLP+S/Ah+1xwQOXpgwZxiKOhYHpWa0lf6hkKJL34N9MHJvCJ5Crvw==", + "dependencies": { + "@internationalized/date": "^3.5.2", + "@internationalized/message": "^3.1.2", + "@internationalized/number": "^3.5.1", + "@internationalized/string": "^3.2.1", + "@react-aria/ssr": "^3.9.2", + "@react-aria/utils": "^3.23.2", + "@react-types/shared": "^3.22.1", + "@swc/helpers": "^0.5.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" } }, - "node_modules/@parcel/runtime-js": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/runtime-js/-/runtime-js-2.6.2.tgz", - "integrity": "sha512-0S3JFwgvs6FmEx2dHta9R0Sfu8vCnFAm4i7Y4efGHtAcTrF2CHjyiz4/hG+RQGJ70eoWW463Q+8qt6EKbkaOBQ==", + "node_modules/@react-aria/interactions": { + "version": "3.21.1", + "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.21.1.tgz", + "integrity": "sha512-AlHf5SOzsShkHfV8GLLk3v9lEmYqYHURKcXWue0JdYbmquMRkUsf/+Tjl1+zHVAQ8lKqRnPYbTmc4AcZbqxltw==", "dependencies": { - "@parcel/plugin": "2.6.2", - "@parcel/utils": "2.6.2", - "nullthrows": "^1.1.1" + "@react-aria/ssr": "^3.9.2", + "@react-aria/utils": "^3.23.2", + "@react-types/shared": "^3.22.1", + "@swc/helpers": "^0.5.0" }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.6.2" + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/overlays": { + "version": "3.21.1", + "resolved": "https://registry.npmjs.org/@react-aria/overlays/-/overlays-3.21.1.tgz", + "integrity": "sha512-djEBDF+TbIIOHWWNpdm19+z8xtY8U+T+wKVQg/UZ6oWnclSqSWeGl70vu73Cg4HVBJ4hKf1SRx4Z/RN6VvH4Yw==", + "dependencies": { + "@react-aria/focus": "^3.16.2", + "@react-aria/i18n": "^3.10.2", + "@react-aria/interactions": "^3.21.1", + "@react-aria/ssr": "^3.9.2", + "@react-aria/utils": "^3.23.2", + "@react-aria/visually-hidden": "^3.8.10", + "@react-stately/overlays": "^3.6.5", + "@react-types/button": "^3.9.2", + "@react-types/overlays": "^3.8.5", + "@react-types/shared": "^3.22.1", + "@swc/helpers": "^0.5.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" } }, - "node_modules/@parcel/runtime-react-refresh": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.6.2.tgz", - "integrity": "sha512-DJTm5D/tUAGZm0o3ndDOPbKwdYrobuvm4jvkPq31LdEUqVvyuzBAMlqQFHc1yJEJDRRWOIQwQP9Y0NQbJmXFfg==", + "node_modules/@react-aria/ssr": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.2.tgz", + "integrity": "sha512-0gKkgDYdnq1w+ey8KzG9l+H5Z821qh9vVjztk55rUg71vTk/Eaebeir+WtzcLLwTjw3m/asIjx8Y59y1lJZhBw==", "dependencies": { - "@parcel/plugin": "2.6.2", - "@parcel/utils": "2.6.2", - "react-error-overlay": "6.0.9", - "react-refresh": "^0.9.0" + "@swc/helpers": "^0.5.0" }, "engines": { - "node": ">= 12.0.0", - "parcel": "^2.6.2" + "node": ">= 12" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" } }, - "node_modules/@parcel/runtime-react-refresh/node_modules/react-refresh": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.9.0.tgz", - "integrity": "sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==", - "engines": { - "node": ">=0.10.0" + "node_modules/@react-aria/tooltip": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@react-aria/tooltip/-/tooltip-3.7.2.tgz", + "integrity": "sha512-6jXOSGPao3gPgUQWLbH2r/jxGMqIaIKrJgfwu9TQrh+UkwwiTYW20EpEDCYY2nRFlcoi7EYAiPDSEbHCwXS7Lg==", + "dependencies": { + "@react-aria/focus": "^3.16.2", + "@react-aria/interactions": "^3.21.1", + "@react-aria/utils": "^3.23.2", + "@react-stately/tooltip": "^3.4.7", + "@react-types/shared": "^3.22.1", + "@react-types/tooltip": "^3.4.7", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" } }, - "node_modules/@parcel/runtime-service-worker": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/runtime-service-worker/-/runtime-service-worker-2.6.2.tgz", - "integrity": "sha512-9jV+RwVEeDUI5+eLy8j1tapTNoHHGOY2+JUprcObQkQ8fux7KltQBJWFhpkUdGtz5LTCNXtj9tdycFtS5lmSzg==", + "node_modules/@react-aria/utils": { + "version": "3.23.2", + "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.23.2.tgz", + "integrity": "sha512-yznR9jJ0GG+YJvTMZxijQwVp+ahP66DY0apZf7X+dllyN+ByEDW+yaL1ewYPIpugxVzH5P8jhnBXsIyHKN411g==", "dependencies": { - "@parcel/plugin": "2.6.2", - "@parcel/utils": "2.6.2", - "nullthrows": "^1.1.1" + "@react-aria/ssr": "^3.9.2", + "@react-stately/utils": "^3.9.1", + "@react-types/shared": "^3.22.1", + "@swc/helpers": "^0.5.0", + "clsx": "^2.0.0" }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.6.2" + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/visually-hidden": { + "version": "3.8.10", + "resolved": "https://registry.npmjs.org/@react-aria/visually-hidden/-/visually-hidden-3.8.10.tgz", + "integrity": "sha512-np8c4wxdbE7ZrMv/bnjwEfpX0/nkWy9sELEb0sK8n4+HJ+WycoXXrVxBUb9tXgL/GCx5ReeDQChjQWwajm/z3A==", + "dependencies": { + "@react-aria/interactions": "^3.21.1", + "@react-aria/utils": "^3.23.2", + "@react-types/shared": "^3.22.1", + "@swc/helpers": "^0.5.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" } }, - "node_modules/@parcel/source-map": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@parcel/source-map/-/source-map-2.1.1.tgz", - "integrity": "sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew==", + "node_modules/@react-stately/overlays": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/@react-stately/overlays/-/overlays-3.6.5.tgz", + "integrity": "sha512-U4rCFj6TPJPXLUvYXAcvh+yP/CO2W+7f0IuqP7ZZGE+Osk9qFkT+zRK5/6ayhBDFpmueNfjIEAzT9gYPQwNHFw==", "dependencies": { - "detect-libc": "^1.0.3" + "@react-stately/utils": "^3.9.1", + "@react-types/overlays": "^3.8.5", + "@swc/helpers": "^0.5.0" }, - "engines": { - "node": "^12.18.3 || >=14" + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" } }, - "node_modules/@parcel/transformer-js": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/transformer-js/-/transformer-js-2.6.2.tgz", - "integrity": "sha512-uhXAMTjE/Q61amflV8qVpb73mj+mIdXIMH0cSks1/gDIAxcgIvWvrE14P4TvY6zJ1q1iRJRIRUN6cFSXqjjLSA==", + "node_modules/@react-stately/tooltip": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/@react-stately/tooltip/-/tooltip-3.4.7.tgz", + "integrity": "sha512-ACtRgBQ8rphBtsUaaxvEAM0HHN9PvMuyvL0vUHd7jvBDCVZJ6it1BKu9SBKjekBkoBOw9nemtkplh9R2CA6V8Q==", "dependencies": { - "@parcel/diagnostic": "2.6.2", - "@parcel/plugin": "2.6.2", - "@parcel/source-map": "^2.0.0", - "@parcel/utils": "2.6.2", - "@parcel/workers": "2.6.2", - "@swc/helpers": "^0.4.2", - "browserslist": "^4.6.6", - "detect-libc": "^1.0.3", - "nullthrows": "^1.1.1", - "regenerator-runtime": "^0.13.7", - "semver": "^5.7.1" + "@react-stately/overlays": "^3.6.5", + "@react-types/tooltip": "^3.4.7", + "@swc/helpers": "^0.5.0" }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.6.2" + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/utils": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.9.1.tgz", + "integrity": "sha512-yzw75GE0iUWiyps02BOAPTrybcsMIxEJlzXqtvllAb01O9uX5n0i3X+u2eCpj2UoDF4zS08Ps0jPgWxg8xEYtA==", + "dependencies": { + "@swc/helpers": "^0.5.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/button": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@react-types/button/-/button-3.9.2.tgz", + "integrity": "sha512-EnPTkGHZRtiwAoJy5q9lDjoG30bEzA/qnvKG29VVXKYAGeqY2IlFs1ypmU+z1X/CpJgPcG3I5cakM7yTVm3pSg==", + "dependencies": { + "@react-types/shared": "^3.22.1" }, "peerDependencies": { - "@parcel/core": "^2.6.2" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" } }, - "node_modules/@parcel/transformer-js/node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + "node_modules/@react-types/overlays": { + "version": "3.8.5", + "resolved": "https://registry.npmjs.org/@react-types/overlays/-/overlays-3.8.5.tgz", + "integrity": "sha512-4D7EEBQigD/m8hE68Ys8eloyyZFHHduqykSIgINJ0edmo0jygRbWlTwuhWFR9USgSP4dK54duN0Mvq0m4HEVEw==", + "dependencies": { + "@react-types/shared": "^3.22.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } }, - "node_modules/@parcel/transformer-js/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "bin": { - "semver": "bin/semver" + "node_modules/@react-types/shared": { + "version": "3.22.1", + "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.22.1.tgz", + "integrity": "sha512-PCpa+Vo6BKnRMuOEzy5zAZ3/H5tnQg1e80khMhK2xys0j6ZqzkgQC+fHMNZ7VDFNLqqNMj/o0eVeSBDh2POjkw==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" } }, - "node_modules/@parcel/transformer-json": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/transformer-json/-/transformer-json-2.6.2.tgz", - "integrity": "sha512-QGcIIvbPF/u10ihYvQhxXqb2QMXWSzcBxJrOSIXIl74TUGrWX05D5LmjDA/rzm/n/kvRnBkFNP60R/smYb8x+Q==", + "node_modules/@react-types/tooltip": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/@react-types/tooltip/-/tooltip-3.4.7.tgz", + "integrity": "sha512-rV4HZRQxLRNhe24yATOxnFQtGRUmsR7mqxMupXCmd1vrw8h+rdKlQv1zW2q8nALAKNmnRXZJHxYQ1SFzb98fgg==", "dependencies": { - "@parcel/plugin": "2.6.2", - "json5": "^2.2.0" + "@react-types/overlays": "^3.8.5", + "@react-types/shared": "^3.22.1" }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@sideway/address": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", + "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==" + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" + }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", "engines": { - "node": ">= 12.0.0", - "parcel": "^2.6.2" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://github.com/sindresorhus/is?sponsor=1" } }, - "node_modules/@parcel/transformer-raw": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/transformer-raw/-/transformer-raw-2.6.2.tgz", - "integrity": "sha512-CsofYq5g9Zj/FNmhya2R7Xp3WHlzz34mEdN69bds3azRYHCrl/TS33xXcp/9J+74SEIY1Ufh552o1cM3fnSrDQ==", + "node_modules/@slorber/remark-comment": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@slorber/remark-comment/-/remark-comment-1.0.0.tgz", + "integrity": "sha512-RCE24n7jsOj1M0UPvIQCHTe7fI0sFL4S2nwKVWwHyVr/wI/H8GosgsJGyhnsZoGFnD/P2hLf1mSbrrgSLN93NA==", "dependencies": { - "@parcel/plugin": "2.6.2" - }, + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.1.0", + "micromark-util-symbol": "^1.0.1" + } + }, + "node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz", + "integrity": "sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==", "engines": { - "node": ">= 12.0.0", - "parcel": "^2.6.2" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@parcel/transformer-react-refresh-wrap": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.6.2.tgz", - "integrity": "sha512-7EE68ebISz+oAHm64ZJbz6uJQT4aOoB8QiK3PvuY6+RsP7aK4/FEHGM1afW49KrZbP4lWjloEkcJm/88DfBiGw==", - "dependencies": { - "@parcel/plugin": "2.6.2", - "@parcel/utils": "2.6.2", - "react-refresh": "^0.9.0" - }, + "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==", "engines": { - "node": ">= 12.0.0", - "parcel": "^2.6.2" + "node": ">=14" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@parcel/transformer-react-refresh-wrap/node_modules/react-refresh": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.9.0.tgz", - "integrity": "sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==", + "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz", + "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==", "engines": { - "node": ">=0.10.0" + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@parcel/types": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/types/-/types-2.6.2.tgz", - "integrity": "sha512-MV8BFpCIs2jMUvK2RHqzkoiuOQ//JIbrD1zocA2YRW3zuPL/iABvbAABJoXpoPCKikVWOoCWASgBfWQo26VvJQ==", - "dependencies": { - "@parcel/cache": "2.6.2", - "@parcel/diagnostic": "2.6.2", - "@parcel/fs": "2.6.2", - "@parcel/package-manager": "2.6.2", - "@parcel/source-map": "^2.0.0", - "@parcel/workers": "2.6.2", - "utility-types": "^3.10.0" + "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.1.tgz", + "integrity": "sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@parcel/utils": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-2.6.2.tgz", - "integrity": "sha512-Ug7hpRxjgbY5AopW55nY7MmGMVmwmN+ihfCmxJkBUoESTG/3iq8uME7GjyOgW5DkQc2K7q62i8y8N0wCJT1u4Q==", - "dependencies": { - "@parcel/codeframe": "2.6.2", - "@parcel/diagnostic": "2.6.2", - "@parcel/hash": "2.6.2", - "@parcel/logger": "2.6.2", - "@parcel/markdown-ansi": "2.6.2", - "@parcel/source-map": "^2.0.0", - "chalk": "^4.1.0" + "node_modules/@svgr/babel-plugin-svg-dynamic-title": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.1.tgz", + "integrity": "sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-em-dimensions": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.1.tgz", + "integrity": "sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==", "engines": { - "node": ">= 12.0.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@parcel/utils/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" + "node_modules/@svgr/babel-plugin-transform-react-native-svg": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.1.tgz", + "integrity": "sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-svg-component": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.1.tgz", + "integrity": "sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==", "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@parcel/utils/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@svgr/babel-preset": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.5.1.tgz", + "integrity": "sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@svgr/babel-plugin-add-jsx-attribute": "^6.5.1", + "@svgr/babel-plugin-remove-jsx-attribute": "*", + "@svgr/babel-plugin-remove-jsx-empty-expression": "*", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^6.5.1", + "@svgr/babel-plugin-svg-dynamic-title": "^6.5.1", + "@svgr/babel-plugin-svg-em-dimensions": "^6.5.1", + "@svgr/babel-plugin-transform-react-native-svg": "^6.5.1", + "@svgr/babel-plugin-transform-svg-component": "^6.5.1" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@parcel/utils/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@svgr/core": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-6.5.1.tgz", + "integrity": "sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==", "dependencies": { - "color-name": "~1.1.4" + "@babel/core": "^7.19.6", + "@svgr/babel-preset": "^6.5.1", + "@svgr/plugin-jsx": "^6.5.1", + "camelcase": "^6.2.0", + "cosmiconfig": "^7.0.1" }, "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@parcel/utils/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/@parcel/utils/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, - "node_modules/@parcel/utils/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@svgr/hast-util-to-babel-ast": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.1.tgz", + "integrity": "sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==", "dependencies": { - "has-flag": "^4.0.0" + "@babel/types": "^7.20.0", + "entities": "^4.4.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, - "node_modules/@parcel/watcher": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.3.0.tgz", - "integrity": "sha512-pW7QaFiL11O0BphO+bq3MgqeX/INAk9jgBldVDYjlQPO4VddoZnF22TcF9onMhnLVHuNqBJeRf+Fj7eezi/+rQ==", - "hasInstallScript": true, + "node_modules/@svgr/plugin-jsx": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.5.1.tgz", + "integrity": "sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==", "dependencies": { - "detect-libc": "^1.0.3", - "is-glob": "^4.0.3", - "micromatch": "^4.0.5", - "node-addon-api": "^7.0.0" + "@babel/core": "^7.19.6", + "@svgr/babel-preset": "^6.5.1", + "@svgr/hast-util-to-babel-ast": "^6.5.1", + "svg-parser": "^2.0.4" }, "engines": { - "node": ">= 10.0.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "^6.0.0" + } + }, + "node_modules/@svgr/plugin-svgo": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-6.5.1.tgz", + "integrity": "sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ==", + "dependencies": { + "cosmiconfig": "^7.0.1", + "deepmerge": "^4.2.2", + "svgo": "^2.8.0" }, - "optionalDependencies": { - "@parcel/watcher-android-arm64": "2.3.0", - "@parcel/watcher-darwin-arm64": "2.3.0", - "@parcel/watcher-darwin-x64": "2.3.0", - "@parcel/watcher-freebsd-x64": "2.3.0", - "@parcel/watcher-linux-arm-glibc": "2.3.0", - "@parcel/watcher-linux-arm64-glibc": "2.3.0", - "@parcel/watcher-linux-arm64-musl": "2.3.0", - "@parcel/watcher-linux-x64-glibc": "2.3.0", - "@parcel/watcher-linux-x64-musl": "2.3.0", - "@parcel/watcher-win32-arm64": "2.3.0", - "@parcel/watcher-win32-ia32": "2.3.0", - "@parcel/watcher-win32-x64": "2.3.0" - } - }, - "node_modules/@parcel/watcher-android-arm64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.3.0.tgz", - "integrity": "sha512-f4o9eA3dgk0XRT3XhB0UWpWpLnKgrh1IwNJKJ7UJek7eTYccQ8LR7XUWFKqw6aEq5KUNlCcGvSzKqSX/vtWVVA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "android" - ], "engines": { - "node": ">= 10.0.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" } }, - "node_modules/@parcel/watcher-darwin-arm64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.3.0.tgz", - "integrity": "sha512-mKY+oijI4ahBMc/GygVGvEdOq0L4DxhYgwQqYAz/7yPzuGi79oXrZG52WdpGA1wLBPrYb0T8uBaGFo7I6rvSKw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], + "node_modules/@svgr/webpack": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-6.5.1.tgz", + "integrity": "sha512-cQ/AsnBkXPkEK8cLbv4Dm7JGXq2XrumKnL1dRpJD9rIO2fTIlJI9a1uCciYG1F2aUsox/hJQyNGbt3soDxSRkA==", + "dependencies": { + "@babel/core": "^7.19.6", + "@babel/plugin-transform-react-constant-elements": "^7.18.12", + "@babel/preset-env": "^7.19.4", + "@babel/preset-react": "^7.18.6", + "@babel/preset-typescript": "^7.18.6", + "@svgr/core": "^6.5.1", + "@svgr/plugin-jsx": "^6.5.1", + "@svgr/plugin-svgo": "^6.5.1" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, - "node_modules/@parcel/watcher-darwin-x64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.3.0.tgz", - "integrity": "sha512-20oBj8LcEOnLE3mgpy6zuOq8AplPu9NcSSSfyVKgfOhNAc4eF4ob3ldj0xWjGGbOF7Dcy1Tvm6ytvgdjlfUeow==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-freebsd-x64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.3.0.tgz", - "integrity": "sha512-7LftKlaHunueAEiojhCn+Ef2CTXWsLgTl4hq0pkhkTBFI3ssj2bJXmH2L67mKpiAD5dz66JYk4zS66qzdnIOgw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm-glibc": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.3.0.tgz", - "integrity": "sha512-1apPw5cD2xBv1XIHPUlq0cO6iAaEUQ3BcY0ysSyD9Kuyw4MoWm1DV+W9mneWI+1g6OeP6dhikiFE6BlU+AToTQ==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node_modules/@swc/helpers": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.8.tgz", + "integrity": "sha512-lruDGw3pnfM3wmZHeW7JuhkGQaJjPyiKjxeGhdmfoOT53Ic9qb5JLDNaK2HUdl1zLDeX28H221UvKjfdvSLVMg==", + "dependencies": { + "tslib": "^2.4.0" } }, - "node_modules/@parcel/watcher-linux-arm64-glibc": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.3.0.tgz", - "integrity": "sha512-mQ0gBSQEiq1k/MMkgcSB0Ic47UORZBmWoAWlMrTW6nbAGoLZP+h7AtUM7H3oDu34TBFFvjy4JCGP43JlylkTQA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" + "node_modules/@szmarczak/http-timer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", + "dependencies": { + "defer-to-connect": "^2.0.1" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm64-musl": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.3.0.tgz", - "integrity": "sha512-LXZAExpepJew0Gp8ZkJ+xDZaTQjLHv48h0p0Vw2VMFQ8A+RKrAvpFuPVCVwKJCr5SE+zvaG+Etg56qXvTDIedw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": ">=14.16" } }, - "node_modules/@parcel/watcher-linux-x64-glibc": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.3.0.tgz", - "integrity": "sha512-P7Wo91lKSeSgMTtG7CnBS6WrA5otr1K7shhSjKHNePVmfBHDoAOHYRXgUmhiNfbcGk0uMCHVcdbfxtuiZCHVow==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": ">=10.13.0" } }, - "node_modules/@parcel/watcher-linux-x64-musl": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.3.0.tgz", - "integrity": "sha512-+kiRE1JIq8QdxzwoYY+wzBs9YbJ34guBweTK8nlzLKimn5EQ2b2FSC+tAOpq302BuIMjyuUGvBiUhEcLIGMQ5g==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } + "node_modules/@tsconfig/node10": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==" }, - "node_modules/@parcel/watcher-win32-arm64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.3.0.tgz", - "integrity": "sha512-35gXCnaz1AqIXpG42evcoP2+sNL62gZTMZne3IackM+6QlfMcJLy3DrjuL6Iks7Czpd3j4xRBzez3ADCj1l7Aw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==" }, - "node_modules/@parcel/watcher-win32-ia32": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.3.0.tgz", - "integrity": "sha512-FJS/IBQHhRpZ6PiCjFt1UAcPr0YmCLHRbTc00IBTrelEjlmmgIVLeOx4MSXzx2HFEy5Jo5YdhGpxCuqCyDJ5ow==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==" }, - "node_modules/@parcel/watcher-win32-x64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.3.0.tgz", - "integrity": "sha512-dLx+0XRdMnVI62kU3wbXvbIRhLck4aE28bIGKbRGS7BJNt54IIj9+c/Dkqb+7DJEbHUZAX1bwaoM8PqVlHJmCA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==" }, - "node_modules/@parcel/workers": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-2.6.2.tgz", - "integrity": "sha512-wBgUjJQm+lDd12fPRUmk09+ujTA9DgwPdqylSFK0OtI/yT6A+2kArUqjp8IwWo2tCJXoMzXBne2XQIWKqMiN4Q==", + "node_modules/@types/acorn": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", + "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==", "dependencies": { - "@parcel/diagnostic": "2.6.2", - "@parcel/logger": "2.6.2", - "@parcel/types": "2.6.2", - "@parcel/utils": "2.6.2", - "chrome-trace-event": "^1.0.2", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "peerDependencies": { - "@parcel/core": "^2.6.2" + "@types/estree": "*" } }, - "node_modules/@percy/cli": { - "version": "1.27.4", - "resolved": "https://registry.npmjs.org/@percy/cli/-/cli-1.27.4.tgz", - "integrity": "sha512-eIM44ejCMFc/S2W7X0htV+lvvmf63x5CaBpsSoQ9LRc/W02zHVAwQYdFFUowZEK6G1EwJEPIUnDxuuEx9PLG5A==", - "dev": true, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", "dependencies": { - "@percy/cli-app": "1.27.4", - "@percy/cli-build": "1.27.4", - "@percy/cli-command": "1.27.4", - "@percy/cli-config": "1.27.4", - "@percy/cli-exec": "1.27.4", - "@percy/cli-snapshot": "1.27.4", - "@percy/cli-upload": "1.27.4", - "@percy/client": "1.27.4", - "@percy/logger": "1.27.4" - }, - "bin": { - "percy": "bin/run.cjs" - }, - "engines": { - "node": ">=14" + "@types/connect": "*", + "@types/node": "*" } }, - "node_modules/@percy/cli-app": { - "version": "1.27.4", - "resolved": "https://registry.npmjs.org/@percy/cli-app/-/cli-app-1.27.4.tgz", - "integrity": "sha512-av/s6K2QmQgq4SCQQ+3lmteNHeQtIpMeBjMfSgxs9zeBoPVOMx5hXrdsi6l7ChvOLXyYfzl/TbEuwrSDXiA8mw==", - "dev": true, + "node_modules/@types/bonjour": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", "dependencies": { - "@percy/cli-command": "1.27.4", - "@percy/cli-exec": "1.27.4" - }, - "engines": { - "node": ">=14" + "@types/node": "*" } }, - "node_modules/@percy/cli-build": { - "version": "1.27.4", - "resolved": "https://registry.npmjs.org/@percy/cli-build/-/cli-build-1.27.4.tgz", - "integrity": "sha512-tzCAcV0sAw608Gr/Q6NtPvVkA8dnIehMzvEXNIN3WP9DkprOgu7MYuexN0fZXf4vSroDWYXT87pHYP8YrrnDag==", - "dev": true, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "dependencies": { - "@percy/cli-command": "1.27.4" - }, - "engines": { - "node": ">=14" + "@types/node": "*" } }, - "node_modules/@percy/cli-command": { - "version": "1.27.4", - "resolved": "https://registry.npmjs.org/@percy/cli-command/-/cli-command-1.27.4.tgz", - "integrity": "sha512-YDKeeOr1MvksDOnc2ZKQ/XuERGrWwzuT/vWZ9it8L+0SyPj28UbklDu0e9zBgPsSDfxJlIvsWXRuHNGHsweKXg==", - "dev": true, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", "dependencies": { - "@percy/config": "1.27.4", - "@percy/core": "1.27.4", - "@percy/logger": "1.27.4" - }, - "bin": { - "percy-cli-readme": "bin/readme.js" - }, - "engines": { - "node": ">=14" + "@types/express-serve-static-core": "*", + "@types/node": "*" } }, - "node_modules/@percy/cli-config": { - "version": "1.27.4", - "resolved": "https://registry.npmjs.org/@percy/cli-config/-/cli-config-1.27.4.tgz", - "integrity": "sha512-wFtQwPw4LEqpcZ6ac6WtejyGrvrrzzLdyvXNvsCPQLE47qXnXVXJ+E99k9KGcjavtUuPxrbWtX996Fz9Fb5hoQ==", - "dev": true, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", "dependencies": { - "@percy/cli-command": "1.27.4" - }, - "engines": { - "node": ">=14" + "@types/ms": "*" } }, - "node_modules/@percy/cli-exec": { - "version": "1.27.4", - "resolved": "https://registry.npmjs.org/@percy/cli-exec/-/cli-exec-1.27.4.tgz", - "integrity": "sha512-aSDLvzXXdwJso+p5iI4iTOa7AYzgFdRoqY9ij/R5aAL9juNkvG5QatB1bkUNbJabKFe16t7iigt4eJnlS0R13A==", - "dev": true, + "node_modules/@types/eslint": { + "version": "8.56.7", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.7.tgz", + "integrity": "sha512-SjDvI/x3zsZnOkYZ3lCt9lOZWZLB2jIlNKz+LBgCtDurK0JZcwucxYHn1w2BJkD34dgX9Tjnak0txtq4WTggEA==", "dependencies": { - "@percy/cli-command": "1.27.4", - "cross-spawn": "^7.0.3", - "which": "^2.0.2" - }, - "engines": { - "node": ">=14" + "@types/estree": "*", + "@types/json-schema": "*" } }, - "node_modules/@percy/cli-snapshot": { - "version": "1.27.4", - "resolved": "https://registry.npmjs.org/@percy/cli-snapshot/-/cli-snapshot-1.27.4.tgz", - "integrity": "sha512-dDT2UpeP6X5NcMdj3AKLhHGmnobwzlXsHa52C+ne3kg3HSZgaXH9OsNY866Xe7onvcsZxvnRKDYHmWW6kC3cKQ==", - "dev": true, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", "dependencies": { - "@percy/cli-command": "1.27.4", - "yaml": "^2.0.0" - }, - "engines": { - "node": ">=14" + "@types/eslint": "*", + "@types/estree": "*" } }, - "node_modules/@percy/cli-upload": { - "version": "1.27.4", - "resolved": "https://registry.npmjs.org/@percy/cli-upload/-/cli-upload-1.27.4.tgz", - "integrity": "sha512-+4mcEOUydFubyMWVzQjPV79sL1Jar95SR7Yr7Vp4FBoE0iq0CbaHoJtyOWDfwvHYYp4rRjVMxpY0ha3jnmF0mA==", - "dev": true, - "dependencies": { - "@percy/cli-command": "1.27.4", - "fast-glob": "^3.2.11", - "image-size": "^1.0.0" - }, - "engines": { - "node": ">=14" - } + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" }, - "node_modules/@percy/client": { - "version": "1.27.4", - "resolved": "https://registry.npmjs.org/@percy/client/-/client-1.27.4.tgz", - "integrity": "sha512-1F8ulTJhfk4/Lgj1Cn0blaRd8vTRJDxahAGseTbfrnZ2PHsftPZ65/5nCHPtpdD/2CE8N5COBQscGTMQQO+hBA==", - "dev": true, + "node_modules/@types/estree-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", "dependencies": { - "@percy/env": "1.27.4", - "@percy/logger": "1.27.4" - }, - "engines": { - "node": ">=14" + "@types/estree": "*" } }, - "node_modules/@percy/config": { - "version": "1.27.4", - "resolved": "https://registry.npmjs.org/@percy/config/-/config-1.27.4.tgz", - "integrity": "sha512-mlgiOdzdSfUSx9FskVIjmbT/iHbTif0Ow5evZQJTT1W0xgHOBWDCZyhINdsqulSBw+K1PNhHsu1J0h2ijxF4uA==", - "dev": true, + "node_modules/@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", "dependencies": { - "@percy/logger": "1.27.4", - "ajv": "^8.6.2", - "cosmiconfig": "^8.0.0", - "yaml": "^2.0.0" - }, - "engines": { - "node": ">=14" + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" } }, - "node_modules/@percy/core": { - "version": "1.27.4", - "resolved": "https://registry.npmjs.org/@percy/core/-/core-1.27.4.tgz", - "integrity": "sha512-WdsA4zlPgXl9xj+a5WW2wA20iU6VTDmRq5sgsYNSuPzZfQB2I5Cecgvb55p86dhlUTbPJrC76daQKzDTGe0hfA==", - "dev": true, - "hasInstallScript": true, + "node_modules/@types/express-serve-static-core": { + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.0.tgz", + "integrity": "sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ==", "dependencies": { - "@percy/client": "1.27.4", - "@percy/config": "1.27.4", - "@percy/dom": "1.27.4", - "@percy/logger": "1.27.4", - "@percy/webdriver-utils": "1.27.4", - "content-disposition": "^0.5.4", - "cross-spawn": "^7.0.3", - "extract-zip": "^2.0.1", - "fast-glob": "^3.2.11", - "micromatch": "^4.0.4", - "mime-types": "^2.1.34", - "path-to-regexp": "^6.2.0", - "rimraf": "^3.0.2", - "ws": "^8.0.0" - }, - "engines": { - "node": ">=14" + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" } }, - "node_modules/@percy/dom": { - "version": "1.27.4", - "resolved": "https://registry.npmjs.org/@percy/dom/-/dom-1.27.4.tgz", - "integrity": "sha512-pwPDx3e9y7uRobVlEya8xu3BB3GeXbC74kQ6pPM/wFYDwi/Dg8DJywCsj5Nko/7QuhXP02rYgatkbREOIRxDnA==", - "dev": true + "node_modules/@types/gtag.js": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/@types/gtag.js/-/gtag.js-0.0.12.tgz", + "integrity": "sha512-YQV9bUsemkzG81Ea295/nF/5GijnD2Af7QhEofh7xu+kvCN6RdodgNwwGWXB5GMI3NoyvQo0odNctoH/qLMIpg==" }, - "node_modules/@percy/env": { - "version": "1.27.4", - "resolved": "https://registry.npmjs.org/@percy/env/-/env-1.27.4.tgz", - "integrity": "sha512-Xl2VUpljOrlCvAp/+KfmN9NUcTGpRdXPa1U9zSIyBnV/oAksp3/CK5EPpKZX/f8xUUkTp78UPaG99sEMA8VvXQ==", - "dev": true, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", "dependencies": { - "@percy/logger": "1.27.4" - }, - "engines": { - "node": ">=14" + "@types/unist": "*" } }, - "node_modules/@percy/logger": { - "version": "1.27.4", - "resolved": "https://registry.npmjs.org/@percy/logger/-/logger-1.27.4.tgz", - "integrity": "sha512-AwXqYaDkHaq1TPkP+ByB8rjvH9ddvkAH9tFd2kmq8AeFFXZ0amAPSbm6u090OUtdHWjRmKQK9JjSouBxEh0aRw==", - "dev": true, - "engines": { - "node": ">=14" - } + "node_modules/@types/history": { + "version": "4.7.11", + "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz", + "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==" }, - "node_modules/@percy/sdk-utils": { - "version": "1.27.4", - "resolved": "https://registry.npmjs.org/@percy/sdk-utils/-/sdk-utils-1.27.4.tgz", - "integrity": "sha512-vhPcdtmJlvTYJ5VOqiVzo02ujdtBFNw1/Bj+2ybiZgn7PkCDPFcITfXoWWPea319EIibGC4ZHjWHctRBgtW/tQ==", - "dev": true, - "engines": { - "node": ">=14" - } + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==" }, - "node_modules/@percy/webdriver-utils": { - "version": "1.27.4", - "resolved": "https://registry.npmjs.org/@percy/webdriver-utils/-/webdriver-utils-1.27.4.tgz", - "integrity": "sha512-pZOOYns8Fikh2qlbxO16DxFEnCrnFIoLpE7iz4M9jXxOfk16VZF1PWknMChSr5NqG2I9k2OMjizUE2j8zvtl2Q==", - "dev": true, - "dependencies": { - "@percy/config": "1.27.4", - "@percy/sdk-utils": "1.27.4" - }, - "engines": { - "node": ">=14" - } + "node_modules/@types/http-cache-semantics": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==" + }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==" }, - "node_modules/@philpl/buble": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@philpl/buble/-/buble-0.19.7.tgz", - "integrity": "sha512-wKTA2DxAGEW+QffRQvOhRQ0VBiYU2h2p8Yc1oBNlqSKws48/8faxqKNIuub0q4iuyTuLwtB8EkwiKwhlfV1PBA==", + "node_modules/@types/http-proxy": { + "version": "1.17.14", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", + "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", "dependencies": { - "acorn": "^6.1.1", - "acorn-class-fields": "^0.2.1", - "acorn-dynamic-import": "^4.0.0", - "acorn-jsx": "^5.0.1", - "chalk": "^2.4.2", - "magic-string": "^0.25.2", - "minimist": "^1.2.0", - "os-homedir": "^1.0.1", - "regexpu-core": "^4.5.4" - }, - "bin": { - "buble": "bin/buble" + "@types/node": "*" } }, - "node_modules/@pmmmwh/react-refresh-webpack-plugin": { - "version": "0.5.11", - "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.11.tgz", - "integrity": "sha512-7j/6vdTym0+qZ6u4XbSAxrWBGYSdCfTzySkj7WAFgDLmSyWlOrWvpyzxlFh5jtw9dn0oL/jtW+06XfFiisN3JQ==", + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", "dependencies": { - "ansi-html-community": "^0.0.8", - "common-path-prefix": "^3.0.0", - "core-js-pure": "^3.23.3", - "error-stack-parser": "^2.0.6", - "find-up": "^5.0.0", - "html-entities": "^2.1.0", - "loader-utils": "^2.0.4", - "schema-utils": "^3.0.0", - "source-map": "^0.7.3" - }, - "engines": { - "node": ">= 10.13" - }, - "peerDependencies": { - "@types/webpack": "4.x || 5.x", - "react-refresh": ">=0.10.0 <1.0.0", - "sockjs-client": "^1.4.0", - "type-fest": ">=0.17.0 <5.0.0", - "webpack": ">=4.43.0 <6.0.0", - "webpack-dev-server": "3.x || 4.x", - "webpack-hot-middleware": "2.x", - "webpack-plugin-serve": "0.x || 1.x" - }, - "peerDependenciesMeta": { - "@types/webpack": { - "optional": true - }, - "sockjs-client": { - "optional": true - }, - "type-fest": { - "optional": true - }, - "webpack-dev-server": { - "optional": true - }, - "webpack-hot-middleware": { - "optional": true - }, - "webpack-plugin-serve": { - "optional": true - } + "@types/istanbul-lib-coverage": "*" } }, - "node_modules/@pmmmwh/react-refresh-webpack-plugin/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" + "@types/istanbul-lib-report": "*" } }, - "node_modules/@polka/url": { - "version": "1.0.0-next.23", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.23.tgz", - "integrity": "sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==", - "dev": true + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" }, - "node_modules/@prisma/client": { - "version": "4.16.2", - "resolved": "https://registry.npmjs.org/@prisma/client/-/client-4.16.2.tgz", - "integrity": "sha512-qCoEyxv1ZrQ4bKy39GnylE8Zq31IRmm8bNhNbZx7bF2cU5aiCCnSa93J2imF88MBjn7J9eUQneNxUQVJdl/rPQ==", - "hasInstallScript": true, + "node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dependencies": { - "@prisma/engines-version": "4.16.1-1.4bc8b6e1b66cb932731fb1bdbbc550d1e010de81" - }, - "engines": { - "node": ">=14.17" - }, - "peerDependencies": { - "prisma": "*" - }, - "peerDependenciesMeta": { - "prisma": { - "optional": true - } + "@types/unist": "*" } }, - "node_modules/@prisma/engines": { - "version": "4.16.2", - "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-4.16.2.tgz", - "integrity": "sha512-vx1nxVvN4QeT/cepQce68deh/Turxy5Mr+4L4zClFuK1GlxN3+ivxfuv+ej/gvidWn1cE1uAhW7ALLNlYbRUAw==", - "devOptional": true, - "hasInstallScript": true + "node_modules/@types/mdx": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.12.tgz", + "integrity": "sha512-H9VZ9YqE+H28FQVchC83RCs5xQ2J7mAAv6qdDEaWmXEVl3OpdH+xfrSUzQ1lp7U7oSTRZ0RvW08ASPJsYBi7Cw==" }, - "node_modules/@prisma/engines-version": { - "version": "4.16.1-1.4bc8b6e1b66cb932731fb1bdbbc550d1e010de81", - "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-4.16.1-1.4bc8b6e1b66cb932731fb1bdbbc550d1e010de81.tgz", - "integrity": "sha512-q617EUWfRIDTriWADZ4YiWRZXCa/WuhNgLTVd+HqWLffjMSPzyM5uOWoauX91wvQClSKZU4pzI4JJLQ9Kl62Qg==" + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" }, - "node_modules/@prisma/prisma-fmt-wasm": { - "version": "4.13.0-52.integration-mobc-upstream-d100a9299fcb9cffb064301998e9a94ce2722c49", - "resolved": "https://registry.npmjs.org/@prisma/prisma-fmt-wasm/-/prisma-fmt-wasm-4.13.0-52.integration-mobc-upstream-d100a9299fcb9cffb064301998e9a94ce2722c49.tgz", - "integrity": "sha512-12dZRXW36s3hRHLeD8c4S3o1ZZcnFt1NxhBrSlYepnMxatfkj5S8aIDP/G+zzUqucB//kGZZWNX3eUcmxMsEqw==", - "dev": true + "node_modules/@types/ms": { + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" }, - "node_modules/@react-aria/focus": { - "version": "3.16.0", - "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.16.0.tgz", - "integrity": "sha512-GP6EYI07E8NKQQcXHjpIocEU0vh0oi0Vcsd+/71fKS0NnTR0TUOEeil0JuuQ9ymkmPDTu51Aaaa4FxVsuN/23A==", + "node_modules/@types/node": { + "version": "20.12.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.5.tgz", + "integrity": "sha512-BD+BjQ9LS/D8ST9p5uqBxghlN+S42iuNxjsUGjeZobe/ciXzk2qb1B6IXc6AnRLS+yFJRpN2IPEHMzwspfDJNw==", "dependencies": { - "@react-aria/interactions": "^3.20.1", - "@react-aria/utils": "^3.23.0", - "@react-types/shared": "^3.22.0", - "@swc/helpers": "^0.5.0", - "clsx": "^2.0.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "undici-types": "~5.26.4" } }, - "node_modules/@react-aria/focus/node_modules/@swc/helpers": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.6.tgz", - "integrity": "sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA==", + "node_modules/@types/node-forge": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", "dependencies": { - "tslib": "^2.4.0" + "@types/node": "*" } }, - "node_modules/@react-aria/focus/node_modules/clsx": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz", - "integrity": "sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==", - "engines": { - "node": ">=6" - } + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==" }, - "node_modules/@react-aria/i18n": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/@react-aria/i18n/-/i18n-3.10.0.tgz", - "integrity": "sha512-sviD5Y1pLPG49HHRmVjR+5nONrp0HK219+nu9Y7cDfUhXu2EjyhMS9t/n9/VZ69hHChZ2PnHYLEE2visu9CuCg==", - "dependencies": { - "@internationalized/date": "^3.5.1", - "@internationalized/message": "^3.1.1", - "@internationalized/number": "^3.5.0", - "@internationalized/string": "^3.2.0", - "@react-aria/ssr": "^3.9.1", - "@react-aria/utils": "^3.23.0", - "@react-types/shared": "^3.22.0", - "@swc/helpers": "^0.5.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" - } + "node_modules/@types/prismjs": { + "version": "1.26.3", + "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.3.tgz", + "integrity": "sha512-A0D0aTXvjlqJ5ZILMz3rNfDBOx9hHxLZYv2by47Sm/pqW35zzjusrZTryatjN/Rf8Us2gZrJD+KeHbUSTux1Cw==" }, - "node_modules/@react-aria/i18n/node_modules/@swc/helpers": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.6.tgz", - "integrity": "sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA==", - "dependencies": { - "tslib": "^2.4.0" - } + "node_modules/@types/prop-types": { + "version": "15.7.12", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==" }, - "node_modules/@react-aria/interactions": { - "version": "3.20.1", - "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.20.1.tgz", - "integrity": "sha512-PLNBr87+SzRhe9PvvF9qvzYeP4ofTwfKSorwmO+hjr3qoczrSXf4LRQlb27wB6hF10C7ZE/XVbUI1lj4QQrZ/g==", + "node_modules/@types/qs": { + "version": "6.9.14", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.14.tgz", + "integrity": "sha512-5khscbd3SwWMhFqylJBLQ0zIu7c1K6Vz0uBIt915BI3zV0q1nfjRQD3RqSBcPaO6PHEF4ov/t9y89fSiyThlPA==" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" + }, + "node_modules/@types/react": { + "version": "18.2.74", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.74.tgz", + "integrity": "sha512-9AEqNZZyBx8OdZpxzQlaFEVCSFUM2YXJH46yPOiOpm078k6ZLOCcuAzGum/zK8YBwY+dbahVNbHrbgrAwIRlqw==", "dependencies": { - "@react-aria/ssr": "^3.9.1", - "@react-aria/utils": "^3.23.0", - "@react-types/shared": "^3.22.0", - "@swc/helpers": "^0.5.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "@types/prop-types": "*", + "csstype": "^3.0.2" } }, - "node_modules/@react-aria/interactions/node_modules/@swc/helpers": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.6.tgz", - "integrity": "sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA==", + "node_modules/@types/react-router": { + "version": "5.1.20", + "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz", + "integrity": "sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==", "dependencies": { - "tslib": "^2.4.0" + "@types/history": "^4.7.11", + "@types/react": "*" } }, - "node_modules/@react-aria/overlays": { - "version": "3.20.0", - "resolved": "https://registry.npmjs.org/@react-aria/overlays/-/overlays-3.20.0.tgz", - "integrity": "sha512-2m7MpRJL5UucbEuu08lMHsiFJoDowkJV4JAIFBZYK1NzVH0vF/A+w9HRNM7jRwx2DUxE+iIsZnl8yKV/7KY8OQ==", - "dependencies": { - "@react-aria/focus": "^3.16.0", - "@react-aria/i18n": "^3.10.0", - "@react-aria/interactions": "^3.20.1", - "@react-aria/ssr": "^3.9.1", - "@react-aria/utils": "^3.23.0", - "@react-aria/visually-hidden": "^3.8.8", - "@react-stately/overlays": "^3.6.4", - "@react-types/button": "^3.9.1", - "@react-types/overlays": "^3.8.4", - "@react-types/shared": "^3.22.0", - "@swc/helpers": "^0.5.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "node_modules/@types/react-router-config": { + "version": "5.0.11", + "resolved": "https://registry.npmjs.org/@types/react-router-config/-/react-router-config-5.0.11.tgz", + "integrity": "sha512-WmSAg7WgqW7m4x8Mt4N6ZyKz0BubSj/2tVUMsAHp+Yd2AMwcSbeFq9WympT19p5heCFmF97R9eD5uUR/t4HEqw==", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router": "^5.1.0" } }, - "node_modules/@react-aria/overlays/node_modules/@swc/helpers": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.6.tgz", - "integrity": "sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA==", + "node_modules/@types/react-router-dom": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz", + "integrity": "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==", "dependencies": { - "tslib": "^2.4.0" + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router": "*" } }, - "node_modules/@react-aria/ssr": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.1.tgz", - "integrity": "sha512-NqzkLFP8ZVI4GSorS0AYljC13QW2sc8bDqJOkBvkAt3M8gbcAXJWVRGtZBCRscki9RZF+rNlnPdg0G0jYkhJcg==", + "node_modules/@types/react-transition-group": { + "version": "4.4.10", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.10.tgz", + "integrity": "sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==", "dependencies": { - "@swc/helpers": "^0.5.0" - }, - "engines": { - "node": ">= 12" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "@types/react": "*" } }, - "node_modules/@react-aria/ssr/node_modules/@swc/helpers": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.6.tgz", - "integrity": "sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA==", + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" + }, + "node_modules/@types/sax": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.7.tgz", + "integrity": "sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==", "dependencies": { - "tslib": "^2.4.0" + "@types/node": "*" } }, - "node_modules/@react-aria/tooltip": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@react-aria/tooltip/-/tooltip-3.7.0.tgz", - "integrity": "sha512-+u9Sftkfe09IDyPEnbbreFKS50vh9X/WTa7n1u2y3PenI9VreLpUR6czyzda4BlvQ95e9jQz1cVxUjxTNaZmBw==", - "dependencies": { - "@react-aria/focus": "^3.16.0", - "@react-aria/interactions": "^3.20.1", - "@react-aria/utils": "^3.23.0", - "@react-stately/tooltip": "^3.4.6", - "@react-types/shared": "^3.22.0", - "@react-types/tooltip": "^3.4.6", - "@swc/helpers": "^0.5.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" } }, - "node_modules/@react-aria/tooltip/node_modules/@swc/helpers": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.6.tgz", - "integrity": "sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA==", + "node_modules/@types/serve-index": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", "dependencies": { - "tslib": "^2.4.0" + "@types/express": "*" } }, - "node_modules/@react-aria/utils": { - "version": "3.23.0", - "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.23.0.tgz", - "integrity": "sha512-fJA63/VU4iQNT8WUvrmll3kvToqMurD69CcgVmbQ56V7ZbvlzFi44E7BpnoaofScYLLtFWRjVdaHsohT6O/big==", + "node_modules/@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", "dependencies": { - "@react-aria/ssr": "^3.9.1", - "@react-stately/utils": "^3.9.0", - "@react-types/shared": "^3.22.0", - "@swc/helpers": "^0.5.0", - "clsx": "^2.0.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" } }, - "node_modules/@react-aria/utils/node_modules/@swc/helpers": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.6.tgz", - "integrity": "sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA==", + "node_modules/@types/sockjs": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", "dependencies": { - "tslib": "^2.4.0" + "@types/node": "*" } }, - "node_modules/@react-aria/utils/node_modules/clsx": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz", - "integrity": "sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==", - "engines": { - "node": ">=6" - } + "node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" }, - "node_modules/@react-aria/visually-hidden": { - "version": "3.8.8", - "resolved": "https://registry.npmjs.org/@react-aria/visually-hidden/-/visually-hidden-3.8.8.tgz", - "integrity": "sha512-Cn2PYKD4ijGDtF0+dvsh8qa4y7KTNAlkTG6h20r8Q+6UTyRNmtE2/26QEaApRF8CBiNy9/BZC/ZC4FK2OjvCoA==", + "node_modules/@types/ws": { + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", + "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", "dependencies": { - "@react-aria/interactions": "^3.20.1", - "@react-aria/utils": "^3.23.0", - "@react-types/shared": "^3.22.0", - "@swc/helpers": "^0.5.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "@types/node": "*" } }, - "node_modules/@react-aria/visually-hidden/node_modules/@swc/helpers": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.6.tgz", - "integrity": "sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA==", + "node_modules/@types/xml2js": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.4.14.tgz", + "integrity": "sha512-4YnrRemBShWRO2QjvUin8ESA41rH+9nQGLUGZV/1IDhi3SL9OhdpNC/MrulTWuptXKwhx/aDxE7toV0f/ypIXQ==", "dependencies": { - "tslib": "^2.4.0" + "@types/node": "*" } }, - "node_modules/@react-stately/overlays": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/@react-stately/overlays/-/overlays-3.6.4.tgz", - "integrity": "sha512-tHEaoAGpE9dSnsskqLPVKum59yGteoSqsniTopodM+miQozbpPlSjdiQnzGLroy5Afx5OZYClE616muNHUILXA==", + "node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", "dependencies": { - "@react-stately/utils": "^3.9.0", - "@react-types/overlays": "^3.8.4", - "@swc/helpers": "^0.5.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "@types/yargs-parser": "*" } }, - "node_modules/@react-stately/overlays/node_modules/@swc/helpers": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.6.tgz", - "integrity": "sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA==", + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==" + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", "dependencies": { - "tslib": "^2.4.0" + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, - "node_modules/@react-stately/tooltip": { - "version": "3.4.6", - "resolved": "https://registry.npmjs.org/@react-stately/tooltip/-/tooltip-3.4.6.tgz", - "integrity": "sha512-uL93bmsXf+OOgpKLPEKfpDH4z+MK2CuqlqVxx7rshN0vjWOSoezE5nzwgee90+RpDrLNNNWTNa7n+NkDRpI1jA==", + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "dependencies": { - "@react-stately/overlays": "^3.6.4", - "@react-types/tooltip": "^3.4.6", - "@swc/helpers": "^0.5.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" } }, - "node_modules/@react-stately/tooltip/node_modules/@swc/helpers": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.6.tgz", - "integrity": "sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA==", + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", "dependencies": { - "tslib": "^2.4.0" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" } }, - "node_modules/@react-stately/utils": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.9.0.tgz", - "integrity": "sha512-yPKFY1F88HxuZ15BG2qwAYxtpE4HnIU0Ofi4CuBE0xC6I8mwo4OQjDzi+DZjxQngM9D6AeTTD6F1V8gkozA0Gw==", + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "dependencies": { - "@swc/helpers": "^0.5.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "@xtuc/ieee754": "^1.2.0" } }, - "node_modules/@react-stately/utils/node_modules/@swc/helpers": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.6.tgz", - "integrity": "sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA==", + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "dependencies": { - "tslib": "^2.4.0" + "@xtuc/long": "4.2.2" } }, - "node_modules/@react-types/button": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/@react-types/button/-/button-3.9.1.tgz", - "integrity": "sha512-bf9iTar3PtqnyV9rA+wyFyrskZKhwmOuOd/ifYIjPs56YNVXWH5Wfqj6Dx3xdFBgtKx8mEVQxVhoX+WkHX+rtw==", + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", "dependencies": { - "@react-types/shared": "^3.22.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" } }, - "node_modules/@react-types/overlays": { - "version": "3.8.4", - "resolved": "https://registry.npmjs.org/@react-types/overlays/-/overlays-3.8.4.tgz", - "integrity": "sha512-pfgNlQnbF6RB/R2oSxyqAP3Uzz0xE/k5q4n5gUeCDNLjY5qxFHGE8xniZZ503nZYw6VBa9XMN1efDOKQyeiO0w==", + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", "dependencies": { - "@react-types/shared": "^3.22.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, - "node_modules/@react-types/shared": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.22.0.tgz", - "integrity": "sha512-yVOekZWbtSmmiThGEIARbBpnmUIuePFlLyctjvCbgJgGhz8JnEJOipLQ/a4anaWfzAgzSceQP8j/K+VOOePleA==", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" } }, - "node_modules/@react-types/tooltip": { - "version": "3.4.6", - "resolved": "https://registry.npmjs.org/@react-types/tooltip/-/tooltip-3.4.6.tgz", - "integrity": "sha512-RaZewdER7ZcsNL99RhVHs8kSLyzIBkwc0W6eFZrxST2MD9J5GzkVWRhIiqtFOd5U1aYnxdJ6woq72Ef+le6Vfw==", + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", "dependencies": { - "@react-types/overlays": "^3.8.4", - "@react-types/shared": "^3.22.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, - "node_modules/@sideway/address": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", - "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", "dependencies": { - "@hapi/hoek": "^9.0.0" + "@webassemblyjs/ast": "1.12.1", + "@xtuc/long": "4.2.2" } }, - "node_modules/@sideway/formula": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", - "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==" - }, - "node_modules/@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" }, - "node_modules/@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" - } + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" }, - "node_modules/@sindresorhus/slugify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-1.1.2.tgz", - "integrity": "sha512-V9nR/W0Xd9TSGXpZ4iFUcFGhuOJtZX82Fzxj1YISlbSgKvIiNa7eLEZrT0vAraPOt++KHauIVNYgGRgjc13dXA==", + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dependencies": { - "@sindresorhus/transliterate": "^0.1.1", - "escape-string-regexp": "^4.0.0" - }, - "engines": { - "node": ">=10" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@sindresorhus/slugify/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.6" } }, - "node_modules/@sindresorhus/transliterate": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@sindresorhus/transliterate/-/transliterate-0.1.2.tgz", - "integrity": "sha512-5/kmIOY9FF32nicXH+5yLNTX4NJ4atl7jRgqAJuIn/iyDFXBktOKDxCvyGE/EzmF4ngSUvjXxQUQlQiZ5lfw+w==", - "dependencies": { - "escape-string-regexp": "^2.0.0", - "lodash.deburr": "^4.1.0" + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "bin": { + "acorn": "bin/acorn" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.4.0" } }, - "node_modules/@sindresorhus/transliterate/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "engines": { - "node": ">=8" + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "peerDependencies": { + "acorn": "^8" } }, - "node_modules/@swc/helpers": { - "version": "0.4.36", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.36.tgz", - "integrity": "sha512-5lxnyLEYFskErRPenYItLRSge5DjrJngYKdVjRSrWfza9G6KkgHEXi0vUZiyUeMU5JfXH1YnvXZzSp8ul88o2Q==", - "dependencies": { - "legacy-swc-helpers": "npm:@swc/helpers@=0.4.14", - "tslib": "^2.4.0" + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/@szmarczak/http-timer": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", - "dependencies": { - "defer-to-connect": "^2.0.0" - }, + "node_modules/acorn-walk": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", + "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", "engines": { - "node": ">=10" + "node": ">=0.4.0" } }, - "node_modules/@tokenizer/token": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" - }, - "node_modules/@trysound/sax": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "node_modules/address": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", "engines": { - "node": ">=10.13.0" + "node": ">= 10.0.0" } }, - "node_modules/@turist/fetch": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turist/fetch/-/fetch-7.2.0.tgz", - "integrity": "sha512-2x7EGw+6OJ29phunsbGvtxlNmSfcuPcyYudkMbi8gARCP9eJ1CtuMvnVUHL//O9Ixi9SJiug8wNt6lj86pN8XQ==", + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dependencies": { - "@types/node-fetch": "2" + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" }, - "peerDependencies": { - "node-fetch": "2" + "engines": { + "node": ">=8" } }, - "node_modules/@turist/time": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/@turist/time/-/time-0.0.2.tgz", - "integrity": "sha512-qLOvfmlG2vCVw5fo/oz8WAZYlpe5a5OurgTj3diIxJCdjRHpapC+vQCz3er9LV79Vcat+DifBjeAhOAdmndtDQ==" - }, - "node_modules/@types/cacheable-request": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", - "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dependencies": { - "@types/http-cache-semantics": "*", - "@types/keyv": "^3.1.4", - "@types/node": "*", - "@types/responselike": "^1.0.0" + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@types/common-tags": { - "version": "1.8.4", - "resolved": "https://registry.npmjs.org/@types/common-tags/-/common-tags-1.8.4.tgz", - "integrity": "sha512-S+1hLDJPjWNDhcGxsxEbepzaxWqURP/o+3cP4aa2w7yBXgdcmKGQtZzP8JbyfOd0m+33nh+8+kvxYE2UJtBDkg==" - }, - "node_modules/@types/component-emitter": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.14.tgz", - "integrity": "sha512-lmPil1g82wwWg/qHSxMWkSKyJGQOK+ejXeMAAWyxNtVUD0/Ycj2maL63RAqpxVfdtvTfZkRnqzB0A9ft59y69g==" - }, - "node_modules/@types/configstore": { + "node_modules/ajv-formats": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@types/configstore/-/configstore-2.1.1.tgz", - "integrity": "sha512-YY+hm3afkDHeSM2rsFXxeZtu0garnusBWNG1+7MknmDWQHqcH2w21/xOU9arJUi8ch4qyFklidANLCu3ihhVwQ==" - }, - "node_modules/@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" - }, - "node_modules/@types/cors": { - "version": "2.8.17", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", - "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/debug": { - "version": "0.0.30", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-0.0.30.tgz", - "integrity": "sha512-orGL5LXERPYsLov6CWs3Fh6203+dXzJkR7OnddIr2514Hsecwc8xRpzCapshBbKFImCsvS/mk6+FWiN5LyZJAQ==" - }, - "node_modules/@types/eslint": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.29.0.tgz", - "integrity": "sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } } }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" } }, - "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" - }, - "node_modules/@types/get-port": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@types/get-port/-/get-port-3.2.0.tgz", - "integrity": "sha512-TiNg8R1kjDde5Pub9F9vCwZA/BNW9HeXP5b9j7Qucqncy/McfPZ6xze/EyBdXS5FhMIGN6Fx3vg75l5KHy3V1Q==" - }, - "node_modules/@types/glob": { - "version": "5.0.38", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-5.0.38.tgz", - "integrity": "sha512-rTtf75rwyP9G2qO5yRpYtdJ6aU1QqEhWbtW55qEgquEDa6bXW0s2TWZfDm02GuppjEozOWG/F2UnPq5hAQb+gw==", - "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" + "node_modules/algoliasearch": { + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.23.2.tgz", + "integrity": "sha512-8aCl055IsokLuPU8BzLjwzXjb7ty9TPcUFFOk0pYOwsE5DMVhE3kwCMFtsCFKcnoPZK7oObm+H5mbnSO/9ioxQ==", + "dependencies": { + "@algolia/cache-browser-local-storage": "4.23.2", + "@algolia/cache-common": "4.23.2", + "@algolia/cache-in-memory": "4.23.2", + "@algolia/client-account": "4.23.2", + "@algolia/client-analytics": "4.23.2", + "@algolia/client-common": "4.23.2", + "@algolia/client-personalization": "4.23.2", + "@algolia/client-search": "4.23.2", + "@algolia/logger-common": "4.23.2", + "@algolia/logger-console": "4.23.2", + "@algolia/recommend": "4.23.2", + "@algolia/requester-browser-xhr": "4.23.2", + "@algolia/requester-common": "4.23.2", + "@algolia/requester-node-http": "4.23.2", + "@algolia/transporter": "4.23.2" } }, - "node_modules/@types/hast": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.8.tgz", - "integrity": "sha512-aMIqAlFd2wTIDZuvLbhUT+TGvMxrNC8ECUIVtH6xxy0sQLs3iu6NO8Kp/VT5je7i5ufnebXzdV1dNDMnvaH6IQ==", + "node_modules/algoliasearch-helper": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.17.0.tgz", + "integrity": "sha512-R5422OiQjvjlK3VdpNQ/Qk7KsTIGeM5ACm8civGifOVWdRRV/3SgXuKmeNxe94Dz6fwj/IgpVmXbHutU4mHubg==", "dependencies": { - "@types/unist": "^2" + "@algolia/events": "^4.0.1" + }, + "peerDependencies": { + "algoliasearch": ">= 3.1 < 6" } }, - "node_modules/@types/hoist-non-react-statics": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz", - "integrity": "sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==", - "dev": true, + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", "dependencies": { - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0" + "string-width": "^4.1.0" } }, - "node_modules/@types/http-cache-semantics": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", - "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==" + "node_modules/ansi-align/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, - "node_modules/@types/http-proxy": { - "version": "1.17.14", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", - "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", + "node_modules/ansi-align/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dependencies": { - "@types/node": "*" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" - }, - "node_modules/@types/keyv": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", - "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", - "dependencies": { - "@types/node": "*" + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" } }, - "node_modules/@types/lodash": { - "version": "4.14.202", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz", - "integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==" + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } }, - "node_modules/@types/mdast": { - "version": "3.0.15", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", - "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { - "@types/unist": "^2" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@types/minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==" - }, - "node_modules/@types/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==" - }, - "node_modules/@types/mkdirp": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@types/mkdirp/-/mkdirp-0.5.2.tgz", - "integrity": "sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/node": { - "version": "17.0.45", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", - "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==" - }, - "node_modules/@types/node-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-bQVlnMLFJ2d35DkPNjEPmd9ueO/rh5EiaZt2bhqiSarPjZIuIV6bPQVqcrEyvNo+AfTrRGVazle1tl597w3gfA==", + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dependencies": { - "@types/node": "*", - "form-data": "^4.0.0" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", - "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==" - }, - "node_modules/@types/parse-json": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", - "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==" - }, - "node_modules/@types/parse5": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz", - "integrity": "sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==" - }, - "node_modules/@types/prop-types": { - "version": "15.7.11", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", - "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==" - }, - "node_modules/@types/q": { - "version": "1.5.8", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.8.tgz", - "integrity": "sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw==" - }, - "node_modules/@types/reach__router": { - "version": "1.3.14", - "resolved": "https://registry.npmjs.org/@types/reach__router/-/reach__router-1.3.14.tgz", - "integrity": "sha512-2iOQZbwfw1ZYwYK+dRp7D1b8kU6GlFPJ/iEt33zDYxfId5CAKT7vX3lN/XmJ+FaMZ3FyB99tPgfajcmZnTqdtg==", - "dependencies": { - "@types/react": "*" - } + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" }, - "node_modules/@types/react": { - "version": "18.2.28", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.28.tgz", - "integrity": "sha512-ad4aa/RaaJS3hyGz0BGegdnSRXQBkd1CCYDCdNjBPg90UUpLgo+WlJqb9fMYUxtehmzF3PJaTWqRZjko6BRzBg==", - "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, - "node_modules/@types/react-dom": { - "version": "18.2.13", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.13.tgz", - "integrity": "sha512-eJIUv7rPP+EC45uNYp/ThhSpE16k22VJUknt5OLoH9tbXoi8bMhwLf5xRuWMywamNbWzhrSmU7IBJfPup1+3fw==", - "dev": true, - "dependencies": { - "@types/react": "*" - } + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, - "node_modules/@types/react-instantsearch-core": { - "version": "6.26.8", - "resolved": "https://registry.npmjs.org/@types/react-instantsearch-core/-/react-instantsearch-core-6.26.8.tgz", - "integrity": "sha512-XjsnIaafuT3AnnpFhriv3vt9rGytIVv7+1bHEu185VRjbF0pN5znM4ggRCY8JmTDRPvGWe01qSV48oUW37apGQ==", - "dev": true, - "dependencies": { - "@types/react": "*", - "algoliasearch": ">=4", - "algoliasearch-helper": ">=3" + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "engines": { + "node": ">=8" } }, - "node_modules/@types/react-instantsearch-dom": { - "version": "6.12.4", - "resolved": "https://registry.npmjs.org/@types/react-instantsearch-dom/-/react-instantsearch-dom-6.12.4.tgz", - "integrity": "sha512-J5CeXqg5Iq7KWVeVnLBO8Yk52+joJRknipC2RHiTVzEM+c5xa58EqJH3Y9Whrjbz/USZd62XlL852lt0T8zxUA==", + "node_modules/as-table": { + "version": "1.0.55", + "resolved": "https://registry.npmjs.org/as-table/-/as-table-1.0.55.tgz", + "integrity": "sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==", "dev": true, "dependencies": { - "@types/react": "*", - "@types/react-instantsearch-core": "*" - } - }, - "node_modules/@types/react-transition-group": { - "version": "4.4.9", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.9.tgz", - "integrity": "sha512-ZVNmWumUIh5NhH8aMD9CR2hdW0fNuYInlocZHaZ+dgk/1K49j1w/HoAuK1ki+pgscQrOFRTlXeoURtuzEkV3dg==", - "dependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/responselike": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", - "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", - "dependencies": { - "@types/node": "*" + "printable-characters": "^1.0.42" } }, - "node_modules/@types/rimraf": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@types/rimraf/-/rimraf-2.0.5.tgz", - "integrity": "sha512-YyP+VfeaqAyFmXoTh3HChxOQMyjByRMsHU7kc5KOJkSlXudhMhQIALbYV7rHh/l8d2lX3VUQzprrcAgWdRuU8g==", - "dependencies": { - "@types/glob": "*", - "@types/node": "*" + "node_modules/astring": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.6.tgz", + "integrity": "sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==", + "bin": { + "astring": "bin/astring" } }, - "node_modules/@types/sax": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.7.tgz", - "integrity": "sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==", - "dependencies": { - "@types/node": "*" - } + "node_modules/async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" }, - "node_modules/@types/scheduler": { - "version": "0.16.8", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", - "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==" + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, - "node_modules/@types/sharp": { - "version": "0.30.5", - "resolved": "https://registry.npmjs.org/@types/sharp/-/sharp-0.30.5.tgz", - "integrity": "sha512-EhO29617AIBqxoVtpd1qdBanWpspk/kD2B6qTFRJ31Q23Rdf+DNU1xlHSwtqvwq1vgOqBwq1i38SX+HGCymIQg==", - "dependencies": { - "@types/node": "*" + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "engines": { + "node": ">= 4.0.0" } }, - "node_modules/@types/styled-components": { - "version": "5.1.28", - "resolved": "https://registry.npmjs.org/@types/styled-components/-/styled-components-5.1.28.tgz", - "integrity": "sha512-nu0VKNybkjvUqJAXWtRqKd7j3iRUl8GbYSTvZNuIBJcw/HUp1Y4QUXNLlj7gcnRV/t784JnHAlvRnSnE3nPbJA==", - "dev": true, + "node_modules/autoprefixer": { + "version": "10.4.19", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz", + "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "@types/hoist-non-react-statics": "*", - "@types/react": "*", - "csstype": "^3.0.2" + "browserslist": "^4.23.0", + "caniuse-lite": "^1.0.30001599", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/@types/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-gVC1InwyVrO326wbBZw+AO3u2vRXz/iRWq9jYhpG4W8LXyIgDv3ZmcLQ5Q4Gs+gFMyqx+viFoFT+l3p61QFCmQ==" - }, - "node_modules/@types/unist": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", - "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" - }, - "node_modules/@types/vfile": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/vfile/-/vfile-3.0.2.tgz", - "integrity": "sha512-b3nLFGaGkJ9rzOcuXRfHkZMdjsawuDD0ENL9fzTophtBg8FJHSGbH7daXkEpcwy3v7Xol3pAvsmlYyFhR4pqJw==", + "node_modules/axios": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.5.tgz", + "integrity": "sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==", "dependencies": { - "@types/node": "*", - "@types/unist": "*", - "@types/vfile-message": "*" + "follow-redirects": "^1.15.4", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, - "node_modules/@types/vfile-message": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/vfile-message/-/vfile-message-2.0.0.tgz", - "integrity": "sha512-GpTIuDpb9u4zIO165fUy9+fXcULdD8HFRNli04GehoMVbeNq7D6OBnqSmg3lxZnC+UvgUhEWKxdKiwYUkGltIw==", - "deprecated": "This is a stub types definition. vfile-message provides its own type definitions, so you do not need this installed.", + "node_modules/babel-loader": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", + "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", "dependencies": { - "vfile-message": "*" + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5" } }, - "node_modules/@types/yauzl": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", - "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", - "dev": true, - "optional": true, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", "dependencies": { - "@types/node": "*" + "object.assign": "^4.1.0" } }, - "node_modules/@types/yoga-layout": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@types/yoga-layout/-/yoga-layout-1.9.2.tgz", - "integrity": "sha512-S9q47ByT2pPvD65IvrWp7qppVMpk9WGMbVq9wbWZOHg6tnXSD4vyhao6nOSBwwfDdV2p3Kx9evA9vI+XWTfDvw==" - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", - "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", "dependencies": { - "@typescript-eslint/experimental-utils": "4.33.0", - "@typescript-eslint/scope-manager": "4.33.0", - "debug": "^4.3.1", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.1.0", - "semver": "^7.3.5", - "tsutils": "^3.21.0" + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^4.0.0", - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=10", + "npm": ">=6" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.10.tgz", + "integrity": "sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==", "dependencies": { - "yallist": "^4.0.0" + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.1", + "semver": "^6.3.1" }, - "engines": { - "node": ">=10" + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/@typescript-eslint/experimental-utils": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", - "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", + "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", "dependencies": { - "@types/json-schema": "^7.0.7", - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "@babel/helper-define-polyfill-provider": "^0.6.1", + "core-js-compat": "^3.36.1" }, "peerDependencies": { - "eslint": "*" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@typescript-eslint/parser": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", - "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.1.tgz", + "integrity": "sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g==", "dependencies": { - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "debug": "^4.3.1" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "@babel/helper-define-polyfill-provider": "^0.6.1" }, "peerDependencies": { - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", - "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/@typescript-eslint/types": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", - "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==" + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": "*" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", - "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } + "node_modules/blake3-wasm": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/blake3-wasm/-/blake3-wasm-2.1.5.tgz", + "integrity": "sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==", + "dev": true }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" }, "engines": { - "node": ">=10" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", - "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "eslint-visitor-keys": "^2.0.0" - }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@vercel/webpack-asset-relocator-loader": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/@vercel/webpack-asset-relocator-loader/-/webpack-asset-relocator-loader-1.7.3.tgz", - "integrity": "sha512-vizrI18v8Lcb1PmNNUBz7yxPxxXoOeuaVEjTG9MjvDrphjiSxFZrRJ5tIghk+qdLFRCXI5HBCshgobftbmrC5g==", - "dependencies": { - "resolve": "^1.10.0" + "node": ">= 0.8" } }, - "node_modules/@webassemblyjs/ast": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", - "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + "ms": "2.0.0" } }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==" - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", - "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==" + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", - "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "node_modules/bonjour-service": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", + "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@xtuc/long": "4.2.2" + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" } }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", - "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "node_modules/boxen": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-6.2.1.tgz", + "integrity": "sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw==", "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6" + "ansi-align": "^3.0.1", + "camelcase": "^6.2.0", + "chalk": "^4.1.2", + "cli-boxes": "^3.0.0", + "string-width": "^5.0.1", + "type-fest": "^2.5.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.0.1" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", - "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dependencies": { - "@xtuc/ieee754": "^1.2.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", - "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dependencies": { - "@xtuc/long": "4.2.2" + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", - "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "node_modules/browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-opt": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6", - "@webassemblyjs/wast-printer": "1.11.6" + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", - "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", - "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "node_modules/bundle-require": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-4.0.2.tgz", + "integrity": "sha512-jwzPOChofl67PSTW2SGubV9HBQAhhR2i6nskiOThauo9dzwDUgOWQScFVaJkjEfYX+UXiD+LEx8EblQMc2wIag==", "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6" + "load-tsconfig": "^0.2.3" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "peerDependencies": { + "esbuild": ">=0.17" } }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", - "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "engines": { + "node": ">= 0.8" } }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", - "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@xtuc/long": "4.2.2" + "node_modules/cacheable-lookup": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", + "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", + "engines": { + "node": ">=14.16" } }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" - }, - "node_modules/abortcontroller-polyfill": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz", - "integrity": "sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==" - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "node_modules/cacheable-request": { + "version": "10.2.14", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz", + "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==", "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" + "@types/http-cache-semantics": "^4.0.2", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.3", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" }, "engines": { - "node": ">= 0.6" + "node": ">=14.16" } }, - "node_modules/acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "bin": { - "acorn": "bin/acorn" - }, + "node_modules/cacheable-request/node_modules/normalize-url": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", + "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==", "engines": { - "node": ">=0.4.0" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/acorn-class-fields": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/acorn-class-fields/-/acorn-class-fields-0.2.1.tgz", - "integrity": "sha512-US/kqTe0H8M4LN9izoL+eykVAitE68YMuYZ3sHn3i1fjniqR7oQ3SPvuMK/VT1kjOQHrx5Q88b90TtOKgAv2hQ==", + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, "engines": { - "node": ">=4.8.2" + "node": ">= 0.4" }, - "peerDependencies": { - "acorn": "^6.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/acorn-dynamic-import": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", - "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", - "deprecated": "This is probably built in to whatever tool you're using. If you still need it... idk", - "peerDependencies": { - "acorn": "^6.0.0" + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "engines": { + "node": ">=6" } }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.0.tgz", - "integrity": "sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/add-filename-increment": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/add-filename-increment/-/add-filename-increment-1.0.0.tgz", - "integrity": "sha512-pFV8VZX8jxuVMIycKvGZkWF/ihnUubu9lbQVnOnZWp7noVxbKQTNj7zG2y9fXdPcuZ6lAN3Drr517HaivGCjdQ==", - "dependencies": { - "strip-filename-increment": "^2.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/address": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", - "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==", - "engines": { - "node": ">= 0.12.0" - } - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/algoliasearch": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.14.2.tgz", - "integrity": "sha512-ngbEQonGEmf8dyEh5f+uOIihv4176dgbuOZspiuhmTTBRBuzWu3KCGHre6uHj5YyuC7pNvQGzB6ZNJyZi0z+Sg==", - "dependencies": { - "@algolia/cache-browser-local-storage": "4.14.2", - "@algolia/cache-common": "4.14.2", - "@algolia/cache-in-memory": "4.14.2", - "@algolia/client-account": "4.14.2", - "@algolia/client-analytics": "4.14.2", - "@algolia/client-common": "4.14.2", - "@algolia/client-personalization": "4.14.2", - "@algolia/client-search": "4.14.2", - "@algolia/logger-common": "4.14.2", - "@algolia/logger-console": "4.14.2", - "@algolia/requester-browser-xhr": "4.14.2", - "@algolia/requester-common": "4.14.2", - "@algolia/requester-node-http": "4.14.2", - "@algolia/transporter": "4.14.2" - } - }, - "node_modules/algoliasearch-helper": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.15.0.tgz", - "integrity": "sha512-DGUnK3TGtDQsaUE4ayF/LjSN0DGsuYThB8WBgnnDY0Wq04K6lNVruO3LfqJOgSfDiezp+Iyt8Tj4YKHi+/ivSA==", - "dependencies": { - "@algolia/events": "^4.0.1" - }, - "peerDependencies": { - "algoliasearch": ">= 3.1 < 6" - } - }, - "node_modules/anser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/anser/-/anser-2.1.1.tgz", - "integrity": "sha512-nqLm4HxOTpeLOxcmB3QWmV5TcDFhW9y/fyQ+hivtDFcK4OQ+pQ5fzPnXHM1Mfcm0VkLtvVi1TCPr++Qy0Q/3EQ==" - }, - "node_modules/ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", - "dependencies": { - "string-width": "^4.1.0" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" } }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "engines": { "node": ">=10" }, @@ -6396,2279 +5404,1946 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ansi-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", - "engines": [ - "node >= 0.8.0" - ], - "bin": { - "ansi-html": "bin/ansi-html" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" } }, - "node_modules/append-field": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", - "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==" - }, - "node_modules/application-config-path": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/application-config-path/-/application-config-path-0.1.1.tgz", - "integrity": "sha512-zy9cHePtMP0YhwG+CfHm0bgwdnga2X3gZexpdCwEj//dpb+TKajtiC8REEUJUSq6Ab4f9cgNy2l8ObXzCXFkEw==" - }, - "node_modules/arch": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "node_modules/caniuse-lite": { + "version": "1.0.30001606", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001606.tgz", + "integrity": "sha512-LPbwnW4vfpJId225pwjZJOgX1m9sGfbw/RKJvw/t0QhYOOaTXHvkjVGFGPpvwEzufrjvTlsULnVTxdy4/6cqkg==", "funding": [ { - "type": "github", - "url": "https://github.com/sponsors/feross" + "type": "opencollective", + "url": "https://opencollective.com/browserslist" }, { - "type": "patreon", - "url": "https://www.patreon.com/feross" + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" }, { - "type": "consulting", - "url": "https://feross.org/support" + "type": "github", + "url": "https://github.com/sponsors/ai" } ] }, - "node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/aria-query": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", - "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "node_modules/capnp-ts": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/capnp-ts/-/capnp-ts-0.7.0.tgz", + "integrity": "sha512-XKxXAC3HVPv7r674zP0VC3RTXz+/JKhfyw94ljvF80yynK6VkTnqE3jMuN8b3dUVmmc43TjyxjW4KTsmB3c86g==", + "dev": true, "dependencies": { - "dequal": "^2.0.3" + "debug": "^4.3.1", + "tslib": "^2.2.0" } }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", - "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" - }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, - "node_modules/array-includes": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", - "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-string": "^1.0.7" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/array-iterate": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-1.1.4.tgz", - "integrity": "sha512-sNRaPGh9nnmdC8Zf+pT3UqP8rnWj5Hf9wiFGsX3wUQ2yVSIhO2ShFwCoceIPpB41QF6i2OEmrHmCo36xronCVA==", + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/array-union": { + "node_modules/character-entities-html4": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", - "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/array.prototype.flat": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/array.prototype.reduce": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.6.tgz", - "integrity": "sha512-UW+Mz8LG/sPSU8jRDCjVr6J/ZKAGpHfwrZ6kWTG5qCxIEiXdVshqGnu5vEZA8S1y6X4aCSbQZ0/EEsfvEvBiSg==", + "node_modules/cheerio": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", + "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.7" + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">= 6" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" } }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz", - "integrity": "sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==", + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.2.1" + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", - "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", - "is-shared-array-buffer": "^1.0.2" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" }, "engines": { - "node": ">= 0.4" + "node": ">= 8.10.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", "engines": { - "node": ">=8" + "node": ">=6.0" } }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" - }, - "node_modules/ast-types-flow": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", - "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==" - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], "engines": { "node": ">=8" } }, - "node_modules/async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==" - }, - "node_modules/async-cache": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/async-cache/-/async-cache-1.1.0.tgz", - "integrity": "sha512-YDQc4vBn5NFhY6g6HhVshyi3Fy9+SQ5ePnE7JLDJn1DoL+i7ER+vMwtTNOYk9leZkYMnOwpBCWqyLDPw8Aig8g==", - "deprecated": "No longer maintained. Use [lru-cache](http://npm.im/lru-cache) version 7.6 or higher, and provide an asynchronous `fetchMethod` option.", - "dependencies": { - "lru-cache": "^4.0.0" - } - }, - "node_modules/async-cache/node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "node_modules/clean-css": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" } }, - "node_modules/async-cache/node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" - }, - "node_modules/asynciterator.prototype": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", - "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", - "dependencies": { - "has-symbols": "^1.0.3" + "node_modules/clean-css/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "engines": { - "node": ">= 4.0.0" + "node": ">=6" } }, - "node_modules/auto-bind": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-4.0.0.tgz", - "integrity": "sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==", + "node_modules/cli-boxes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/autoprefixer": { - "version": "10.4.16", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", - "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], + "node_modules/cli-table3": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.4.tgz", + "integrity": "sha512-Lm3L0p+/npIQWNIiyF/nAn7T5dnOwR3xNTHXYEBFBFVPXzCVNZ5lqEC/1eo/EVfpDsQ1I+TX4ORPQgp+UI0CRw==", "dependencies": { - "browserslist": "^4.21.10", - "caniuse-lite": "^1.0.30001538", - "fraction.js": "^4.3.6", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" + "string-width": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14" + "node": "10.* || >= 12.*" }, - "peerDependencies": { - "postcss": "^8.1.0" + "optionalDependencies": { + "@colors/colors": "1.5.0" } }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/cli-table3/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, - "node_modules/axe-core": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz", - "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==", + "node_modules/cli-table3/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dependencies": { - "follow-redirects": "^1.14.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" } }, - "node_modules/axobject-query": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", - "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", - "dependencies": { - "dequal": "^2.0.3" - } + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, - "node_modules/babel-eslint": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", - "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", - "deprecated": "babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.", - "peer": true, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dependencies": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0", - "eslint-visitor-keys": "^1.0.0", - "resolve": "^1.12.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=6" - }, - "peerDependencies": { - "eslint": ">= 4.12.1" + "node": ">=8" } }, - "node_modules/babel-eslint/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "peer": true, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/babel-jsx-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/babel-jsx-utils/-/babel-jsx-utils-1.1.0.tgz", - "integrity": "sha512-Mh1j/rw4xM9T3YICkw22aBQ78FhsHdsmlb9NEk4uVAFBOg+Ez9ZgXXHugoBPCZui3XLomk/7/JBBH4daJqTkQQ==" - }, - "node_modules/babel-loader": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", - "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dependencies": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" }, "engines": { - "node": ">= 8.9" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "webpack": ">=2" + "node": ">=6" } }, - "node_modules/babel-loader/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/clone-deep/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "isobject": "^3.0.1" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/babel-loader/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "peerDependencies": { - "ajv": "^6.9.1" + "node_modules/clsx": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz", + "integrity": "sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==", + "engines": { + "node": ">=6" } }, - "node_modules/babel-loader/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "node_modules/babel-loader/node_modules/schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 8.9.0" - }, + "node_modules/collapse-white-space": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", + "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/babel-plugin-add-module-exports": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-1.0.4.tgz", - "integrity": "sha512-g+8yxHUZ60RcyaUpfNzy56OtWW+x9cyEe9j+CranqLiqbju2yf/Cy6ZtYK40EZxtrdHllzlVZgLmcOUCTlJ7Jg==" - }, - "node_modules/babel-plugin-apply-mdx-type-prop": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.22.tgz", - "integrity": "sha512-VefL+8o+F/DfK24lPZMtJctrCVOfgbqLAGZSkxwhazQv4VxPg3Za/i40fu22KR2m8eEda+IfSOlPLUSIiLcnCQ==", + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { - "@babel/helper-plugin-utils": "7.10.4", - "@mdx-js/util": "1.6.22" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "color-name": "~1.1.4" }, - "peerDependencies": { - "@babel/core": "^7.11.6" + "engines": { + "node": ">=7.0.0" } }, - "node_modules/babel-plugin-apply-mdx-type-prop/node_modules/@babel/helper-plugin-utils": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", - "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dependencies": { - "object.assign": "^4.1.0" - } - }, - "node_modules/babel-plugin-extract-import-names": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.22.tgz", - "integrity": "sha512-yJ9BsJaISua7d8zNT7oRG1ZLBJCIdZ4PZqmH8qa9N5AK01ifk3fnkc98AXhtzE7UkfCsEumvoQWgoYLhOnJ7jQ==", - "dependencies": { - "@babel/helper-plugin-utils": "7.10.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" }, - "node_modules/babel-plugin-extract-import-names/node_modules/@babel/helper-plugin-utils": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", - "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" }, - "node_modules/babel-plugin-lodash": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/babel-plugin-lodash/-/babel-plugin-lodash-3.3.4.tgz", - "integrity": "sha512-yDZLjK7TCkWl1gpBeBGmuaDIFhZKmkoL+Cu2MUUjv5VxUZx/z7tBGBCBcQs5RI1Bkz5LLmNdjx7paOyQtMovyg==", - "dependencies": { - "@babel/helper-module-imports": "^7.0.0-beta.49", - "@babel/types": "^7.0.0-beta.49", - "glob": "^7.1.1", - "lodash": "^4.17.10", - "require-package-name": "^2.0.1" + "node_modules/combine-promises": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/combine-promises/-/combine-promises-1.2.0.tgz", + "integrity": "sha512-VcQB1ziGD0NXrhKxiwyNbCDmRzs/OShMs2GqW2DlU2A/Sd0nQxE1oWDAE5O0ygSx5mgQOn9eIFh7yKPgFRVkPQ==", + "engines": { + "node": ">=10" } }, - "node_modules/babel-plugin-macros": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", - "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dependencies": { - "@babel/runtime": "^7.12.5", - "cosmiconfig": "^7.0.0", - "resolve": "^1.19.0" + "delayed-stream": "~1.0.0" }, "engines": { - "node": ">=10", - "npm": ">=6" + "node": ">= 0.8" } }, - "node_modules/babel-plugin-macros/node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/babel-plugin-macros/node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", "engines": { "node": ">= 6" } }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz", - "integrity": "sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==", - "dependencies": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.3", - "semver": "^6.3.1" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz", - "integrity": "sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.3", - "core-js-compat": "^3.33.1" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==" }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz", - "integrity": "sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==", + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.3" + "mime-db": ">= 1.43.0 < 2" }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "engines": { + "node": ">= 0.6" } }, - "node_modules/babel-plugin-remove-graphql-queries": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/babel-plugin-remove-graphql-queries/-/babel-plugin-remove-graphql-queries-4.25.0.tgz", - "integrity": "sha512-enyqRNRrn7vTG3nwg1V+XhoAJIyUv3ZukQCs5KbHOK+WNDDiGZQzIG+FCiZFACScdZBJWyx7TYRYbOFJZ/KEGg==", + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", "dependencies": { - "@babel/runtime": "^7.15.4", - "@babel/types": "^7.15.4", - "gatsby-core-utils": "^3.25.0" + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" }, "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "gatsby": "^4.0.0-next" + "node": ">= 0.8.0" } }, - "node_modules/babel-plugin-styled-components": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.7.tgz", - "integrity": "sha512-i7YhvPgVqRKfoQ66toiZ06jPNA3p6ierpfUuEWxNF+fV27Uv5gxBkf8KZLHUCc1nFA9j6+80pYoIpqCeyW3/bA==", + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-module-imports": "^7.16.0", - "babel-plugin-syntax-jsx": "^6.18.0", - "lodash": "^4.17.11", - "picomatch": "^2.3.0" - }, - "peerDependencies": { - "styled-components": ">= 2" + "ms": "2.0.0" } }, - "node_modules/babel-plugin-syntax-jsx": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", - "integrity": "sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==" + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, - "node_modules/babel-plugin-syntax-trailing-function-commas": { - "version": "7.0.0-beta.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz", - "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==" + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, - "node_modules/babel-plugin-transform-react-remove-prop-types": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", - "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==" - }, - "node_modules/babel-preset-fbjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz", - "integrity": "sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==", - "dependencies": { - "@babel/plugin-proposal-class-properties": "^7.0.0", - "@babel/plugin-proposal-object-rest-spread": "^7.0.0", - "@babel/plugin-syntax-class-properties": "^7.0.0", - "@babel/plugin-syntax-flow": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.0.0", - "@babel/plugin-syntax-object-rest-spread": "^7.0.0", - "@babel/plugin-transform-arrow-functions": "^7.0.0", - "@babel/plugin-transform-block-scoped-functions": "^7.0.0", - "@babel/plugin-transform-block-scoping": "^7.0.0", - "@babel/plugin-transform-classes": "^7.0.0", - "@babel/plugin-transform-computed-properties": "^7.0.0", - "@babel/plugin-transform-destructuring": "^7.0.0", - "@babel/plugin-transform-flow-strip-types": "^7.0.0", - "@babel/plugin-transform-for-of": "^7.0.0", - "@babel/plugin-transform-function-name": "^7.0.0", - "@babel/plugin-transform-literals": "^7.0.0", - "@babel/plugin-transform-member-expression-literals": "^7.0.0", - "@babel/plugin-transform-modules-commonjs": "^7.0.0", - "@babel/plugin-transform-object-super": "^7.0.0", - "@babel/plugin-transform-parameters": "^7.0.0", - "@babel/plugin-transform-property-literals": "^7.0.0", - "@babel/plugin-transform-react-display-name": "^7.0.0", - "@babel/plugin-transform-react-jsx": "^7.0.0", - "@babel/plugin-transform-shorthand-properties": "^7.0.0", - "@babel/plugin-transform-spread": "^7.0.0", - "@babel/plugin-transform-template-literals": "^7.0.0", - "babel-plugin-syntax-trailing-function-commas": "^7.0.0-beta.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" } }, - "node_modules/babel-preset-gatsby": { - "version": "2.25.0", - "resolved": "https://registry.npmjs.org/babel-preset-gatsby/-/babel-preset-gatsby-2.25.0.tgz", - "integrity": "sha512-KFfSTDAkY87/Myq1KIUk9cVphWZem/08U7ps9Hiotbo6Mge/lL6ggh3xKP9SdR5Le4DLLyIUI7a4ILrAVacYDg==", + "node_modules/configstore": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz", + "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==", "dependencies": { - "@babel/plugin-proposal-class-properties": "^7.14.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5", - "@babel/plugin-proposal-optional-chaining": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-transform-classes": "^7.15.4", - "@babel/plugin-transform-runtime": "^7.15.0", - "@babel/plugin-transform-spread": "^7.14.6", - "@babel/preset-env": "^7.15.4", - "@babel/preset-react": "^7.14.0", - "@babel/runtime": "^7.15.4", - "babel-plugin-dynamic-import-node": "^2.3.3", - "babel-plugin-macros": "^3.1.0", - "babel-plugin-transform-react-remove-prop-types": "^0.4.24", - "gatsby-core-utils": "^3.25.0", - "gatsby-legacy-polyfills": "^2.25.0" + "dot-prop": "^6.0.1", + "graceful-fs": "^4.2.6", + "unique-string": "^3.0.0", + "write-file-atomic": "^3.0.3", + "xdg-basedir": "^5.0.1" }, "engines": { - "node": ">=14.15.0" + "node": ">=12" }, - "peerDependencies": { - "@babel/core": "^7.11.6", - "core-js": "^3.0.0" - } - }, - "node_modules/backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==" - }, - "node_modules/bail": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", - "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/base-x": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", - "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", - "dependencies": { - "safe-buffer": "^5.0.1" + "url": "https://github.com/yeoman/configstore?sponsor=1" } }, - "node_modules/base64-arraybuffer": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", - "integrity": "sha512-a1eIFi4R9ySrbiMuyTGx5e92uRH5tQY6kArNcFaKBUleIoLjdjBg7Zxm3Mqm3Kmkf27HLR/1fnxX9q8GQ7Iavg==", + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", "engines": { - "node": ">= 0.6.0" + "node": ">=0.8" } }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "node_modules/consola": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", + "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==" }, - "node_modules/base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "node_modules/content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==", "engines": { - "node": "^4.5.0 || >= 5.9" + "node": ">= 0.6" } }, - "node_modules/better-opn": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-2.1.1.tgz", - "integrity": "sha512-kIPXZS5qwyKiX/HcRvDYfmBQUa8XP17I0mYZZ0y4UhpYOSvtsLHDYqmomS+Mj20aDvD3knEiQ0ecQy2nhio3yA==", - "dependencies": { - "open": "^7.0.3" - }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "engines": { - "node": ">8.0.0" + "node": ">= 0.6" } }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + }, + "node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", "engines": { - "node": "*" + "node": ">= 0.6" } }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/copy-text-to-clipboard": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/copy-text-to-clipboard/-/copy-text-to-clipboard-3.2.0.tgz", + "integrity": "sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q==", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "node_modules/copy-webpack-plugin": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.1", + "globby": "^13.1.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" } }, - "node_modules/bl/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "node_modules/copy-webpack-plugin/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "is-glob": "^4.0.3" }, "engines": { - "node": ">= 6" + "node": ">=10.13.0" } }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, - "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "node_modules/copy-webpack-plugin/node_modules/globby": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" + "dir-glob": "^3.0.1", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", + "merge2": "^1.4.1", + "slash": "^4.0.0" }, "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/body-parser/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "node_modules/copy-webpack-plugin/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", "engines": { - "node": ">= 0.8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" + "node_modules/core-js": { + "version": "3.36.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.36.1.tgz", + "integrity": "sha512-BTvUrwxVBezj5SZ3f10ImnX2oRByMxql3EimVqMysepbC9EeMUOpLwdy6Eoili2x6E4kf+ZUB5k/+Jv55alPfA==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/body-parser/node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "node_modules/core-js-compat": { + "version": "3.36.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.1.tgz", + "integrity": "sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA==", "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" + "browserslist": "^4.23.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + "node_modules/core-js-pure": { + "version": "3.36.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.36.1.tgz", + "integrity": "sha512-NXCvHvSVYSrewP0L5OhltzXeWFJLo2AL2TYnj6iLV3Bw8mM62wAQMNgUCRI6EBu6hVVpbCxmOPlxh1Ikw2PfUA==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } }, - "node_modules/boxen": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", - "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", "dependencies": { - "ansi-align": "^3.0.0", - "camelcase": "^6.2.0", - "chalk": "^4.1.0", - "cli-boxes": "^2.2.1", - "string-width": "^4.2.2", - "type-fest": "^0.20.2", - "widest-line": "^3.1.0", - "wrap-ansi": "^7.0.0" + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" }, "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/boxen/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dependencies": { - "color-convert": "^2.0.1" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">= 8" } }, - "node_modules/boxen/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/crypto-random-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "type-fest": "^1.0.1" }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/boxen/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, + "node_modules/crypto-random-string/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", "engines": { - "node": ">=7.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/boxen/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/boxen/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/css-declaration-sorter": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz", + "integrity": "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==", "engines": { - "node": ">=8" + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.0.9" } }, - "node_modules/boxen/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/css-loader": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", + "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", "dependencies": { - "has-flag": "^4.0.0" + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" }, "engines": { - "node": ">=8" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { - "fill-range": "^7.0.1" + "node_modules/css-minimizer-webpack-plugin": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-4.2.2.tgz", + "integrity": "sha512-s3Of/4jKfw1Hj9CxEO1E5oXhQAxlayuHO2y/ML+C6I9sQ7FdzfEV6QgMLN3vI+qFsjJGIAFLKtQK7t8BOXAIyA==", + "dependencies": { + "cssnano": "^5.1.8", + "jest-worker": "^29.1.2", + "postcss": "^8.4.17", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1" }, "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", - "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001541", - "electron-to-chromium": "^1.4.535", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.13" + "node": ">= 14.15.0" }, - "bin": { - "browserslist": "cli.js" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@parcel/css": { + "optional": true }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" + "@swc/css": { + "optional": true }, - { - "type": "consulting", - "url": "https://feross.org/support" + "clean-css": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "lightningcss": { + "optional": true } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true, - "engines": { - "node": "*" } }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "node_modules/builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==", - "dev": true, + "node_modules/css-minimizer-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "engines": { "node": ">=0.10.0" } }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", "dependencies": { - "streamsearch": "^1.1.0" + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" }, - "engines": { - "node": ">=10.16.0" + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/cache-manager": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/cache-manager/-/cache-manager-2.11.1.tgz", - "integrity": "sha512-XhUuc9eYwkzpK89iNewFwtvcDYMUsvtwzHeyEOPJna/WsVsXcrzsA1ft2M0QqPNunEzLhNCYPo05tEfG+YuNow==", - "dependencies": { - "async": "1.5.2", - "lodash.clonedeep": "4.5.0", - "lru-cache": "4.0.0" - } - }, - "node_modules/cache-manager/node_modules/lru-cache": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.0.tgz", - "integrity": "sha512-WKhDkjlLwzE8jAQdQlsxLUQTPXLCKX/4cJk6s5AlRtJkDBk0IKH5O51bVDH61K9N4bhbbyvLM6EiOuE8ovApPA==", + "node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", "dependencies": { - "pseudomap": "^1.0.1", - "yallist": "^2.0.0" - } - }, - "node_modules/cache-manager/node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" - }, - "node_modules/cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, "engines": { - "node": ">=10.6.0" + "node": ">=8.0.0" } }, - "node_modules/cacheable-request": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", - "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^6.0.1", - "responselike": "^2.0.0" - }, + "node_modules/css-tree/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/call-bind": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", - "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", - "dependencies": { - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.1", - "set-function-length": "^1.1.1" + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "engines": { + "node": ">= 6" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "node_modules/cssnano": { + "version": "5.1.15", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz", + "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==", "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "cssnano-preset-default": "^5.2.14", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + }, "engines": { - "node": ">=10" + "node": "^10 || ^12 || >=14.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "node_modules/cssnano-preset-advanced": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-5.3.10.tgz", + "integrity": "sha512-fnYJyCS9jgMU+cmHO1rPSPf9axbQyD7iUhLO5Df6O4G+fKIOMps+ZbU0PdGFejFBBZ3Pftf18fn1eG7MAPUSWQ==", + "dependencies": { + "autoprefixer": "^10.4.12", + "cssnano-preset-default": "^5.2.14", + "postcss-discard-unused": "^5.1.0", + "postcss-merge-idents": "^5.1.1", + "postcss-reduce-idents": "^5.2.0", + "postcss-zindex": "^5.1.0" + }, "engines": { - "node": ">= 6" + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "node_modules/cssnano-preset-default": { + "version": "5.2.14", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz", + "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==", "dependencies": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" + "css-declaration-sorter": "^6.3.1", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.1", + "postcss-convert-values": "^5.1.3", + "postcss-discard-comments": "^5.1.2", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.1", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.7", + "postcss-merge-rules": "^5.1.4", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.1", + "postcss-minify-params": "^5.1.4", + "postcss-minify-selectors": "^5.2.1", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.1", + "postcss-normalize-repeat-style": "^5.1.1", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.1", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.1", + "postcss-ordered-values": "^5.1.3", + "postcss-reduce-initial": "^5.1.2", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.1" }, "engines": { - "node": ">=8" + "node": "^10 || ^12 || >=14.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/camelcase-keys/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "node_modules/cssnano-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", "engines": { - "node": ">=6" + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/camelcase-keys/node_modules/quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dependencies": { + "css-tree": "^1.1.2" + }, "engines": { - "node": ">=8" + "node": ">=8.0.0" } }, - "node_modules/camelize": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz", - "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, - "node_modules/caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "dependencies": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } + "node_modules/data-uri-to-buffer": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-2.0.2.tgz", + "integrity": "sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==", + "dev": true }, - "node_modules/caniuse-lite": { - "version": "1.0.30001565", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001565.tgz", - "integrity": "sha512-xrE//a3O7TP0vaJ8ikzkD2c2NgcVUvsEe2IvFTntV4Yd1Z9FVzh+gW+enX96L0psrbaFMcVcH2l90xNuGDWc8w==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] + "node_modules/debounce": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==" }, - "node_modules/capital-case": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", - "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case-first": "^2.0.2" + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/ccount": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", - "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==", + "node_modules/decode-named-character-reference": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", + "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", + "dependencies": { + "character-entities": "^2.0.0" + }, "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "mimic-response": "^3.1.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/change-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", - "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", - "dependencies": { - "camel-case": "^4.1.2", - "capital-case": "^1.0.4", - "constant-case": "^3.0.4", - "dot-case": "^3.0.4", - "header-case": "^2.0.4", - "no-case": "^3.0.4", - "param-case": "^3.0.4", - "pascal-case": "^3.1.2", - "path-case": "^3.0.4", - "sentence-case": "^3.0.4", - "snake-case": "^3.0.4", - "tslib": "^2.0.3" + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/change-case-all": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/change-case-all/-/change-case-all-1.0.14.tgz", - "integrity": "sha512-CWVm2uT7dmSHdO/z1CXT/n47mWonyypzBbuCy5tN7uMg22BsfkhwT6oHmFCAk+gL1LOOxhdbB9SZz3J1KTY3gA==", - "dependencies": { - "change-case": "^4.1.2", - "is-lower-case": "^2.0.2", - "is-upper-case": "^2.0.2", - "lower-case": "^2.0.2", - "lower-case-first": "^2.0.2", - "sponge-case": "^1.0.1", - "swap-case": "^2.0.2", - "title-case": "^3.0.3", - "upper-case": "^2.0.2", - "upper-case-first": "^2.0.2" + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "engines": { + "node": ">=4.0.0" } }, - "node_modules/character-entities": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", - "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/character-entities-html4": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.4.tgz", - "integrity": "sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" } }, - "node_modules/character-entities-legacy": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", - "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "engines": { + "node": ">=10" } }, - "node_modules/character-reference-invalid": { + "node_modules/define-data-property": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", - "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" - }, - "node_modules/cheerio": { - "version": "1.0.0-rc.12", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", - "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dependencies": { - "cheerio-select": "^2.1.0", - "dom-serializer": "^2.0.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "htmlparser2": "^8.0.1", - "parse5": "^7.0.0", - "parse5-htmlparser2-tree-adapter": "^7.0.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { - "node": ">= 6" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/cheerio-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", - "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dependencies": { - "boolbase": "^1.0.0", - "css-select": "^5.1.0", - "css-what": "^6.1.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1" + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/fb55" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], + "node_modules/del": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", + "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" }, "engines": { - "node": ">= 8.10.0" + "node": ">=10" }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "engines": { - "node": ">=6.0" + "node": ">=0.4.0" } }, - "node_modules/ci-info": { + "node_modules/depd": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" - }, - "node_modules/classnames": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", - "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "engines": { - "node": ">=6" + "node": ">= 0.8" } }, - "node_modules/cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", "engines": { "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dependencies": { - "restore-cursor": "^3.1.0" - }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "engines": { - "node": ">=8" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/cli-truncate": { + "node_modules/detect-node": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", - "dev": true, + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" + }, + "node_modules/detect-port": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz", + "integrity": "sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==", "dependencies": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" - }, - "engines": { - "node": ">=8" + "address": "^1.0.1", + "debug": "4" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "detect": "bin/detect-port.js", + "detect-port": "bin/detect-port.js" } }, - "node_modules/cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "node_modules/detect-port-alt": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", + "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", + "dependencies": { + "address": "^1.0.1", + "debug": "^2.6.0" + }, + "bin": { + "detect": "bin/detect-port", + "detect-port": "bin/detect-port" + }, "engines": { - "node": ">= 10" + "node": ">= 4.2.1" } }, - "node_modules/clipboardy": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz", - "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==", + "node_modules/detect-port-alt/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dependencies": { - "arch": "^2.1.1", - "execa": "^1.0.0", - "is-wsl": "^2.1.1" - }, - "engines": { - "node": ">=8" + "ms": "2.0.0" } }, - "node_modules/clipboardy/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "node_modules/detect-port-alt/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "dequal": "^2.0.0" }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "engines": { - "node": ">=4.8" + "node": ">=0.3.1" } }, - "node_modules/clipboardy/node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "path-type": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/clipboardy/node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", "dependencies": { - "pump": "^3.0.0" + "@leichtgewicht/ip-codec": "^2.0.1" }, "engines": { "node": ">=6" } }, - "node_modules/clipboardy/node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/clipboardy/node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "node_modules/docusaurus-plugin-sass": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/docusaurus-plugin-sass/-/docusaurus-plugin-sass-0.2.5.tgz", + "integrity": "sha512-Z+D0fLFUKcFpM+bqSUmqKIU+vO+YF1xoEQh5hoFreg2eMf722+siwXDD+sqtwU8E4MvVpuvsQfaHwODNlxJAEg==", "dependencies": { - "path-key": "^2.0.0" + "sass-loader": "^10.1.1" }, - "engines": { - "node": ">=4" + "peerDependencies": { + "@docusaurus/core": "^2.0.0-beta || ^3.0.0-alpha", + "sass": "^1.30.0" } }, - "node_modules/clipboardy/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "engines": { - "node": ">=4" + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dependencies": { + "utila": "~0.4" } }, - "node_modules/clipboardy/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "bin": { - "semver": "bin/semver" + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" } }, - "node_modules/clipboardy/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "dependencies": { - "shebang-regex": "^1.0.0" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "node_modules/clipboardy/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dependencies": { + "domelementtype": "^2.3.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "node_modules/clipboardy/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", "dependencies": { - "isexe": "^2.0.0" + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" }, - "bin": { - "which": "bin/which" + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" + "no-case": "^3.0.4", + "tslib": "^2.0.3" } }, - "node_modules/cliui/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/dot-prop": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", "dependencies": { - "color-convert": "^2.0.1" + "is-obj": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cliui/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, + "node_modules/dot-prop/node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "engines": { - "node": ">=7.0.0" + "node": ">=8" } }, - "node_modules/cliui/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" }, - "node_modules/clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/electron-to-chromium": { + "version": "1.4.729", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.729.tgz", + "integrity": "sha512-bx7+5Saea/qu14kmPTDHQxkp2UnziG3iajUQu3BxFvCOnpAJdDbMV4rSl+EqFDkkpNNVUFlR1kDfpL59xfy1HA==" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/emojilib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz", + "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "engines": { - "node": ">=0.8" + "node": ">= 4" } }, - "node_modules/clone-deep": { + "node_modules/emoticon": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, + "resolved": "https://registry.npmjs.org/emoticon/-/emoticon-4.0.1.tgz", + "integrity": "sha512-dqx7eA9YaqyvYtUhJwT4rC1HIp82j5ybS1/vQ42ur+jBe17dJMwZE4+gvL1XadSFfxaPFFGt3Xsw+Y8akThDlw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "engines": { - "node": ">=6" + "node": ">= 0.8" } }, - "node_modules/clone-deep/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "node_modules/enhanced-resolve": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz", + "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==", "dependencies": { - "isobject": "^3.0.1" + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10.13.0" } }, - "node_modules/clone-response": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", - "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", - "dependencies": { - "mimic-response": "^1.0.0" + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/clsx": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", - "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", - "engines": { - "node": ">=6" + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" } }, - "node_modules/coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", "dependencies": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" + "get-intrinsic": "^1.2.4" }, "engines": { - "node": ">= 4.0" + "node": ">= 0.4" } }, - "node_modules/collapse-white-space": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz", - "integrity": "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" } }, - "node_modules/color": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", - "dependencies": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" + "node_modules/es-module-lexer": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.0.tgz", + "integrity": "sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==" + }, + "node_modules/esbuild": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.11.tgz", + "integrity": "sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" }, "engines": { - "node": ">=12.5.0" + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.11", + "@esbuild/android-arm": "0.19.11", + "@esbuild/android-arm64": "0.19.11", + "@esbuild/android-x64": "0.19.11", + "@esbuild/darwin-arm64": "0.19.11", + "@esbuild/darwin-x64": "0.19.11", + "@esbuild/freebsd-arm64": "0.19.11", + "@esbuild/freebsd-x64": "0.19.11", + "@esbuild/linux-arm": "0.19.11", + "@esbuild/linux-arm64": "0.19.11", + "@esbuild/linux-ia32": "0.19.11", + "@esbuild/linux-loong64": "0.19.11", + "@esbuild/linux-mips64el": "0.19.11", + "@esbuild/linux-ppc64": "0.19.11", + "@esbuild/linux-riscv64": "0.19.11", + "@esbuild/linux-s390x": "0.19.11", + "@esbuild/linux-x64": "0.19.11", + "@esbuild/netbsd-x64": "0.19.11", + "@esbuild/openbsd-x64": "0.19.11", + "@esbuild/sunos-x64": "0.19.11", + "@esbuild/win32-arm64": "0.19.11", + "@esbuild/win32-ia32": "0.19.11", + "@esbuild/win32-x64": "0.19.11" } }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "engines": { + "node": ">=6" } }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + "node_modules/escape-goat": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz", + "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/color/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dependencies": { - "color-name": "~1.1.4" + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" }, "engines": { - "node": ">=7.0.0" + "node": ">=8.0.0" } }, - "node_modules/color/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/colord": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" - }, - "node_modules/colorette": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", - "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==" - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" }, "engines": { - "node": ">= 0.8" + "node": ">=4" } }, - "node_modules/comma-separated-tokens": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", - "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/command-exists": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", - "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==" - }, - "node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dependencies": { + "estraverse": "^5.2.0" + }, "engines": { - "node": ">= 12" + "node": ">=4.0" } }, - "node_modules/common-path-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", - "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==" - }, - "node_modules/common-tags": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", - "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "engines": { - "node": ">=4.0.0" + "node": ">=4.0" } }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" - }, - "node_modules/component-emitter": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", - "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" } }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "node_modules/estree-util-attach-comments": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", + "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", "dependencies": { - "mime-db": ">= 1.43.0 < 2" + "@types/estree": "^1.0.0" }, - "engines": { - "node": ">= 0.6" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "node_modules/estree-util-build-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz", + "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==", "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-walker": "^3.0.0" }, - "engines": { - "node": ">= 0.8.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/compression/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" + "node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/compression/node_modules/ms": { + "node_modules/estree-util-to-js": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/compression/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "engines": [ - "node >= 0.8" - ], + "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz", + "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==", "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" + "@types/estree-jsx": "^1.0.0", + "astring": "^1.8.0", + "source-map": "^0.7.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/configstore": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "node_modules/estree-util-value-to-estree": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/estree-util-value-to-estree/-/estree-util-value-to-estree-3.1.1.tgz", + "integrity": "sha512-5mvUrF2suuv5f5cGDnDphIy4/gW86z82kl5qG6mM9z04SEQI4FB5Apmaw/TGEf3l55nLtMs5s51dmhUzvAHQCA==", "dependencies": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" + "@types/estree": "^1.0.0", + "is-plain-obj": "^4.0.0" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/remcohaszing" } }, - "node_modules/confusing-browser-globals": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", - "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==" - }, - "node_modules/constant-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", - "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", + "node_modules/estree-util-visit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", + "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case": "^2.0.2" + "@types/estree-jsx": "^1.0.0", + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" + "@types/estree": "^1.0.0" } }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "engines": { - "node": ">= 0.6" + "node": ">=0.10.0" } }, - "node_modules/convert-hrtime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/convert-hrtime/-/convert-hrtime-3.0.0.tgz", - "integrity": "sha512-7V+KqSvMiHp8yWDuwfww06XleMWVVB9b9tURBx+G7UTADuo5hYPuowKloz4OzOqbPezxgo+fdQ1522WzPG4OeA==", + "node_modules/eta": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/eta/-/eta-2.2.0.tgz", + "integrity": "sha512-UVQ72Rqjy/ZKQalzV5dCCJP80GrmPrMxh6NlNf+erV6ObL0ZFkhCstWRawS85z3smdr3d2wXPsZEY7rDPfGd2g==", "engines": { - "node": ">=8" + "node": ">=6.0.0" + }, + "funding": { + "url": "https://github.com/eta-dev/eta?sponsor=1" } }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" - }, - "node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "engines": { "node": ">= 0.6" } }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - }, - "node_modules/copy-to-clipboard": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz", - "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==", - "dependencies": { - "toggle-selection": "^1.0.6" - } - }, - "node_modules/core-js": { - "version": "3.33.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.33.3.tgz", - "integrity": "sha512-lo0kOocUlLKmm6kv/FswQL8zbkH7mVsLJ/FULClOhv8WRVmKLVcs6XPNQAzstfeJTCHMyButEwG+z1kHxHoDZw==", - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-compat": { - "version": "3.33.3", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.3.tgz", - "integrity": "sha512-cNzGqFsh3Ot+529GIXacjTJ7kegdt5fPXxCBVS1G0iaZpuo/tBz399ymceLJveQhFFZ8qThHiP3fzuoQjKN2ow==", + "node_modules/eval": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eval/-/eval-0.1.8.tgz", + "integrity": "sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==", "dependencies": { - "browserslist": "^4.22.1" + "@types/node": "*", + "require-like": ">= 0.1.1" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-pure": { - "version": "3.33.3", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.33.3.tgz", - "integrity": "sha512-taJ00IDOP+XYQEA2dAe4ESkmHt1fL8wzYDo3mRWQey8uO9UojlBFMneA65kMyxfYP7106c6LzWaq7/haDT6BCQ==", - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" + "engines": { + "node": ">= 0.8" } }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "engines": { - "node": ">= 0.10" + "node": ">=0.8.x" } }, - "node_modules/cosmiconfig": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", - "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", - "dev": true, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dependencies": { - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0", - "path-type": "^4.0.0" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" }, "engines": { - "node": ">=14" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/create-gatsby": { - "version": "2.25.0", - "resolved": "https://registry.npmjs.org/create-gatsby/-/create-gatsby-2.25.0.tgz", - "integrity": "sha512-96Kl/6Far2j65/vFv/6Mb9+T+/4oW8hlC3UmdfjgBgUIzTPFmezY1ygPu2dfCKjprWkArB8DpE7EsAaJoRKB1Q==", - "dependencies": { - "@babel/runtime": "^7.15.4" + "node_modules/exit-hook": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-2.2.1.tgz", + "integrity": "sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==", + "dev": true, + "engines": { + "node": ">=6" }, - "bin": { - "create-gatsby": "cli.js" - } - }, - "node_modules/cross-fetch": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", - "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", - "dependencies": { - "node-fetch": "^2.6.12" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "node_modules/express": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" }, "engines": { - "node": ">= 8" + "node": ">= 0.10.0" } }, - "node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "node_modules/express/node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/css-color-keywords": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", - "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==", - "engines": { - "node": ">=4" + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" } }, - "node_modules/css-declaration-sorter": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz", - "integrity": "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==", + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/express/node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/express/node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "engines": { - "node": "^10 || ^12 || >=14" + "node": ">= 0.6" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" }, - "peerDependencies": { - "postcss": "^8.0.9" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/css-loader": { - "version": "5.2.7", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.2.7.tgz", - "integrity": "sha512-Q7mOvpBNBG7YrVGMxRxcBJZFL75o+cH2abNASdibkj/fffYD8qWbInZrD0S9ccI6vZclF3DsHE7njGlLtaHbhg==", + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dependencies": { - "icss-utils": "^5.1.0", - "loader-utils": "^2.0.0", - "postcss": "^8.2.15", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.1.0", - "schema-utils": "^3.0.0", - "semver": "^7.3.5" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" }, "engines": { - "node": ">= 10.13.0" + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/fast-url-parser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", + "integrity": "sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==", + "dependencies": { + "punycode": "^1.3.2" + } + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fault": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz", + "integrity": "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==", + "dependencies": { + "format": "^0.2.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.27.0 || ^5.0.0" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/css-loader/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", "dependencies": { - "yallist": "^4.0.0" + "websocket-driver": ">=0.5.1" }, "engines": { - "node": ">=10" + "node": ">=0.8.0" } }, - "node_modules/css-loader/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "node_modules/feed": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/feed/-/feed-4.2.2.tgz", + "integrity": "sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "xml-js": "^1.6.11" }, "engines": { - "node": ">=10" + "node": ">=0.4.0" } }, - "node_modules/css-loader/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/css-minimizer-webpack-plugin": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-2.0.0.tgz", - "integrity": "sha512-cG/uc94727tx5pBNtb1Sd7gvUPzwmcQi1lkpfqTpdkuNq75hJCw7bIVsCNijLm4dhDcr1atvuysl2rZqOG8Txw==", + "node_modules/file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", "dependencies": { - "cssnano": "^5.0.0", - "jest-worker": "^26.3.0", - "p-limit": "^3.0.2", - "postcss": "^8.2.9", - "schema-utils": "^3.0.0", - "serialize-javascript": "^5.0.1", - "source-map": "^0.6.1" + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" }, "engines": { "node": ">= 10.13.0" @@ -8678,412 +7353,412 @@ "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "clean-css": { - "optional": true - }, - "csso": { - "optional": true - } - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" + "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/css-select": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", - "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "node_modules/file-loader/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, "funding": { - "url": "https://github.com/sponsors/fb55" + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/css-select-base-adapter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" - }, - "node_modules/css-selector-parser": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-1.4.1.tgz", - "integrity": "sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g==" - }, - "node_modules/css-to-react-native": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz", - "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==", - "dependencies": { - "camelize": "^1.0.0", - "css-color-keywords": "^1.0.0", - "postcss-value-parser": "^4.0.2" + "node_modules/file-loader/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peerDependencies": { + "ajv": "^6.9.1" } }, - "node_modules/css-tree": { - "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", - "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "node_modules/file-loader/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/file-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dependencies": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" }, "engines": { - "node": ">=8.0.0" + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/css-tree/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/filesize": { + "version": "8.0.7", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", + "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==", "engines": { - "node": ">=0.10.0" + "node": ">= 0.4.0" } }, - "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "engines": { - "node": ">= 6" + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" }, - "funding": { - "url": "https://github.com/sponsors/fb55" + "engines": { + "node": ">=8" } }, - "node_modules/css.escape": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", - "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==" - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "bin": { - "cssesc": "bin/cssesc" + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" }, "engines": { - "node": ">=4" + "node": ">= 0.8" } }, - "node_modules/cssfilter": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", - "integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==" + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } }, - "node_modules/cssnano": { - "version": "5.1.15", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz", - "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==", + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/find-cache-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", "dependencies": { - "cssnano-preset-default": "^5.2.14", - "lilconfig": "^2.0.3", - "yaml": "^1.10.2" + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": ">=14.16" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/cssnano" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cssnano-preset-default": { - "version": "5.2.14", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz", - "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==", + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + }, + "node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", "dependencies": { - "css-declaration-sorter": "^6.3.1", - "cssnano-utils": "^3.1.0", - "postcss-calc": "^8.2.3", - "postcss-colormin": "^5.3.1", - "postcss-convert-values": "^5.1.3", - "postcss-discard-comments": "^5.1.2", - "postcss-discard-duplicates": "^5.1.0", - "postcss-discard-empty": "^5.1.1", - "postcss-discard-overridden": "^5.1.0", - "postcss-merge-longhand": "^5.1.7", - "postcss-merge-rules": "^5.1.4", - "postcss-minify-font-values": "^5.1.0", - "postcss-minify-gradients": "^5.1.1", - "postcss-minify-params": "^5.1.4", - "postcss-minify-selectors": "^5.2.1", - "postcss-normalize-charset": "^5.1.0", - "postcss-normalize-display-values": "^5.1.0", - "postcss-normalize-positions": "^5.1.1", - "postcss-normalize-repeat-style": "^5.1.1", - "postcss-normalize-string": "^5.1.0", - "postcss-normalize-timing-functions": "^5.1.0", - "postcss-normalize-unicode": "^5.1.1", - "postcss-normalize-url": "^5.1.0", - "postcss-normalize-whitespace": "^5.1.1", - "postcss-ordered-values": "^5.1.3", - "postcss-reduce-initial": "^5.1.2", - "postcss-reduce-transforms": "^5.1.0", - "postcss-svgo": "^5.1.0", - "postcss-unique-selectors": "^5.1.1" + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, - "peerDependencies": { - "postcss": "^8.2.15" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cssnano-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", - "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "bin": { + "flat": "cli.js" } }, - "node_modules/cssnano/node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], "engines": { - "node": ">= 6" + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } } }, - "node_modules/csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "node_modules/fork-ts-checker-webpack-plugin": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz", + "integrity": "sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==", "dependencies": { - "css-tree": "^1.1.2" + "@babel/code-frame": "^7.8.3", + "@types/json-schema": "^7.0.5", + "chalk": "^4.1.0", + "chokidar": "^3.4.2", + "cosmiconfig": "^6.0.0", + "deepmerge": "^4.2.2", + "fs-extra": "^9.0.0", + "glob": "^7.1.6", + "memfs": "^3.1.2", + "minimatch": "^3.0.4", + "schema-utils": "2.7.0", + "semver": "^7.3.2", + "tapable": "^1.0.0" }, "engines": { - "node": ">=8.0.0" + "node": ">=10", + "yarn": ">=1.0.0" + }, + "peerDependencies": { + "eslint": ">= 6", + "typescript": ">= 2.7", + "vue-template-compiler": "*", + "webpack": ">= 4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } } }, - "node_modules/csso/node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "engines": { - "node": ">=8.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/csso/node_modules/mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peerDependencies": { + "ajv": "^6.9.1" + } }, - "node_modules/csso/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" - }, - "node_modules/d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/damerau-levenshtein": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", - "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==" - }, - "node_modules/dataloader": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-1.4.0.tgz", - "integrity": "sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==" + "node_modules/fork-ts-checker-webpack-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, - "node_modules/date-fns": { - "version": "2.30.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", - "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", "dependencies": { - "@babel/runtime": "^7.21.0" + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" }, "engines": { - "node": ">=0.11" + "node": ">= 8.9.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/date-fns" + "url": "https://opencollective.com/webpack" } }, - "node_modules/debounce": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", - "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", - "dev": true - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/decamelize-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", - "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" }, "engines": { - "node": ">=0.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 6" } }, - "node_modules/decamelize-keys/node_modules/map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "node_modules/form-data-encoder": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", + "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", "engines": { - "node": ">=0.10.0" + "node": ">= 14.17" } }, - "node_modules/decode-uri-component": { + "node_modules/format": { "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", + "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", "engines": { - "node": ">=0.10" + "node": ">=0.4.x" } }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dependencies": { - "mimic-response": "^3.1.0" - }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.6" } }, - "node_modules/decompress-response/node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", "engines": { - "node": ">=10" + "node": "*" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "patreon", + "url": "https://github.com/sponsors/rawify" } }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "engines": { - "node": ">=4.0.0" + "node": ">= 0.6" } }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=14.14" } }, - "node_modules/defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "node_modules/fs-monkey": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", + "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=10" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/define-data-property": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", - "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "engines": { - "node": ">= 0.4" + "node": ">=6.9.0" } }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "engines": { - "node": ">=8" + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "engines": { "node": ">= 0.4" @@ -9092,1237 +7767,1057 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" + "node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" + }, + "node_modules/get-port-please": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/get-port-please/-/get-port-please-3.1.2.tgz", + "integrity": "sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==" + }, + "node_modules/get-source": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/get-source/-/get-source-2.0.12.tgz", + "integrity": "sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==", + "dev": true, + "dependencies": { + "data-uri-to-buffer": "^2.0.0", + "source-map": "^0.6.1" } }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "node_modules/get-source/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, "engines": { - "node": ">= 0.8" + "node": ">=0.10.0" } }, - "node_modules/dependency-graph": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", - "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "engines": { - "node": ">= 0.6.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "node_modules/github-slugger": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.5.0.tgz", + "integrity": "sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==" + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, "engines": { - "node": ">=6" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "node": ">= 6" } }, - "node_modules/detab": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detab/-/detab-2.0.4.tgz", - "integrity": "sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g==", + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "node_modules/global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", "dependencies": { - "repeat-string": "^1.5.4" + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", - "bin": { - "detect-libc": "bin/detect-libc.js" - }, + "node_modules/global-dirs/node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", "engines": { - "node": ">=0.10" + "node": ">=10" } }, - "node_modules/detect-port": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz", - "integrity": "sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==", + "node_modules/global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", "dependencies": { - "address": "^1.0.1", - "debug": "4" + "global-prefix": "^3.0.0" }, - "bin": { - "detect": "bin/detect-port.js", - "detect-port": "bin/detect-port.js" + "engines": { + "node": ">=6" } }, - "node_modules/detect-port-alt": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", - "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", + "node_modules/global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", "dependencies": { - "address": "^1.0.1", - "debug": "^2.6.0" - }, - "bin": { - "detect": "bin/detect-port", - "detect-port": "bin/detect-port" + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" }, "engines": { - "node": ">= 4.2.1" + "node": ">=6" } }, - "node_modules/detect-port-alt/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dependencies": { - "ms": "2.0.0" + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" } }, - "node_modules/detect-port-alt/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } }, - "node_modules/devcert": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/devcert/-/devcert-1.2.2.tgz", - "integrity": "sha512-UsLqvtJGPiGwsIZnJINUnFYaWgK7CroreGRndWHZkRD58tPFr3pVbbSyHR8lbh41+azR4jKvuNZ+eCoBZGA5kA==", - "dependencies": { - "@types/configstore": "^2.1.1", - "@types/debug": "^0.0.30", - "@types/get-port": "^3.2.0", - "@types/glob": "^5.0.34", - "@types/lodash": "^4.14.92", - "@types/mkdirp": "^0.5.2", - "@types/node": "^8.5.7", - "@types/rimraf": "^2.0.2", - "@types/tmp": "^0.0.33", - "application-config-path": "^0.1.0", - "command-exists": "^1.2.4", - "debug": "^3.1.0", - "eol": "^0.9.1", - "get-port": "^3.2.0", - "glob": "^7.1.2", - "is-valid-domain": "^0.1.6", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "password-prompt": "^1.0.4", - "rimraf": "^2.6.2", - "sudo-prompt": "^8.2.0", - "tmp": "^0.0.33", - "tslib": "^1.10.0" - } - }, - "node_modules/devcert/node_modules/@types/node": { - "version": "8.10.66", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz", - "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==" - }, - "node_modules/devcert/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/devcert/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dependencies": { - "glob": "^7.1.3" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" }, - "bin": { - "rimraf": "bin.js" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/devcert/node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dependencies": { - "os-tmpdir": "~1.0.2" + "get-intrinsic": "^1.1.3" }, - "engines": { - "node": ">=0.6.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/devcert/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, + "node_modules/got": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", + "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", + "dependencies": { + "@sindresorhus/is": "^5.2.0", + "@szmarczak/http-timer": "^5.0.1", + "cacheable-lookup": "^7.0.0", + "cacheable-request": "^10.2.8", + "decompress-response": "^6.0.0", + "form-data-encoder": "^2.1.2", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^3.0.0" + }, "engines": { - "node": ">=0.3.1" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" } }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dependencies": { - "path-type": "^4.0.0" - }, + "node_modules/got/node_modules/@sindresorhus/is": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", + "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==", "engines": { - "node": ">=8" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" } }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/gray-matter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", + "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", "dependencies": { - "esutils": "^2.0.2" + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=6.0" } }, - "node_modules/dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "node_modules/gray-matter/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dependencies": { - "utila": "~0.4" + "sprintf-js": "~1.0.2" } }, - "node_modules/dom-helpers": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "node_modules/gray-matter/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dependencies": { - "@babel/runtime": "^7.8.7", - "csstype": "^3.0.2" + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" }, - "node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dependencies": { - "domelementtype": "^2.3.0" + "es-define-property": "^1.0.0" }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "engines": { - "node": ">= 4" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/domutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", - "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", - "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" + "node_modules/has-yarn": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-3.0.0.tgz", + "integrity": "sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dependencies": { - "is-obj": "^2.0.0" + "function-bind": "^1.1.2" }, "engines": { - "node": ">=8" + "node": ">= 0.4" } }, - "node_modules/dotenv": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", - "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", - "engines": { - "node": ">=10" + "node_modules/hast-util-from-parse5": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.1.tgz", + "integrity": "sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "hastscript": "^8.0.0", + "property-information": "^6.0.0", + "vfile": "^6.0.0", + "vfile-location": "^5.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/dotenv-expand": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", - "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==" - }, - "node_modules/duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" + "node_modules/hast-util-parse-selector": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", + "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "node_modules/duplexer3": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", - "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==" - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "node_modules/electron-to-chromium": { - "version": "1.4.594", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.594.tgz", - "integrity": "sha512-xT1HVAu5xFn7bDfkjGQi9dNpMqGchUkebwf1GL7cZN32NSwwlHRPMSDJ1KN6HkS0bWUtndbSQZqvpQftKG2uFQ==" - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" - }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/engine.io": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-4.1.2.tgz", - "integrity": "sha512-t5z6zjXuVLhXDMiFJPYsPOWEER8B0tIsD3ETgw19S1yg9zryvUfY3Vhtk3Gf4sihw/bQGIqQ//gjvVlu+Ca0bQ==", - "dependencies": { - "accepts": "~1.3.4", - "base64id": "2.0.0", - "cookie": "~0.4.1", - "cors": "~2.8.5", - "debug": "~4.3.1", - "engine.io-parser": "~4.0.0", - "ws": "~7.4.2" + "node_modules/hast-util-raw": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.0.2.tgz", + "integrity": "sha512-PldBy71wO9Uq1kyaMch9AHIghtQvIwxBUkv823pKmkTM3oV1JxtsTNYdevMxvUHqcnOAuO65JKU2+0NOxc2ksA==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-from-parse5": "^8.0.0", + "hast-util-to-parse5": "^8.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "parse5": "^7.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" }, - "engines": { - "node": ">=10.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/engine.io-client": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-4.1.4.tgz", - "integrity": "sha512-843fqAdKeUMFqKi1sSjnR11tJ4wi8sIefu6+JC1OzkkJBmjtc/gM/rZ53tJfu5Iae/3gApm5veoS+v+gtT0+Fg==", + "node_modules/hast-util-to-estree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.0.tgz", + "integrity": "sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==", "dependencies": { - "base64-arraybuffer": "0.1.4", - "component-emitter": "~1.3.0", - "debug": "~4.3.1", - "engine.io-parser": "~4.0.1", - "has-cors": "1.1.0", - "parseqs": "0.0.6", - "parseuri": "0.0.6", - "ws": "~7.4.2", - "xmlhttprequest-ssl": "~1.6.2", - "yeast": "0.1.2" - } - }, - "node_modules/engine.io-client/node_modules/ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-attach-comments": "^3.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-object": "^0.4.0", + "unist-util-position": "^5.0.0", + "zwitch": "^2.0.0" }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/engine.io-parser": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.3.tgz", - "integrity": "sha512-xEAAY0msNnESNPc00e19y5heTPX4y/TJ36gr8t1voOaNmTojP9b3oK3BbJLFufW2XFPQaaijpFewm2g2Um3uqA==", + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.0.tgz", + "integrity": "sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==", "dependencies": { - "base64-arraybuffer": "0.1.4" + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-object": "^1.0.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" }, - "engines": { - "node": ">=8.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/engine.io/node_modules/ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "node_modules/hast-util-to-jsx-runtime/node_modules/inline-style-parser": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.3.tgz", + "integrity": "sha512-qlD8YNDqyTKTyuITrDOffsl6Tdhv+UC4hcdAVuQsK4IMQ99nSgd1MIA/Q+jQYoh9r3hVUXhYh7urSRmXPkW04g==" + }, + "node_modules/hast-util-to-jsx-runtime/node_modules/style-to-object": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.6.tgz", + "integrity": "sha512-khxq+Qm3xEyZfKd/y9L3oIWQimxuc4STrQKtQn8aSDRHb8mFgpukgX1hdzfrMEW6JCjyJ8p89x+IUMVnCBI1PA==", + "dependencies": { + "inline-style-parser": "0.2.3" } }, - "node_modules/enhanced-resolve": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", - "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "node_modules/hast-util-to-parse5": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz", + "integrity": "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==", "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" }, - "engines": { - "node": ">=10.13.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/enquirer": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", - "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", "dependencies": { - "ansi-colors": "^4.1.1", - "strip-ansi": "^6.0.1" + "@types/hast": "^3.0.0" }, - "engines": { - "node": ">=8.6" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "engines": { - "node": ">=0.12" + "node_modules/hastscript": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-8.0.0.tgz", + "integrity": "sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0" }, "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/envinfo": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.0.tgz", - "integrity": "sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg==", + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" + "he": "bin/he" } }, - "node_modules/eol": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/eol/-/eol-0.9.1.tgz", - "integrity": "sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg==" - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "node_modules/history": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", + "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", "dependencies": { - "is-arrayish": "^0.2.1" + "@babel/runtime": "^7.1.2", + "loose-envify": "^1.2.0", + "resolve-pathname": "^3.0.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0", + "value-equal": "^1.0.1" } }, - "node_modules/error-stack-parser": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", - "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", "dependencies": { - "stackframe": "^1.3.4" + "react-is": "^16.7.0" } }, - "node_modules/es-abstract": { - "version": "1.22.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", - "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.2", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.5", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.2", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.12", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "safe-array-concat": "^1.0.1", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", - "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" } }, - "node_modules/es-array-method-boxes-properly": { + "node_modules/hpack.js/node_modules/isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, - "node_modules/es-iterator-helpers": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", - "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==", + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dependencies": { - "asynciterator.prototype": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.1", - "es-set-tostringtag": "^2.0.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.2.1", - "globalthis": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "iterator.prototype": "^1.1.2", - "safe-array-concat": "^1.0.1" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "node_modules/es-module-lexer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", - "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==" + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-entities": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", + "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] }, - "node_modules/es-set-tostringtag": { + "node_modules/html-escaper": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", - "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" + }, + "node_modules/html-minifier-terser": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-7.2.0.tgz", + "integrity": "sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==", "dependencies": { - "get-intrinsic": "^1.2.2", - "has-tostringtag": "^1.0.0", - "hasown": "^2.0.0" + "camel-case": "^4.1.2", + "clean-css": "~5.3.2", + "commander": "^10.0.0", + "entities": "^4.4.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.15.1" + }, + "bin": { + "html-minifier-terser": "cli.js" }, "engines": { - "node": ">= 0.4" + "node": "^14.13.1 || >=16.0.0" } }, - "node_modules/es-shim-unscopables": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", - "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", - "dependencies": { - "hasown": "^2.0.0" + "node_modules/html-minifier-terser/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "engines": { + "node": ">=14" } }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, + "node_modules/html-tags": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/es5-ext": { - "version": "0.10.62", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", - "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", - "hasInstallScript": true, - "dependencies": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "next-tick": "^1.1.0" - }, - "engines": { - "node": ">=0.10" + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "node_modules/html-webpack-plugin": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz", + "integrity": "sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==", "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.20.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, - "node_modules/es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" - }, - "node_modules/es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dependencies": { - "d": "^1.0.1", - "ext": "^1.1.2" + "node_modules/html-webpack-plugin/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "engines": { + "node": ">= 12" } }, - "node_modules/es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "node_modules/html-webpack-plugin/node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", "dependencies": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, "engines": { - "node": ">=6" + "node": ">=12" } }, - "node_modules/escape-goat": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", - "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", - "engines": { - "node": ">=8" + "node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" } }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==" + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, "engines": { - "node": ">=0.8.0" + "node": ">= 0.8" } }, - "node_modules/eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=8.0.0" } }, - "node_modules/eslint-config-react-app": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-6.0.0.tgz", - "integrity": "sha512-bpoAAC+YRfzq0dsTk+6v9aHm/uqnDwayNAXleMypGl6CpxI9oXXscVHo4fk3eJPIn+rsbtNetB4r/ZIidFIE8A==", + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", "dependencies": { - "confusing-browser-globals": "^1.0.10" + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=12.0.0" }, "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^4.0.0", - "@typescript-eslint/parser": "^4.0.0", - "babel-eslint": "^10.0.0", - "eslint": "^7.5.0", - "eslint-plugin-flowtype": "^5.2.0", - "eslint-plugin-import": "^2.22.0", - "eslint-plugin-jest": "^24.0.0", - "eslint-plugin-jsx-a11y": "^6.3.1", - "eslint-plugin-react": "^7.20.3", - "eslint-plugin-react-hooks": "^4.0.8", - "eslint-plugin-testing-library": "^3.9.0" + "@types/express": "^4.17.13" }, "peerDependenciesMeta": { - "eslint-plugin-jest": { - "optional": true - }, - "eslint-plugin-testing-library": { + "@types/express": { "optional": true } } }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", - "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", - "dependencies": { - "debug": "^3.2.7" - }, + "node_modules/http-proxy-middleware/node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", "engines": { - "node": ">=4" + "node": ">=10" }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-plugin-flowtype": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-5.10.0.tgz", - "integrity": "sha512-vcz32f+7TP+kvTUyMXZmCnNujBQZDNmcqPImw8b9PZ+16w1Qdm6ryRuYZYVaG9xRqqmAPr2Cs9FAX5gN+x/bjw==", + "node_modules/http2-wrapper": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", + "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", "dependencies": { - "lodash": "^4.17.15", - "string-natural-compare": "^3.0.1" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "peerDependencies": { - "eslint": "^7.1.0" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.0.tgz", - "integrity": "sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==", - "dependencies": { - "array-includes": "^3.1.7", - "array.prototype.findlastindex": "^1.2.3", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.8.0", - "hasown": "^2.0.0", - "is-core-module": "^2.13.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.7", - "object.groupby": "^1.0.1", - "object.values": "^1.1.7", - "semver": "^6.3.1", - "tsconfig-paths": "^3.14.2" + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" }, "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" + "node": ">=10.19.0" } }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { + "node_modules/human-signals": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dependencies": { - "esutils": "^2.0.2" - }, + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "engines": { - "node": ">=0.10.0" + "node": ">=10.17.0" } }, - "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz", - "integrity": "sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==", + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dependencies": { - "@babel/runtime": "^7.23.2", - "aria-query": "^5.3.0", - "array-includes": "^3.1.7", - "array.prototype.flatmap": "^1.3.2", - "ast-types-flow": "^0.0.8", - "axe-core": "=4.7.0", - "axobject-query": "^3.2.1", - "damerau-levenshtein": "^1.0.8", - "emoji-regex": "^9.2.2", - "es-iterator-helpers": "^1.0.15", - "hasown": "^2.0.0", - "jsx-ast-utils": "^3.3.5", - "language-tags": "^1.0.9", - "minimatch": "^3.1.2", - "object.entries": "^1.1.7", - "object.fromentries": "^2.0.7" - }, - "engines": { - "node": ">=4.0" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, - "node_modules/eslint-plugin-react": { - "version": "7.33.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", - "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "array.prototype.tosorted": "^1.1.1", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.12", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "object.hasown": "^1.1.2", - "object.values": "^1.1.6", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.4", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.8" + "safer-buffer": ">= 2.1.2 < 3" }, "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-react-hooks": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", - "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "engines": { - "node": ">=10" + "node": "^10 || ^12 || >= 14" }, "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + "postcss": "^8.1.0" } }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dependencies": { - "esutils": "^2.0.2" - }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-react/node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" + "node": ">= 4" } }, - "node_modules/eslint-plugin-react/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "node_modules/image-size": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.1.1.tgz", + "integrity": "sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==", "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" + "queue": "6.0.2" }, "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "image-size": "bin/image-size.js" }, "engines": { - "node": ">=8.0.0" + "node": ">=16.x" } }, - "node_modules/eslint-scope/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "engines": { - "node": ">=4.0" + "node_modules/immer": { + "version": "9.0.21", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", + "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" } }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "node_modules/immutable": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz", + "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==" + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dependencies": { - "eslint-visitor-keys": "^2.0.0" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + "node": ">=6" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "node_modules/import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/eslint-webpack-plugin": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-2.7.0.tgz", - "integrity": "sha512-bNaVVUvU4srexGhVcayn/F4pJAz19CWBkKoMx7aSQ4wtTbZQCnG5O9LHCE42mM+JSKOUp7n6vd5CIwzj7lOVGA==", - "dependencies": { - "@types/eslint": "^7.29.0", - "arrify": "^2.0.1", - "jest-worker": "^27.5.1", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "schema-utils": "^3.1.1" - }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0", - "webpack": "^4.0.0 || ^5.0.0" + "node": ">=0.8.19" } }, - "node_modules/eslint-webpack-plugin/node_modules/has-flag": { + "node_modules/indent-string": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "engines": { "node": ">=8" } }, - "node_modules/eslint-webpack-plugin/node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, + "node_modules/infima": { + "version": "0.2.0-alpha.43", + "resolved": "https://registry.npmjs.org/infima/-/infima-0.2.0-alpha.43.tgz", + "integrity": "sha512-2uw57LvUqW0rK/SWYnd/2rRfxNA5DDNOh33jxF7fy46VWoNhGxiUQyVZHbBMjQ33mQem0cjdDVwgWVAmlRfgyQ==", "engines": { - "node": ">= 10.13.0" + "node": ">=12" } }, - "node_modules/eslint-webpack-plugin/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dependencies": { - "has-flag": "^4.0.0" - }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/inline-style-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" + }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "node": ">= 0.10" } }, - "node_modules/eslint/node_modules/@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "node_modules/intl-messageformat": { + "version": "10.5.11", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.5.11.tgz", + "integrity": "sha512-eYq5fkFBVxc7GIFDzpFQkDOZgNayNTQn4Oufe8jw6YY6OHVw70/4pA3FyCsQ0Gb2DnvEJEMmN2tOaXUGByM+kg==", "dependencies": { - "@babel/highlight": "^7.10.4" + "@formatjs/ecma402-abstract": "1.18.2", + "@formatjs/fast-memoize": "2.2.0", + "@formatjs/icu-messageformat-parser": "2.7.6", + "tslib": "^2.4.0" } }, - "node_modules/eslint/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "loose-envify": "^1.0.0" } }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, + "node_modules/ipaddr.js": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", + "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">= 10" } }, - "node_modules/eslint/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dependencies": { - "sprintf-js": "~1.0.2" + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dependencies": { - "color-name": "~1.1.4" + "binary-extensions": "^2.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=8" } }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "engines": { - "node": ">=10" + "node_modules/is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "dependencies": { + "ci-info": "^3.2.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "is-ci": "bin.js" } }, - "node_modules/eslint/node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" + "hasown": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint/node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "engines": { - "node": ">=4" + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/eslint/node_modules/globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", - "dependencies": { - "type-fest": "^0.20.2" + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "bin": { + "is-docker": "cli.js" }, "engines": { "node": ">=8" @@ -10331,27926 +8826,4377 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/eslint/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "engines": { - "node": ">= 4" + "node": ">=0.10.0" } }, - "node_modules/eslint/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" } }, - "node_modules/eslint/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "node_modules/eslint/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dependencies": { - "yallist": "^4.0.0" + "is-extglob": "^2.1.1" }, "engines": { - "node": ">=10" + "node": ">=0.10.0" + } + }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/eslint/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" - }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, + "node_modules/is-npm": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz", + "integrity": "sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==", "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=0.12.0" } }, - "node_modules/espree/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "bin": { - "acorn": "bin/acorn" - }, + "node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", "engines": { - "node": ">=0.4.0" + "node": ">=0.10.0" } }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dependencies": { - "estraverse": "^5.1.0" + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "engines": { + "node": ">=12" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "engines": { - "node": ">=0.10" + "node": ">=0.10.0" } }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "node_modules/is-reference": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz", + "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==", "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" + "@types/estree": "*" } }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", "engines": { - "node": ">=4.0" + "node": ">=0.10.0" } }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "node_modules/is-root": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", + "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "engines": { - "node": ">= 0.6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eval": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/eval/-/eval-0.1.8.tgz", - "integrity": "sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==", + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dependencies": { - "@types/node": "*", - "require-like": ">= 0.1.1" + "is-docker": "^2.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">=8" } }, - "node_modules/event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", - "dependencies": { - "d": "1", - "es5-ext": "~0.10.14" + "node_modules/is-yarn-global": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.1.tgz", + "integrity": "sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==", + "engines": { + "node": ">=12" } }, - "node_modules/event-source-polyfill": { - "version": "1.0.25", - "resolved": "https://registry.npmjs.org/event-source-polyfill/-/event-source-polyfill-1.0.25.tgz", - "integrity": "sha512-hQxu6sN1Eq4JjoI7ITdQeGGUN193A2ra83qC0Ltm9I2UJVAten3OFVN6k5RX4YWeCS0BoC8xg/5czOCIHVosQg==" + "node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "engines": { - "node": ">=0.8.x" + "node": ">=0.10.0" } }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/execa/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "engines": { - "node": ">=10" + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", "engines": { - "node": ">=6" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { - "node": ">= 0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/express-graphql": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/express-graphql/-/express-graphql-0.12.0.tgz", - "integrity": "sha512-DwYaJQy0amdy3pgNtiTDuGGM2BLdj+YO2SgbKoLliCfuHv3VVTt7vNG/ZqK2hRYjtYHE2t2KB705EU94mE64zg==", - "deprecated": "This package is no longer maintained. We recommend using `graphql-http` instead. Please consult the migration document https://github.com/graphql/graphql-http#migrating-express-grpahql.", + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dependencies": { - "accepts": "^1.3.7", - "content-type": "^1.0.4", - "http-errors": "1.8.0", - "raw-body": "^2.4.1" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 10.x" + "node": ">=10" }, - "peerDependencies": { - "graphql": "^14.7.0 || ^15.3.0" + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/express-graphql/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "engines": { - "node": ">= 0.6" + "node_modules/jiti": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", + "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", + "bin": { + "jiti": "bin/jiti.js" } }, - "node_modules/express-graphql/node_modules/http-errors": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.0.tgz", - "integrity": "sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A==", + "node_modules/joi": { + "version": "17.12.3", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.12.3.tgz", + "integrity": "sha512-2RRziagf555owrm9IRVtdKynOBeITiDpuZqIpgwqXShPncPKNiRQoiGsl/T8SQdq+8ugRzH2LqY67irr2y/d+g==", "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express-graphql/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "engines": { - "node": ">= 0.6" + "@hapi/hoek": "^9.3.0", + "@hapi/topo": "^5.1.0", + "@sideway/address": "^4.1.5", + "@sideway/formula": "^3.0.1", + "@sideway/pinpoint": "^2.0.0" } }, - "node_modules/express-graphql/node_modules/toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", - "engines": { - "node": ">=0.6" - } + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, - "node_modules/express-http-proxy": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/express-http-proxy/-/express-http-proxy-1.6.3.tgz", - "integrity": "sha512-/l77JHcOUrDUX8V67E287VEUQT0lbm71gdGVoodnlWBziarYKgMcpqT7xvh/HM8Jv52phw8Bd8tY+a7QjOr7Yg==", + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dependencies": { - "debug": "^3.0.1", - "es6-promise": "^4.1.1", - "raw-body": "^2.3.0" + "argparse": "^2.0.1" }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/express-http-proxy/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/express/node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "bin": { + "jsesc": "bin/jsesc" + }, "engines": { - "node": ">= 0.6" + "node": ">=4" } }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" }, - "node_modules/express/node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" }, - "node_modules/express/node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dependencies": { - "side-channel": "^1.0.4" + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": { + "json5": "lib/cli.js" }, "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=6" } }, - "node_modules/ext": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", - "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dependencies": { - "type": "^2.7.2" + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/ext/node_modules/type": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dependencies": { - "is-extendable": "^0.1.0" - }, + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "engines": { "node": ">=0.10.0" } }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/external-editor/node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dependencies": { - "os-tmpdir": "~1.0.2" - }, + "node_modules/klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", "engines": { - "node": ">=0.6.0" + "node": ">= 8" } }, - "node_modules/extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dev": true, + "node_modules/latest-version": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz", + "integrity": "sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==", "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" + "package-json": "^8.1.0" }, "engines": { - "node": ">= 10.17.0" + "node": ">=14.16" }, - "optionalDependencies": { - "@types/yauzl": "^2.9.1" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "node_modules/launch-editor": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz", + "integrity": "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==", "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, + "picocolors": "^1.0.0", + "shell-quote": "^1.8.1" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", "engines": { - "node": ">=8.6.0" + "node": ">=6" } }, - "node_modules/fast-json-stable-stringify": { + "node_modules/lilconfig": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" - }, - "node_modules/fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", "engines": { - "node": ">= 4.9.1" + "node": ">=10" } }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dependencies": { - "reusify": "^1.0.4" - } + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dependencies": { - "bser": "2.1.1" + "node_modules/load-tsconfig": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz", + "integrity": "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "node_modules/fbjs": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.5.tgz", - "integrity": "sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==", - "dependencies": { - "cross-fetch": "^3.1.5", - "fbjs-css-vars": "^1.0.0", - "loose-envify": "^1.0.0", - "object-assign": "^4.1.0", - "promise": "^7.1.1", - "setimmediate": "^1.0.5", - "ua-parser-js": "^1.0.35" + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "engines": { + "node": ">=6.11.5" } }, - "node_modules/fbjs-css-vars": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", - "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" - }, - "node_modules/fd": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/fd/-/fd-0.0.3.tgz", - "integrity": "sha512-iAHrIslQb3U68OcMSP0kkNWabp7sSN6d2TBSb2JO3gcLJVDd4owr/hKM4SFJovFOUeeXeItjYgouEDTMWiVAnA==" - }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "dev": true, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dependencies": { - "pend": "~1.2.0" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" } }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", "dependencies": { - "escape-string-regexp": "^1.0.5" + "p-locate": "^6.0.0" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==" + }, + "node_modules/lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" + }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/file-loader": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", - "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "js-tokens": "^3.0.0 || ^4.0.0" }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "bin": { + "loose-envify": "cli.js" } }, - "node_modules/file-type": { - "version": "16.5.4", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz", - "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==", - "dependencies": { - "readable-web-to-node-stream": "^3.0.0", - "strtok3": "^6.2.4", - "token-types": "^4.1.1" + "node_modules/lost-pixel": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/lost-pixel/-/lost-pixel-3.16.0.tgz", + "integrity": "sha512-YLNHXglZTQUaztQyAjZN0KMM2y+czzsHQ7BKhNojJkF77JGian4KyFiTCKNU1sxHQT0loZUlH7edo+JueQj3HA==", + "dependencies": { + "@types/xml2js": "^0.4.14", + "async": "3.2.5", + "axios": "1.6.5", + "bundle-require": "4.0.2", + "esbuild": "0.19.11", + "execa": "5.1.1", + "form-data": "4.0.0", + "fs-extra": "11.2.0", + "get-port-please": "3.1.2", + "lodash.get": "4.4.2", + "lodash.kebabcase": "4.1.1", + "odiff-bin": "2.6.1", + "pixelmatch": "5.3.0", + "playwright-core": "1.40.1", + "pngjs": "7.0.0", + "posthog-node": "3.5.0", + "serve-handler": "6.1.5", + "shelljs": "0.8.5", + "ts-node": "10.9.2", + "uuid": "9.0.1", + "xml2js": "^0.6.2", + "yargs": "17.7.2", + "zod": "3.22.4" + }, + "bin": { + "lost-pixel": "dist/bin.js" }, "engines": { - "node": ">=10" + "node": ">=18" }, - "funding": { - "url": "https://github.com/sindresorhus/file-type?sponsor=1" + "peerDependencies": { + "playwright-core": ">=1.37.0" } }, - "node_modules/filename-reserved-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", - "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", - "engines": { - "node": ">=4" + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dependencies": { + "tslib": "^2.0.3" } }, - "node_modules/filenamify": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", - "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", - "dependencies": { - "filename-reserved-regex": "^2.0.0", - "strip-outer": "^1.0.1", - "trim-repeated": "^1.0.0" - }, + "node_modules/lowercase-keys": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/filesize": { - "version": "8.0.7", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", - "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==", - "engines": { - "node": ">= 0.4.0" + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dependencies": { + "yallist": "^3.0.2" } }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" + "sourcemap-codec": "^1.4.8" } }, - "node_modules/filter-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", - "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" + }, + "node_modules/markdown-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", + "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==", "engines": { - "node": ">=0.10.0" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" + "node_modules/markdown-table": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz", + "integrity": "sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/mdast-util-directive": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-3.0.0.tgz", + "integrity": "sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q==", "dependencies": { - "ms": "2.0.0" + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "node_modules/mdast-util-find-and-replace": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.1.tgz", + "integrity": "sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==", "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" + "@types/mdast": "^4.0.0", + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/find-root": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + "node_modules/mdast-util-from-markdown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.0.tgz", + "integrity": "sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "node_modules/mdast-util-from-markdown/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-frontmatter": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-2.0.1.tgz", + "integrity": "sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==", "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "escape-string-regexp": "^5.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-extension-frontmatter": "^2.0.0" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-frontmatter/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "bin": { - "flat": "cli.js" + "node_modules/mdast-util-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz", + "integrity": "sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-footnote": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.0.tgz", + "integrity": "sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==", "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" + "@types/mdast": "^4.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-find-and-replace": "^3.0.0", + "micromark-util-character": "^2.0.0" }, - "engines": { - "node": "^10.12.0 || >=12.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/flatted": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==" - }, - "node_modules/follow-redirects": { - "version": "1.15.3", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", - "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "node_modules/mdast-util-gfm-autolink-literal/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", "funding": [ { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" } ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dependencies": { - "is-callable": "^1.1.3" + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/fork-ts-checker-webpack-plugin": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz", - "integrity": "sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==", - "dependencies": { - "@babel/code-frame": "^7.8.3", - "@types/json-schema": "^7.0.5", - "chalk": "^4.1.0", - "chokidar": "^3.4.2", - "cosmiconfig": "^6.0.0", - "deepmerge": "^4.2.2", - "fs-extra": "^9.0.0", - "glob": "^7.1.6", - "memfs": "^3.1.2", - "minimatch": "^3.0.4", - "schema-utils": "2.7.0", - "semver": "^7.3.2", - "tapable": "^1.0.0" - }, - "engines": { - "node": ">=10", - "yarn": ">=1.0.0" - }, - "peerDependencies": { - "eslint": ">= 6", - "typescript": ">= 2.7", - "vue-template-compiler": "*", - "webpack": ">= 4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true + "node_modules/mdast-util-gfm-autolink-literal/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" }, - "vue-template-compiler": { - "optional": true + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" } - } + ] }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/mdast-util-gfm-footnote": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz", + "integrity": "sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "@types/mdast": "^4.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "peerDependencies": { - "ajv": "^6.9.1" + "node_modules/mdast-util-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/mdast-util-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/mdast-util-gfm-task-list-item": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/mdast-util-mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", + "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", "dependencies": { - "color-name": "~1.1.4" + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" }, - "engines": { - "node": ">=7.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "node_modules/mdast-util-mdx-expression": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.0.tgz", + "integrity": "sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==", "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" }, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "node_modules/mdast-util-mdx-jsx": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.2.tgz", + "integrity": "sha512-eKMQDeywY2wlHc97k5eD8VC+9ASMjN8ItEZQNGwJ6E0XWKiW/Z0V5/H8pvoXUf+y+Mj0VIgeRRbujBmFn4FTyA==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-remove-position": "^5.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", "dependencies": { - "yallist": "^4.0.0" + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" }, - "engines": { - "node": ">=10" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", - "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", "dependencies": { - "@types/json-schema": "^7.0.4", - "ajv": "^6.12.2", - "ajv-keywords": "^3.4.1" - }, - "engines": { - "node": ">= 8.9.0" + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/webpack" + "url": "https://opencollective.com/unified" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "node_modules/mdast-util-to-hast": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.1.0.tgz", + "integrity": "sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA==", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" }, - "engines": { - "node": ">=10" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/mdast-util-to-markdown": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz", + "integrity": "sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==", "dependencies": { - "has-flag": "^4.0.0" + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "engines": { - "node": ">= 6" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/form-data": { + "node_modules/mdast-util-to-string": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fraction.js": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", - "engines": { - "node": "*" + "@types/mdast": "^4.0.0" }, "funding": { - "type": "patreon", - "url": "https://github.com/sponsors/rawify" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "engines": { "node": ">= 0.6" } }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, - "node_modules/fs-exists-cached": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-exists-cached/-/fs-exists-cached-1.0.0.tgz", - "integrity": "sha512-kSxoARUDn4F2RPXX48UXnaFKwVU7Ivd/6qpzZL29MCDmr9sTvybv4gFCp+qaI4fM9m0z9fgz/yJvi56GAz+BZg==" - }, - "node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "node_modules/memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "fs-monkey": "^1.0.4" }, "engines": { - "node": ">=12" + "node": ">= 4.0.0" } }, - "node_modules/fs-monkey": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", - "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==" + "node_modules/memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": ">= 8" } }, - "node_modules/function-bind": { + "node_modules/methods": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" } }, - "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "node_modules/micromark": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", + "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.0.tgz", + "integrity": "sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==" - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gatsby": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/gatsby/-/gatsby-4.22.1.tgz", - "integrity": "sha512-5alRl+7RlK9kVTX4wwECx8XD181Ti5HTgCK5IL0uFBJlqeA6UDLOY+S9noOQgvoFgzwApPOGoiV5sKlSTxPnfw==", - "hasInstallScript": true, + "node_modules/micromark-core-commonmark/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "@babel/code-frame": "^7.14.0", - "@babel/core": "^7.15.5", - "@babel/eslint-parser": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/parser": "^7.15.5", - "@babel/runtime": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4", - "@builder.io/partytown": "^0.5.2", - "@gatsbyjs/reach-router": "^1.3.9", - "@gatsbyjs/webpack-hot-middleware": "^2.25.2", - "@graphql-codegen/add": "^3.1.1", - "@graphql-codegen/core": "^2.5.1", - "@graphql-codegen/plugin-helpers": "^2.4.2", - "@graphql-codegen/typescript": "^2.4.8", - "@graphql-codegen/typescript-operations": "^2.3.5", - "@graphql-tools/code-file-loader": "^7.2.14", - "@graphql-tools/load": "^7.5.10", - "@jridgewell/trace-mapping": "^0.3.13", - "@nodelib/fs.walk": "^1.2.8", - "@parcel/cache": "2.6.2", - "@parcel/core": "2.6.2", - "@pmmmwh/react-refresh-webpack-plugin": "^0.5.7", - "@types/http-proxy": "^1.17.7", - "@typescript-eslint/eslint-plugin": "^4.33.0", - "@typescript-eslint/parser": "^4.33.0", - "@vercel/webpack-asset-relocator-loader": "^1.7.0", - "address": "1.1.2", - "anser": "^2.1.0", - "autoprefixer": "^10.4.0", - "axios": "^0.21.1", - "babel-loader": "^8.2.3", - "babel-plugin-add-module-exports": "^1.0.4", - "babel-plugin-dynamic-import-node": "^2.3.3", - "babel-plugin-lodash": "^3.3.4", - "babel-plugin-remove-graphql-queries": "^4.22.0", - "babel-preset-gatsby": "^2.22.1", - "better-opn": "^2.1.1", - "bluebird": "^3.7.2", - "browserslist": "^4.17.5", - "cache-manager": "^2.11.1", - "chalk": "^4.1.2", - "chokidar": "^3.5.3", - "common-tags": "^1.8.0", - "compression": "^1.7.4", - "cookie": "^0.4.1", - "core-js": "^3.22.3", - "cors": "^2.8.5", - "css-loader": "^5.2.7", - "css-minimizer-webpack-plugin": "^2.0.0", - "css.escape": "^1.5.1", - "date-fns": "^2.25.0", - "debug": "^3.2.7", - "deepmerge": "^4.2.2", - "detect-port": "^1.3.0", - "devcert": "^1.2.0", - "dotenv": "^8.6.0", - "enhanced-resolve": "^5.8.3", - "error-stack-parser": "^2.1.4", - "eslint": "^7.32.0", - "eslint-config-react-app": "^6.0.0", - "eslint-plugin-flowtype": "^5.10.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jsx-a11y": "^6.5.1", - "eslint-plugin-react": "^7.30.1", - "eslint-plugin-react-hooks": "^4.5.0", - "eslint-webpack-plugin": "^2.7.0", - "event-source-polyfill": "1.0.25", - "execa": "^5.1.1", - "express": "^4.17.1", - "express-graphql": "^0.12.0", - "express-http-proxy": "^1.6.3", - "fastest-levenshtein": "^1.0.12", - "fastq": "^1.13.0", - "file-loader": "^6.2.0", - "find-cache-dir": "^3.3.2", - "fs-exists-cached": "1.0.0", - "fs-extra": "^10.1.0", - "gatsby-cli": "^4.22.1", - "gatsby-core-utils": "^3.22.0", - "gatsby-graphiql-explorer": "^2.22.0", - "gatsby-legacy-polyfills": "^2.22.0", - "gatsby-link": "^4.22.0", - "gatsby-page-utils": "^2.22.0", - "gatsby-parcel-config": "0.13.0", - "gatsby-plugin-page-creator": "^4.22.0", - "gatsby-plugin-typescript": "^4.22.0", - "gatsby-plugin-utils": "^3.16.0", - "gatsby-react-router-scroll": "^5.22.0", - "gatsby-script": "^1.7.0", - "gatsby-telemetry": "^3.22.0", - "gatsby-worker": "^1.22.0", - "glob": "^7.2.3", - "globby": "^11.1.0", - "got": "^11.8.5", - "graphql": "^15.7.2", - "graphql-compose": "^9.0.7", - "graphql-playground-middleware-express": "^1.7.22", - "hasha": "^5.2.2", - "invariant": "^2.2.4", - "is-relative": "^1.0.0", - "is-relative-url": "^3.0.0", - "joi": "^17.4.2", - "json-loader": "^0.5.7", - "latest-version": "5.1.0", - "lmdb": "2.5.3", - "lodash": "^4.17.21", - "md5-file": "^5.0.0", - "meant": "^1.0.3", - "memoizee": "^0.4.15", - "micromatch": "^4.0.4", - "mime": "^2.5.2", - "mini-css-extract-plugin": "1.6.2", - "mitt": "^1.2.0", - "moment": "^2.29.1", - "multer": "^1.4.5-lts.1", - "node-fetch": "^2.6.6", - "node-html-parser": "^5.3.3", - "normalize-path": "^3.0.0", - "null-loader": "^4.0.1", - "opentracing": "^0.14.5", - "p-defer": "^3.0.0", - "parseurl": "^1.3.3", - "physical-cpu-count": "^2.0.0", - "platform": "^1.3.6", - "postcss": "^8.3.11", - "postcss-flexbugs-fixes": "^5.0.2", - "postcss-loader": "^5.3.0", - "prompts": "^2.4.2", - "prop-types": "^15.7.2", - "query-string": "^6.14.1", - "raw-loader": "^4.0.2", - "react-dev-utils": "^12.0.1", - "react-refresh": "^0.9.0", - "redux": "4.1.2", - "redux-thunk": "^2.4.0", - "resolve-from": "^5.0.0", - "semver": "^7.3.7", - "shallow-compare": "^1.2.2", - "signal-exit": "^3.0.5", - "slugify": "^1.6.1", - "socket.io": "3.1.2", - "socket.io-client": "3.1.3", - "st": "^2.0.0", - "stack-trace": "^0.0.10", - "string-similarity": "^1.2.2", - "strip-ansi": "^6.0.1", - "style-loader": "^2.0.0", - "terser-webpack-plugin": "^5.2.4", - "tmp": "^0.2.1", - "true-case-path": "^2.2.1", - "type-of": "^2.0.1", - "url-loader": "^4.1.1", - "uuid": "^8.3.2", - "webpack": "^5.61.0", - "webpack-dev-middleware": "^4.3.0", - "webpack-merge": "^5.8.0", - "webpack-stats-plugin": "^1.0.3", - "webpack-virtual-modules": "^0.3.2", - "xstate": "4.32.1", - "yaml-loader": "^0.6.0" - }, - "bin": { - "gatsby": "cli.js" - }, - "engines": { - "node": ">=14.15.0" - }, - "optionalDependencies": { - "gatsby-sharp": "^0.16.0" - }, - "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.9.0 || ^17.0.0 || ^18.0.0" + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/gatsby-cli": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/gatsby-cli/-/gatsby-cli-4.25.0.tgz", - "integrity": "sha512-CJ2PCsfFmn9Xqc/jg9MFMU1BG5oQGiej1TFFx8GhChJ+kGhi9ANnNM+qo1K4vOmoMnsT4SSGiPAFD10AWFqpAQ==", - "hasInstallScript": true, - "dependencies": { - "@babel/code-frame": "^7.14.0", - "@babel/core": "^7.15.5", - "@babel/generator": "^7.16.8", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/preset-typescript": "^7.16.7", - "@babel/runtime": "^7.15.4", - "@babel/template": "^7.16.7", - "@babel/types": "^7.16.8", - "@jridgewell/trace-mapping": "^0.3.13", - "@types/common-tags": "^1.8.1", - "better-opn": "^2.1.1", - "boxen": "^5.1.2", - "chalk": "^4.1.2", - "clipboardy": "^2.3.0", - "common-tags": "^1.8.2", - "convert-hrtime": "^3.0.0", - "create-gatsby": "^2.25.0", - "envinfo": "^7.8.1", - "execa": "^5.1.1", - "fs-exists-cached": "^1.0.0", - "fs-extra": "^10.1.0", - "gatsby-core-utils": "^3.25.0", - "gatsby-telemetry": "^3.25.0", - "hosted-git-info": "^3.0.8", - "is-valid-path": "^0.1.1", - "joi": "^17.4.2", - "lodash": "^4.17.21", - "node-fetch": "^2.6.6", - "opentracing": "^0.14.5", - "pretty-error": "^2.1.2", - "progress": "^2.0.3", - "prompts": "^2.4.2", - "redux": "4.1.2", - "resolve-cwd": "^3.0.0", - "semver": "^7.3.7", - "signal-exit": "^3.0.6", - "stack-trace": "^0.0.10", - "strip-ansi": "^6.0.1", - "update-notifier": "^5.1.0", - "yargs": "^15.4.1", - "yoga-layout-prebuilt": "^1.10.0", - "yurnalist": "^2.1.0" - }, - "bin": { - "gatsby": "cli.js" - }, - "engines": { - "node": ">=14.15.0" - } + "node_modules/micromark-core-commonmark/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] }, - "node_modules/gatsby-cli/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/micromark-extension-directive": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-3.0.0.tgz", + "integrity": "sha512-61OI07qpQrERc+0wEysLHMvoiO3s2R56x5u7glHq2Yqq6EHbH4dW25G9GfDdGCDYqA21KE6DWgNSzxSwHc2hSg==", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "parse-entities": "^4.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/gatsby-cli/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/micromark-extension-directive/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/gatsby-cli/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/micromark-extension-directive/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/gatsby-cli/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/gatsby-cli/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/gatsby-cli/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } + "node_modules/micromark-extension-directive/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] }, - "node_modules/gatsby-cli/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "node_modules/micromark-extension-frontmatter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-2.0.0.tgz", + "integrity": "sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "fault": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" }, - "engines": { - "node": ">=10" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/gatsby-cli/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/micromark-extension-frontmatter/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/gatsby-cli/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "node_modules/micromark-extension-frontmatter/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] }, - "node_modules/gatsby-core-utils": { - "version": "3.25.0", - "resolved": "https://registry.npmjs.org/gatsby-core-utils/-/gatsby-core-utils-3.25.0.tgz", - "integrity": "sha512-lmMDwbnKpqAi+8WWd7MvCTCx3E0u7j8sbVgydERNCYVxKVpzD/aLCH4WPb4EE9m1H1rSm76w0Z+MaentyB/c/Q==", + "node_modules/micromark-extension-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", "dependencies": { - "@babel/runtime": "^7.15.4", - "ci-info": "2.0.0", - "configstore": "^5.0.1", - "fastq": "^1.13.0", - "file-type": "^16.5.3", - "fs-extra": "^10.1.0", - "got": "^11.8.5", - "import-from": "^4.0.0", - "lmdb": "2.5.3", - "lock": "^1.1.0", - "node-object-hash": "^2.3.10", - "proper-lockfile": "^4.1.2", - "resolve-from": "^5.0.0", - "tmp": "^0.2.1", - "xdg-basedir": "^4.0.0" + "micromark-extension-gfm-autolink-literal": "^2.0.0", + "micromark-extension-gfm-footnote": "^2.0.0", + "micromark-extension-gfm-strikethrough": "^2.0.0", + "micromark-extension-gfm-table": "^2.0.0", + "micromark-extension-gfm-tagfilter": "^2.0.0", + "micromark-extension-gfm-task-list-item": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" }, - "engines": { - "node": ">=14.15.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/gatsby-graphiql-explorer": { - "version": "2.25.0", - "resolved": "https://registry.npmjs.org/gatsby-graphiql-explorer/-/gatsby-graphiql-explorer-2.25.0.tgz", - "integrity": "sha512-/NDsaW4x3/KtvzmxYvedhDwUW1kb7gQO6iOhCkillVJSYBd6mPB8aOSulM49fyCT76UXGYFtRaUI8fyOkmpWhg==", + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.0.0.tgz", + "integrity": "sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==", "dependencies": { - "@babel/runtime": "^7.15.4" + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" }, - "engines": { - "node": ">=14.15.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/gatsby-legacy-polyfills": { - "version": "2.25.0", - "resolved": "https://registry.npmjs.org/gatsby-legacy-polyfills/-/gatsby-legacy-polyfills-2.25.0.tgz", - "integrity": "sha512-cMeFwMH1FGENo2gNpyTyMYc/CJ7uBGE26n89OGrVVvBMaQegK+CMNZBOh09sLrXUcOp8hSOX2IwzvOlo6CdWpg==", + "node_modules/micromark-extension-gfm-autolink-literal/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "@babel/runtime": "^7.15.4", - "core-js-compat": "3.9.0" + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/gatsby-legacy-polyfills/node_modules/core-js-compat": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.9.0.tgz", - "integrity": "sha512-YK6fwFjCOKWwGnjFUR3c544YsnA/7DoLL0ysncuOJ4pwbriAtOpvM2bygdlcXbvQCQZ7bBU9CL4t7tGl7ETRpQ==", + "node_modules/micromark-extension-gfm-autolink-literal/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.0.0.tgz", + "integrity": "sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==", "dependencies": { - "browserslist": "^4.16.3", - "semver": "7.0.0" + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/gatsby-legacy-polyfills/node_modules/semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "bin": { - "semver": "bin/semver.js" + "url": "https://opencollective.com/unified" } }, - "node_modules/gatsby-link": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/gatsby-link/-/gatsby-link-4.25.0.tgz", - "integrity": "sha512-Fpwk45sUMPvFUAZehNE8SLb3vQyVSxt9YxU++ZZECyukK4A/3Wxk3eIzoNvwfpMfWu6pnAkqcBhIO6KAfvbPGQ==", + "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "@types/reach__router": "^1.3.10", - "gatsby-page-utils": "^2.25.0", - "prop-types": "^15.8.1" - }, - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "@gatsbyjs/reach-router": "^1.3.5", - "react": "^16.9.0 || ^17.0.0 || ^18.0.0 || ^0.0.0", - "react-dom": "^16.9.0 || ^17.0.0 || ^18.0.0 || ^0.0.0" + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/gatsby-link/node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/gatsby-link/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "node_modules/gatsby-page-utils": { - "version": "2.25.0", - "resolved": "https://registry.npmjs.org/gatsby-page-utils/-/gatsby-page-utils-2.25.0.tgz", - "integrity": "sha512-TlwS149JCeb3xGANeV8HdcQi9Q8J9hYwlO9jdxLGVIXVGbWIMWFrDuwx382jOOsISGQ3jfByToNulUzO6fiqig==", + "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "@babel/runtime": "^7.15.4", - "bluebird": "^3.7.2", - "chokidar": "^3.5.3", - "fs-exists-cached": "^1.0.0", - "gatsby-core-utils": "^3.25.0", - "glob": "^7.2.3", - "lodash": "^4.17.21", - "micromatch": "^4.0.5" - }, - "engines": { - "node": ">=14.15.0" + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/gatsby-parcel-config": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/gatsby-parcel-config/-/gatsby-parcel-config-0.13.0.tgz", - "integrity": "sha512-RJdrI8ioVXpwoCu9XjhQu/xidIshI+Vvjn07WlGV4IRNW77Xt9t2iXk12LdTHKmvKxXmGIA0CeC0eEg79V/2EQ==", - "dependencies": { - "@gatsbyjs/parcel-namer-relative-to-cwd": "1.7.0", - "@parcel/bundler-default": "2.6.2", - "@parcel/compressor-raw": "2.6.2", - "@parcel/namer-default": "2.6.2", - "@parcel/optimizer-terser": "2.6.2", - "@parcel/packager-js": "2.6.2", - "@parcel/packager-raw": "2.6.2", - "@parcel/reporter-dev-server": "2.6.2", - "@parcel/resolver-default": "2.6.2", - "@parcel/runtime-browser-hmr": "2.6.2", - "@parcel/runtime-js": "2.6.2", - "@parcel/runtime-react-refresh": "2.6.2", - "@parcel/runtime-service-worker": "2.6.2", - "@parcel/transformer-js": "2.6.2", - "@parcel/transformer-json": "2.6.2", - "@parcel/transformer-raw": "2.6.2", - "@parcel/transformer-react-refresh-wrap": "2.6.2" - }, - "engines": { - "parcel": "2.x" - }, - "peerDependencies": { - "@parcel/core": "^2.0.0" - } + "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] }, - "node_modules/gatsby-plugin-algolia": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/gatsby-plugin-algolia/-/gatsby-plugin-algolia-1.0.3.tgz", - "integrity": "sha512-fM+Kmk0O5/m8/40I2AiILdTkn8YYRsKACpgdS5z/AwE9zXZ2uCKDadWljLZ5iynmFn84f/gNNvZsuyKlOtjOtw==", + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==", "dependencies": { - "algoliasearch": "^4.9.1", - "lodash.chunk": "^4.2.0" + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" }, - "engines": { - "node": ">=12.13.0" - }, - "peerDependencies": { - "gatsby": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/gatsby-plugin-catch-links": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/gatsby-plugin-catch-links/-/gatsby-plugin-catch-links-4.22.0.tgz", - "integrity": "sha512-uBJMvNGEfk10WRfsUXw0OWhuP2BgamjbfDTh54emNb2MtmN3cz91G5ZDQWxFe24+3BSagJ3WN3lwDra9r1UjuQ==", - "dependencies": { - "@babel/runtime": "^7.15.4", - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "gatsby": "^4.0.0-next" - } + "node_modules/micromark-extension-gfm-strikethrough/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] }, - "node_modules/gatsby-plugin-google-tagmanager": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/gatsby-plugin-google-tagmanager/-/gatsby-plugin-google-tagmanager-4.22.0.tgz", - "integrity": "sha512-TNQLz7E3TypzXTfH/MIX1R+n8JclWfbHEK+4TnTEqjbUeTbLAkUCBlzqOCm/gWABWszpI2VYDN+UkOnfiZ3hVw==", + "node_modules/micromark-extension-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.0.0.tgz", + "integrity": "sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==", "dependencies": { - "@babel/runtime": "^7.15.4", - "web-vitals": "^1.1.2" - }, - "engines": { - "node": ">=14.15.0" + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" }, - "peerDependencies": { - "gatsby": "^4.0.0-next", - "react": "^16.9.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.9.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/gatsby-plugin-image": { - "version": "2.22.0", - "resolved": "https://registry.npmjs.org/gatsby-plugin-image/-/gatsby-plugin-image-2.22.0.tgz", - "integrity": "sha512-39XbPtUv/rtB/PffkTiEYjGGAFkqivWHGLil1aqiDo42RhPhhgHQ5Y2mn9B3ZiK86foUhSjQMRX6XSgTw2CGDA==", - "dependencies": { - "@babel/code-frame": "^7.14.0", - "@babel/parser": "^7.15.5", - "@babel/runtime": "^7.15.4", - "@babel/traverse": "^7.15.4", - "babel-jsx-utils": "^1.1.0", - "babel-plugin-remove-graphql-queries": "^4.22.0", - "camelcase": "^5.3.1", - "chokidar": "^3.5.3", - "common-tags": "^1.8.2", - "fs-extra": "^10.1.0", - "gatsby-core-utils": "^3.22.0", - "gatsby-plugin-utils": "^3.16.0", - "objectFitPolyfill": "^2.3.5", - "prop-types": "^15.8.1" - }, - "peerDependencies": { - "@babel/core": "^7.12.3", - "gatsby": "^4.0.0-next", - "gatsby-plugin-sharp": "^4.0.0-next", - "gatsby-source-filesystem": "^4.0.0-next", - "react": "^16.9.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.9.0 || ^17.0.0 || ^18.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/gatsby-plugin-image/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "engines": { - "node": ">=6" + "node_modules/micromark-extension-gfm-table/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/gatsby-plugin-image/node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "node_modules/micromark-extension-gfm-table/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/gatsby-plugin-image/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "node_modules/micromark-extension-gfm-table/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] }, - "node_modules/gatsby-plugin-mdx": { - "version": "3.15.2", - "resolved": "https://registry.npmjs.org/gatsby-plugin-mdx/-/gatsby-plugin-mdx-3.15.2.tgz", - "integrity": "sha512-TsEgeAq40x7IwABXZkZcGStltr6gr3DnGjmhq4QZKapjtsPeTzWKp9HhB93t0OCDD9AfWUCH/teQq0rFTvsaEw==", - "dependencies": { - "@babel/core": "^7.15.5", - "@babel/generator": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.0", - "@babel/plugin-proposal-object-rest-spread": "^7.14.7", - "@babel/preset-env": "^7.15.4", - "@babel/preset-react": "^7.14.0", - "@babel/runtime": "^7.15.4", - "@babel/types": "^7.15.4", - "camelcase-css": "^2.0.1", - "change-case": "^3.1.0", - "core-js": "^3.22.3", - "dataloader": "^1.4.0", - "debug": "^4.3.1", - "escape-string-regexp": "^1.0.5", - "eval": "^0.1.4", - "fs-extra": "^10.1.0", - "gatsby-core-utils": "^3.15.0", - "gray-matter": "^4.0.2", - "json5": "^2.1.3", - "loader-utils": "^1.4.0", - "lodash": "^4.17.21", - "mdast-util-to-string": "^1.1.0", - "mdast-util-toc": "^3.1.0", - "mime": "^2.4.6", - "mkdirp": "^1.0.4", - "p-queue": "^6.6.2", - "pretty-bytes": "^5.3.0", - "remark": "^10.0.1", - "remark-retext": "^3.1.3", - "retext-english": "^3.0.4", - "slugify": "^1.4.4", - "static-site-generator-webpack-plugin": "^3.4.2", - "style-to-object": "^0.3.0", - "underscore.string": "^3.3.5", - "unified": "^8.4.2", - "unist-util-map": "^1.0.5", - "unist-util-remove": "^1.0.3", - "unist-util-visit": "^1.4.1" + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", + "dependencies": { + "micromark-util-types": "^2.0.0" }, - "peerDependencies": { - "@mdx-js/mdx": "^1.0.0", - "@mdx-js/react": "^1.0.0", - "gatsby": "^4.0.0-next", - "react": "^16.9.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.9.0 || ^17.0.0 || ^18.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/gatsby-plugin-mdx/node_modules/camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==", + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.0.1.tgz", + "integrity": "sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==", "dependencies": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/gatsby-plugin-mdx/node_modules/change-case": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/change-case/-/change-case-3.1.0.tgz", - "integrity": "sha512-2AZp7uJZbYEzRPsFoa+ijKdvp9zsrnnt6+yFokfwEpeJm0xuJDVoxiRCAaTzyJND8GJkofo2IcKWaUZ/OECVzw==", - "dependencies": { - "camel-case": "^3.0.0", - "constant-case": "^2.0.0", - "dot-case": "^2.1.0", - "header-case": "^1.0.0", - "is-lower-case": "^1.1.0", - "is-upper-case": "^1.1.0", - "lower-case": "^1.1.1", - "lower-case-first": "^1.0.0", - "no-case": "^2.3.2", - "param-case": "^2.1.0", - "pascal-case": "^2.0.0", - "path-case": "^2.1.0", - "sentence-case": "^2.1.0", - "snake-case": "^2.1.0", - "swap-case": "^1.1.0", - "title-case": "^2.1.0", - "upper-case": "^1.1.1", - "upper-case-first": "^1.1.0" - } - }, - "node_modules/gatsby-plugin-mdx/node_modules/constant-case": { + "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-factory-space": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-2.0.0.tgz", - "integrity": "sha512-eS0N9WwmjTqrOmR3o83F5vW8Z+9R1HnVz3xmzT2PMFug9ly+Au/fxRWlEBSb6LcZwspSsEn9Xs1uw9YgzAg1EQ==", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "snake-case": "^2.1.0", - "upper-case": "^1.1.1" + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/gatsby-plugin-mdx/node_modules/dot-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-2.1.1.tgz", - "integrity": "sha512-HnM6ZlFqcajLsyudHq7LeeLDr2rFAVYtDv/hV5qchQEidSck8j9OPUsXY9KwJv/lHMtYlX4DjRQqwFYa+0r8Ug==", + "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "no-case": "^2.2.0" + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/gatsby-plugin-mdx/node_modules/header-case": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/header-case/-/header-case-1.0.1.tgz", - "integrity": "sha512-i0q9mkOeSuhXw6bGgiQCCBgY/jlZuV/7dZXyZ9c6LcBrqwvT8eT719E9uxE5LiZftdl+z81Ugbg/VvXV4OJOeQ==", + "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-extension-mdx-expression": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.0.tgz", + "integrity": "sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "no-case": "^2.2.0", - "upper-case": "^1.1.3" + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/gatsby-plugin-mdx/node_modules/is-lower-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-lower-case/-/is-lower-case-1.1.3.tgz", - "integrity": "sha512-+5A1e/WJpLLXZEDlgz4G//WYSHyQBD32qa4Jd3Lw06qQlv3fJHnp3YIHjTQSGzHMgzmVKz2ZP3rBxTHkPw/lxA==", + "node_modules/micromark-extension-mdx-expression/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "lower-case": "^1.1.0" + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/gatsby-plugin-mdx/node_modules/is-plain-obj": { + "node_modules/micromark-extension-mdx-expression/node_modules/micromark-util-character": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/gatsby-plugin-mdx/node_modules/is-upper-case": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-upper-case/-/is-upper-case-1.1.2.tgz", - "integrity": "sha512-GQYSJMgfeAmVwh9ixyk888l7OIhNAGKtY6QA+IrWlu9MDTCaXmeozOZ2S9Knj7bQwBO/H6J2kb+pbyTUiMNbsw==", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "upper-case": "^1.1.0" + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/gatsby-plugin-mdx/node_modules/loader-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", - "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } + "node_modules/micromark-extension-mdx-expression/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] }, - "node_modules/gatsby-plugin-mdx/node_modules/loader-utils/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "node_modules/micromark-extension-mdx-jsx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.0.tgz", + "integrity": "sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==", "dependencies": { - "minimist": "^1.2.0" + "@types/acorn": "^4.0.0", + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" }, - "bin": { - "json5": "lib/cli.js" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/gatsby-plugin-mdx/node_modules/lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==" - }, - "node_modules/gatsby-plugin-mdx/node_modules/lower-case-first": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/lower-case-first/-/lower-case-first-1.0.2.tgz", - "integrity": "sha512-UuxaYakO7XeONbKrZf5FEgkantPf5DUqDayzP5VXZrtRPdH86s4kN47I8B3TW10S4QKiE3ziHNf3kRN//okHjA==", + "node_modules/micromark-extension-mdx-jsx/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "lower-case": "^1.1.2" + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/gatsby-plugin-mdx/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/gatsby-plugin-mdx/node_modules/no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "node_modules/micromark-extension-mdx-jsx/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "lower-case": "^1.1.1" + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/gatsby-plugin-mdx/node_modules/param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==", - "dependencies": { - "no-case": "^2.2.0" - } + "node_modules/micromark-extension-mdx-jsx/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] }, - "node_modules/gatsby-plugin-mdx/node_modules/pascal-case": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-2.0.1.tgz", - "integrity": "sha512-qjS4s8rBOJa2Xm0jmxXiyh1+OFf6ekCWOvUaRgAQSktzlTbMotS0nmG9gyYAybCWBcuP4fsBeRCKNwGBnMe2OQ==", + "node_modules/micromark-extension-mdx-md": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", + "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", "dependencies": { - "camel-case": "^3.0.0", - "upper-case-first": "^1.1.0" + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/gatsby-plugin-mdx/node_modules/path-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/path-case/-/path-case-2.1.1.tgz", - "integrity": "sha512-Ou0N05MioItesaLr9q8TtHVWmJ6fxWdqKB2RohFmNWVyJ+2zeKIeDNWAN6B/Pe7wpzWChhZX6nONYmOnMeJQ/Q==", + "node_modules/micromark-extension-mdxjs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", + "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", "dependencies": { - "no-case": "^2.2.0" + "acorn": "^8.0.0", + "acorn-jsx": "^5.0.0", + "micromark-extension-mdx-expression": "^3.0.0", + "micromark-extension-mdx-jsx": "^3.0.0", + "micromark-extension-mdx-md": "^2.0.0", + "micromark-extension-mdxjs-esm": "^3.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/gatsby-plugin-mdx/node_modules/sentence-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-2.1.1.tgz", - "integrity": "sha512-ENl7cYHaK/Ktwk5OTD+aDbQ3uC8IByu/6Bkg+HDv8Mm+XnBnppVNalcfJTNsp1ibstKh030/JKQQWglDvtKwEQ==", + "node_modules/micromark-extension-mdxjs-esm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", + "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", "dependencies": { - "no-case": "^2.2.0", - "upper-case-first": "^1.1.2" + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/gatsby-plugin-mdx/node_modules/snake-case": { + "node_modules/micromark-extension-mdxjs-esm/node_modules/micromark-util-character": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-2.1.0.tgz", - "integrity": "sha512-FMR5YoPFwOLuh4rRz92dywJjyKYZNLpMn1R5ujVpIYkbA9p01fq8RMg0FkO4M+Yobt4MjHeLTJVm5xFFBHSV2Q==", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "no-case": "^2.2.0" + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/gatsby-plugin-mdx/node_modules/swap-case": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/swap-case/-/swap-case-1.1.2.tgz", - "integrity": "sha512-BAmWG6/bx8syfc6qXPprof3Mn5vQgf5dwdUNJhsNqU9WdPt5P+ES/wQ5bxfijy8zwZgZZHslC3iAsxsuQMCzJQ==", - "dependencies": { - "lower-case": "^1.1.1", - "upper-case": "^1.1.1" - } + "node_modules/micromark-extension-mdxjs-esm/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] }, - "node_modules/gatsby-plugin-mdx/node_modules/title-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/title-case/-/title-case-2.1.1.tgz", - "integrity": "sha512-EkJoZ2O3zdCz3zJsYCsxyq2OC5hrxR9mfdd5I+w8h/tmFfeOxJ+vvkxsKxdmN0WtS9zLdHEgfgVOiMVgv+Po4Q==", + "node_modules/micromark-factory-destination": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", + "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "no-case": "^2.2.0", - "upper-case": "^1.0.3" + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/gatsby-plugin-mdx/node_modules/unified": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-8.4.2.tgz", - "integrity": "sha512-JCrmN13jI4+h9UAyKEoGcDZV+i1E7BLFuG7OsaDvTXI5P0qhHX+vZO/kOhz9jn8HGENDKbwSeB0nVOg4gVStGA==", + "node_modules/micromark-factory-destination/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/gatsby-plugin-mdx/node_modules/unist-util-is": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", - "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==" + "node_modules/micromark-factory-destination/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] }, - "node_modules/gatsby-plugin-mdx/node_modules/unist-util-visit": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", - "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", + "node_modules/micromark-factory-label": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", + "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "unist-util-visit-parents": "^2.0.0" + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/gatsby-plugin-mdx/node_modules/unist-util-visit-parents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", - "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", + "node_modules/micromark-factory-label/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "unist-util-is": "^3.0.0" + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/gatsby-plugin-mdx/node_modules/upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==" + "node_modules/micromark-factory-label/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] }, - "node_modules/gatsby-plugin-mdx/node_modules/upper-case-first": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-1.1.2.tgz", - "integrity": "sha512-wINKYvI3Db8dtjikdAqoBbZoP6Q+PZUyfMR7pmwHzjC2quzSkUq5DmPrTtPEqHaz8AGtmsB4TqwapMTM1QAQOQ==", + "node_modules/micromark-factory-mdx-expression": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.1.tgz", + "integrity": "sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "upper-case": "^1.1.1" + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" } }, - "node_modules/gatsby-plugin-meta-redirect": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/gatsby-plugin-meta-redirect/-/gatsby-plugin-meta-redirect-1.1.1.tgz", - "integrity": "sha512-Oc4qgU3SlDUM9qoxIMKO+re2bdMs3/a2KXrfL65gb8XMLsHylBbveWtXZRhgjd2QDL/49RX4S9SEykuadRju2w==", + "node_modules/micromark-factory-mdx-expression/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "fs-extra": "^7.0.0" - }, - "engines": { - "node": ">=8" + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/gatsby-plugin-meta-redirect/node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "node_modules/micromark-factory-mdx-expression/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-factory-space": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz", + "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" + "micromark-util-character": "^1.0.0", + "micromark-util-types": "^1.0.0" } }, - "node_modules/gatsby-plugin-meta-redirect/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } + "node_modules/micromark-factory-space/node_modules/micromark-util-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", + "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] }, - "node_modules/gatsby-plugin-meta-redirect/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "engines": { - "node": ">= 4.0.0" + "node_modules/micromark-factory-title": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", + "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/gatsby-plugin-page-creator": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/gatsby-plugin-page-creator/-/gatsby-plugin-page-creator-4.25.0.tgz", - "integrity": "sha512-plHek7xHSV9l1bLPa1JAnxzBqP7j2ihCPRwpBk/wIJAR8cG65wjAT+Nu8DKpW0+2/MYill84ns1r2m8g0L/7bg==", + "node_modules/micromark-factory-title/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "@babel/runtime": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@sindresorhus/slugify": "^1.1.2", - "chokidar": "^3.5.3", - "fs-exists-cached": "^1.0.0", - "fs-extra": "^10.1.0", - "gatsby-core-utils": "^3.25.0", - "gatsby-page-utils": "^2.25.0", - "gatsby-plugin-utils": "^3.19.0", - "gatsby-telemetry": "^3.25.0", - "globby": "^11.1.0", - "lodash": "^4.17.21" - }, - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "gatsby": "^4.0.0-next" + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/gatsby-plugin-robots-txt": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/gatsby-plugin-robots-txt/-/gatsby-plugin-robots-txt-1.7.1.tgz", - "integrity": "sha512-ZdZm8/4b7Whf+W5kf+DqjZwz/+DY+IB7xp227+m2f2rgGUsz8yVCz4RitiN5+EInGFZFry0v+IbrUKCXTpIZYg==", - "dependencies": { - "@babel/runtime": "^7.16.7", - "generate-robotstxt": "^8.0.3" - }, - "peerDependencies": { - "gatsby": "^4.0.0 || ^3.0.0 || ^2.0.0" - } - }, - "node_modules/gatsby-plugin-sharp": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/gatsby-plugin-sharp/-/gatsby-plugin-sharp-4.22.0.tgz", - "integrity": "sha512-LL9M6aa5lXXRg1CrjIs10v2gMyjnVWBwWNXZCQzhP2OHdfxPhL4YapYIWPIJXqQSZG85bOP09fEnFfOpttfgUQ==", - "dependencies": { - "@babel/runtime": "^7.15.4", - "@gatsbyjs/potrace": "^2.3.0", - "async": "^3.2.4", - "bluebird": "^3.7.2", - "debug": "^4.3.4", - "filenamify": "^4.3.0", - "fs-extra": "^10.1.0", - "gatsby-core-utils": "^3.22.0", - "gatsby-plugin-utils": "^3.16.0", - "lodash": "^4.17.21", - "mini-svg-data-uri": "^1.4.4", - "probe-image-size": "^7.2.3", - "semver": "^7.3.7", - "sharp": "^0.30.7", - "svgo": "1.3.2" - }, - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "gatsby": "^4.0.0-next" + "node_modules/micromark-factory-title/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/gatsby-plugin-sharp/node_modules/async": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", - "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" + "node_modules/micromark-factory-title/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] }, - "node_modules/gatsby-plugin-sharp/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/micromark-factory-whitespace": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", + "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/gatsby-plugin-sharp/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "node_modules/micromark-factory-whitespace/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/gatsby-plugin-sharp/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/gatsby-plugin-sitemap": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/gatsby-plugin-sitemap/-/gatsby-plugin-sitemap-5.22.0.tgz", - "integrity": "sha512-51iJqCT+bCJ37akJnSvmCTjqVBIFLe/oE0sBLyjkCbMgmCFRW67eLRMsQeLRcm4KkIex3fbpGaAOxvXvP+FFUQ==", + "node_modules/micromark-factory-whitespace/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "@babel/runtime": "^7.15.4", - "common-tags": "^1.8.2", - "minimatch": "^3.1.2", - "sitemap": "^7.0.0" - }, - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "gatsby": "^4.0.0-next", - "react": "^16.9.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.9.0 || ^17.0.0 || ^18.0.0" + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/gatsby-plugin-smoothscroll": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gatsby-plugin-smoothscroll/-/gatsby-plugin-smoothscroll-1.2.0.tgz", - "integrity": "sha512-wfIK06xwbNx91nHVg1YJwlLUJc0EmfWqV8KgvlNr6gFa9pqMx5Mprdp5jDRloAi3+9K0dVCybPO8FfaZ0i4HgA==", - "dependencies": { - "smoothscroll-polyfill": "^0.4.4" - } + "node_modules/micromark-factory-whitespace/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] }, - "node_modules/gatsby-plugin-styled-components": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/gatsby-plugin-styled-components/-/gatsby-plugin-styled-components-5.22.0.tgz", - "integrity": "sha512-L/+W8abTBTCpGpyC6efKwUcrGzE6Rk6Kgc8eTn+Nx/w+Vuxk3y4W7Ed7kuLb+MeRBfIR1PBFTJOfwum5j+Or7Q==", + "node_modules/micromark-util-character": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz", + "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "@babel/runtime": "^7.15.4" - }, - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "babel-plugin-styled-components": ">1.5.0", - "gatsby": "^4.0.0-next", - "react": "^16.9.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.9.0 || ^17.0.0 || ^18.0.0", - "styled-components": ">=2.0.0" + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" } }, - "node_modules/gatsby-plugin-typescript": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/gatsby-plugin-typescript/-/gatsby-plugin-typescript-4.25.0.tgz", - "integrity": "sha512-8BTtiVWuIqIEGx/PBBMWd6FYPgel16hT3js7SMo5oI9K4EPsSxRItgRf41MTJGxRR20EhL4e99g2S8x0v1+odA==", - "dependencies": { - "@babel/core": "^7.15.5", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5", - "@babel/plugin-proposal-numeric-separator": "^7.14.5", - "@babel/plugin-proposal-optional-chaining": "^7.14.5", - "@babel/preset-typescript": "^7.15.0", - "@babel/runtime": "^7.15.4", - "babel-plugin-remove-graphql-queries": "^4.25.0" - }, - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "gatsby": "^4.0.0-next" - } - }, - "node_modules/gatsby-plugin-utils": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/gatsby-plugin-utils/-/gatsby-plugin-utils-3.19.0.tgz", - "integrity": "sha512-EZtvgHSU5NPbEn6a4cfSpEGCQ09SfwbhoybHTJKj1clop86HSwOCV2iH8RbCc+X6jbdgHaSZsfsl7zG1h7DBUw==", - "dependencies": { - "@babel/runtime": "^7.15.4", - "fastq": "^1.13.0", - "fs-extra": "^10.1.0", - "gatsby-core-utils": "^3.25.0", - "gatsby-sharp": "^0.19.0", - "graphql-compose": "^9.0.7", - "import-from": "^4.0.0", - "joi": "^17.4.2", - "mime": "^3.0.0" - }, - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "gatsby": "^4.0.0-next", - "graphql": "^15.0.0" - } + "node_modules/micromark-util-character/node_modules/micromark-util-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", + "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] }, - "node_modules/gatsby-plugin-utils/node_modules/gatsby-sharp": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/gatsby-sharp/-/gatsby-sharp-0.19.0.tgz", - "integrity": "sha512-EbI3RNBu2+aaxuMUP/INmoj8vcNAG6BgpFvi1tLeU7/gVTNVQ+7pC/ZYtlVCzSw+faaw7r1ZBMi6F66mNIIz5A==", + "node_modules/micromark-util-chunked": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", + "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "@types/sharp": "^0.30.5", - "sharp": "^0.30.7" - }, - "engines": { - "node": ">=14.15.0" + "micromark-util-symbol": "^2.0.0" } }, - "node_modules/gatsby-plugin-utils/node_modules/mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=10.0.0" - } + "node_modules/micromark-util-chunked/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] }, - "node_modules/gatsby-plugin-webpack-bundle-analyser-v2": { - "version": "1.1.32", - "resolved": "https://registry.npmjs.org/gatsby-plugin-webpack-bundle-analyser-v2/-/gatsby-plugin-webpack-bundle-analyser-v2-1.1.32.tgz", - "integrity": "sha512-w6OJAR3CTyiKEKKD5tYu3J56YiQOW/8Sl2GPWmoiwzHIhZGjTOG+NbgkhboAK3+g2vgBlGTUmqgTAiJZWN7E/g==", - "dev": true, + "node_modules/micromark-util-classify-character": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", + "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "@babel/runtime": "^7.23.2", - "webpack-bundle-analyzer": "^4.10.1" - }, - "peerDependencies": { - "gatsby": "^4.0.0 || ^5.0.0" + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/gatsby-react-router-scroll": { - "version": "5.25.0", - "resolved": "https://registry.npmjs.org/gatsby-react-router-scroll/-/gatsby-react-router-scroll-5.25.0.tgz", - "integrity": "sha512-SFSdezIa5lahCE8ieCLrtLA5tztemGco/rN8si9rI9KHu1h1jPvDhsNqs2g+Z50JrUb1RPfsmxJTmLa5i6MIgQ==", + "node_modules/micromark-util-classify-character/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "@babel/runtime": "^7.15.4", - "prop-types": "^15.8.1" - }, - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "@gatsbyjs/reach-router": "^1.3.5", - "react": "^16.9.0 || ^17.0.0 || ^18.0.0 || ^0.0.0", - "react-dom": "^16.9.0 || ^17.0.0 || ^18.0.0 || ^0.0.0" + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/gatsby-react-router-scroll/node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "node_modules/micromark-util-classify-character/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", + "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/gatsby-react-router-scroll/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "node_modules/gatsby-remark-autolink-headers": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/gatsby-remark-autolink-headers/-/gatsby-remark-autolink-headers-5.22.0.tgz", - "integrity": "sha512-Eyom72XpN2x2BLCKdgWYnseeqXIcN9kVZmaXECGzc/IrE6RBHTMjzCMZJx9Ii39OAOhILaumOEfYhnAIw6SWXg==", + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", + "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "@babel/runtime": "^7.15.4", - "github-slugger": "^1.3.0", - "lodash": "^4.17.21", - "mdast-util-to-string": "^2.0.0", - "unist-util-visit": "^2.0.3" - }, - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "gatsby": "^4.0.0-next", - "react": "^16.9.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.9.0 || ^17.0.0 || ^18.0.0" + "micromark-util-symbol": "^2.0.0" } }, - "node_modules/gatsby-remark-autolink-headers/node_modules/mdast-util-to-string": { + "node_modules/micromark-util-decode-numeric-character-reference/node_modules/micromark-util-symbol": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", - "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/gatsby-remark-copy-linked-files": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/gatsby-remark-copy-linked-files/-/gatsby-remark-copy-linked-files-5.22.0.tgz", - "integrity": "sha512-n+HNVZDtog7o4LX0yS0uQbcPectfcf1VuOou/rhkzeGR1vKXTcTHpfc4A+n9MfvoBoV8N4FyZCGjSzxF9nqS2g==", - "dependencies": { - "@babel/runtime": "^7.15.4", - "cheerio": "^1.0.0-rc.10", - "fs-extra": "^10.1.0", - "is-relative-url": "^3.0.0", - "lodash": "^4.17.21", - "path-is-inside": "^1.0.2", - "probe-image-size": "^7.2.3", - "unist-util-visit": "^2.0.3" - }, - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "gatsby": "^4.0.0-next" - } - }, - "node_modules/gatsby-remark-normalize-paths": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/gatsby-remark-normalize-paths/-/gatsby-remark-normalize-paths-1.1.0.tgz", - "integrity": "sha512-/0mueJUohhuHHUe7N40Gn3b68DCVQWp6QDgsxpyBiykWvS0L6Aiv/SbmqX0oh0ubg47m4P6iakJUN/V2KKir4g==", - "dependencies": { - "is-valid-path": "^0.1.1", - "path": "^0.12.7", - "unist-util-visit": "^2.0.3" - }, - "peerDependencies": { - "gatsby": ">2.0.0-alpha" - } - }, - "node_modules/gatsby-remark-rewrite-relative-links": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/gatsby-remark-rewrite-relative-links/-/gatsby-remark-rewrite-relative-links-1.0.8.tgz", - "integrity": "sha512-7jCyMM+AWdp8mFLUWuJ5RGPQIKFzpLqf253QR6Aq8xrhlV0Bcz2k1+03MxPnGP0R5XetIoRm2W864KrbIZdk9Q==", - "dependencies": { - "unist-util-visit": "^2.0.0" - } - }, - "node_modules/gatsby-remark-sectionize": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gatsby-remark-sectionize/-/gatsby-remark-sectionize-1.0.0.tgz", - "integrity": "sha512-S6FefaA1KlBDRNw/RaH8iRUzdcFgB8nBYox3hraXqLsfRETRkY668ay6xo8iSNyl/XG+L6fjaNBss0KcmAqBSg==", - "dependencies": { - "remark-sectionize": "^1.0.1" - } - }, - "node_modules/gatsby-script": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/gatsby-script/-/gatsby-script-1.10.0.tgz", - "integrity": "sha512-8jAtQR0mw3G8sCy6i2D1jfGvUF5d9AIboEQuo9ZEChT4Ep5f+PSRxiWZqSjhKvintAOIeS4QXCJP5Rtp3xZKLg==", - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "@gatsbyjs/reach-router": "^1.3.5", - "react": "^16.9.0 || ^17.0.0 || ^18.0.0 || ^0.0.0", - "react-dom": "^16.9.0 || ^17.0.0 || ^18.0.0 || ^0.0.0" - } - }, - "node_modules/gatsby-sharp": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/gatsby-sharp/-/gatsby-sharp-0.16.0.tgz", - "integrity": "sha512-ApkxUe04waBzqyTE1x9OcP/ZzIbFBYxkjsrBoK+Fl2CZrQgBk7433kVVufy7FVW4o69StQmztrwaNEh2t5miTQ==", - "optional": true, - "dependencies": { - "@types/sharp": "^0.30.5", - "sharp": "^0.30.7" - }, - "engines": { - "node": ">=14.15.0" - } - }, - "node_modules/gatsby-source-filesystem": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/gatsby-source-filesystem/-/gatsby-source-filesystem-4.22.0.tgz", - "integrity": "sha512-fcL3M+bQgI8DxD+XfB5XAnMvXp6czfqRZs8J2RStw9p02ekLaR/8R9ZYrn8OoQYLB9y9CHid+pdA78Dy3h73cg==", - "dependencies": { - "@babel/runtime": "^7.15.4", - "chokidar": "^3.5.3", - "file-type": "^16.5.4", - "fs-extra": "^10.1.0", - "gatsby-core-utils": "^3.22.0", - "md5-file": "^5.0.0", - "mime": "^2.5.2", - "pretty-bytes": "^5.4.1", - "valid-url": "^1.0.9", - "xstate": "4.32.1" - }, - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "gatsby": "^4.0.0-next" - } - }, - "node_modules/gatsby-telemetry": { - "version": "3.25.0", - "resolved": "https://registry.npmjs.org/gatsby-telemetry/-/gatsby-telemetry-3.25.0.tgz", - "integrity": "sha512-FGC1yS2evJxTN/Ku9XonCBiqhH6uO6aPjjps65BbL+Xbpct/qfirIFxYG6DhHPrksR0fKOhstJGnQqay74hWdQ==", - "hasInstallScript": true, - "dependencies": { - "@babel/code-frame": "^7.14.0", - "@babel/runtime": "^7.15.4", - "@turist/fetch": "^7.2.0", - "@turist/time": "^0.0.2", - "boxen": "^4.2.0", - "configstore": "^5.0.1", - "fs-extra": "^10.1.0", - "gatsby-core-utils": "^3.25.0", - "git-up": "^7.0.0", - "is-docker": "^2.2.1", - "lodash": "^4.17.21", - "node-fetch": "^2.6.7" - }, - "engines": { - "node": ">=14.15.0" - } - }, - "node_modules/gatsby-telemetry/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/gatsby-telemetry/node_modules/boxen": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", - "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", - "dependencies": { - "ansi-align": "^3.0.0", - "camelcase": "^5.3.1", - "chalk": "^3.0.0", - "cli-boxes": "^2.2.0", - "string-width": "^4.1.0", - "term-size": "^2.1.0", - "type-fest": "^0.8.1", - "widest-line": "^3.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gatsby-telemetry/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/gatsby-telemetry/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/gatsby-telemetry/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/gatsby-telemetry/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/gatsby-telemetry/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/gatsby-telemetry/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/gatsby-telemetry/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/gatsby-transformer-remark": { - "version": "5.25.1", - "resolved": "https://registry.npmjs.org/gatsby-transformer-remark/-/gatsby-transformer-remark-5.25.1.tgz", - "integrity": "sha512-6k3uOnZYsJSgmZIWq9Y+Cqb6pysusCUBYpQY1+V9ofpSRbrZGGfuoCeFKd27x/c0jI5jneuL3NXnxwn/JJK1Ig==", - "dependencies": { - "@babel/runtime": "^7.15.4", - "gatsby-core-utils": "^3.25.0", - "gray-matter": "^4.0.3", - "hast-util-raw": "^6.0.2", - "hast-util-to-html": "^7.1.3", - "lodash": "^4.17.21", - "mdast-util-to-hast": "^10.2.0", - "mdast-util-to-string": "^2.0.0", - "mdast-util-toc": "^5.1.0", - "remark": "^13.0.0", - "remark-footnotes": "^3.0.0", - "remark-gfm": "^1.0.0", - "remark-parse": "^9.0.0", - "remark-retext": "^4.0.0", - "remark-stringify": "^9.0.1", - "retext-english": "^3.0.4", - "sanitize-html": "^1.27.5", - "underscore.string": "^3.3.6", - "unified": "^9.2.2", - "unist-util-remove-position": "^3.0.0", - "unist-util-select": "^3.0.4", - "unist-util-visit": "^2.0.3" - }, - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "gatsby": "^4.0.0-next" - } - }, - "node_modules/gatsby-transformer-remark/node_modules/hast-util-raw": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-6.1.0.tgz", - "integrity": "sha512-5FoZLDHBpka20OlZZ4I/+RBw5piVQ8iI1doEvffQhx5CbCyTtP8UCq8Tw6NmTAMtXgsQxmhW7Ly8OdFre5/YMQ==", - "dependencies": { - "@types/hast": "^2.0.0", - "hast-util-from-parse5": "^6.0.0", - "hast-util-to-parse5": "^6.0.0", - "html-void-elements": "^1.0.0", - "parse5": "^6.0.0", - "unist-util-position": "^3.0.0", - "unist-util-visit": "^2.0.0", - "vfile": "^4.0.0", - "web-namespaces": "^1.0.0", - "xtend": "^4.0.0", - "zwitch": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/gatsby-transformer-remark/node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/gatsby-transformer-remark/node_modules/mdast-util-to-hast": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.2.0.tgz", - "integrity": "sha512-JoPBfJ3gBnHZ18icCwHR50orC9kNH81tiR1gs01D8Q5YpV6adHNO9nKNuFBCJQ941/32PT1a63UF/DitmS3amQ==", - "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "mdast-util-definitions": "^4.0.0", - "mdurl": "^1.0.0", - "unist-builder": "^2.0.0", - "unist-util-generated": "^1.0.0", - "unist-util-position": "^3.0.0", - "unist-util-visit": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/gatsby-transformer-remark/node_modules/mdast-util-to-nlcst": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-to-nlcst/-/mdast-util-to-nlcst-4.0.1.tgz", - "integrity": "sha512-Y4ffygj85MTt70STKnEquw6k73jYWJBaYcb4ITAKgSNokZF7fH8rEHZ1GsRY/JaxqUevMaEnsDmkVv5Z9uVRdg==", - "dependencies": { - "nlcst-to-string": "^2.0.0", - "repeat-string": "^1.0.0", - "unist-util-position": "^3.0.0", - "vfile-location": "^3.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/gatsby-transformer-remark/node_modules/mdast-util-to-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", - "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/gatsby-transformer-remark/node_modules/mdast-util-toc": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-toc/-/mdast-util-toc-5.1.0.tgz", - "integrity": "sha512-csimbRIVkiqc+PpFeKDGQ/Ck2N4f9FYH3zzBMMJzcxoKL8m+cM0n94xXm0I9eaxHnKdY9n145SGTdyJC7i273g==", - "dependencies": { - "@types/mdast": "^3.0.3", - "@types/unist": "^2.0.3", - "extend": "^3.0.2", - "github-slugger": "^1.2.1", - "mdast-util-to-string": "^2.0.0", - "unist-util-is": "^4.0.0", - "unist-util-visit": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/gatsby-transformer-remark/node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" - }, - "node_modules/gatsby-transformer-remark/node_modules/remark": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz", - "integrity": "sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA==", - "dependencies": { - "remark-parse": "^9.0.0", - "remark-stringify": "^9.0.0", - "unified": "^9.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/gatsby-transformer-remark/node_modules/remark-footnotes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-3.0.0.tgz", - "integrity": "sha512-ZssAvH9FjGYlJ/PBVKdSmfyPc3Cz4rTWgZLI4iE/SX8Nt5l3o3oEjv3wwG5VD7xOjktzdwp5coac+kJV9l4jgg==", - "dependencies": { - "mdast-util-footnote": "^0.1.0", - "micromark-extension-footnote": "^0.3.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/gatsby-transformer-remark/node_modules/remark-parse": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", - "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==", - "dependencies": { - "mdast-util-from-markdown": "^0.8.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/gatsby-transformer-remark/node_modules/remark-retext": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-retext/-/remark-retext-4.0.0.tgz", - "integrity": "sha512-cYCchalpf25bTtfXF24ribYvqytPKq0TiEhqQDBHvVEEsApebwruPWP1cTcvTFBidmpXyqzycm+y8ng7Kmvc8Q==", - "dependencies": { - "mdast-util-to-nlcst": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/gatsby-transformer-remark/node_modules/unified": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", - "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", - "dependencies": { - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/gatsby-transformer-sharp": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/gatsby-transformer-sharp/-/gatsby-transformer-sharp-4.22.0.tgz", - "integrity": "sha512-gTZ9pXwxsdmGEBV6yANnZFvsw921r6FChzuD43r+7JTs7uhmBsSGPPSF3EQnOKClP9co3IE0kztYSLoUHQe/cQ==", - "dependencies": { - "@babel/runtime": "^7.15.4", - "@gatsbyjs/potrace": "^2.3.0", - "bluebird": "^3.7.2", - "common-tags": "^1.8.2", - "fs-extra": "^10.1.0", - "gatsby-plugin-utils": "^3.16.0", - "probe-image-size": "^7.2.3", - "semver": "^7.3.7", - "sharp": "^0.30.7" - }, - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "gatsby": "^4.0.0-next", - "gatsby-plugin-sharp": "^4.0.0-next" - } - }, - "node_modules/gatsby-transformer-sharp/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/gatsby-transformer-sharp/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/gatsby-transformer-sharp/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/gatsby-worker": { - "version": "1.25.0", - "resolved": "https://registry.npmjs.org/gatsby-worker/-/gatsby-worker-1.25.0.tgz", - "integrity": "sha512-gjp28irgHASihwvMyF5aZMALWGax9mEmcD8VYGo2osRe7p6BZuWi4cSuP9XM9EvytDvIugpnSadmTP01B7LtWg==", - "dependencies": { - "@babel/core": "^7.15.5", - "@babel/runtime": "^7.15.4" - }, - "engines": { - "node": ">=14.15.0" - } - }, - "node_modules/gatsby/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/gatsby/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/gatsby/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/gatsby/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/gatsby/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/gatsby/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/gatsby/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/gatsby/node_modules/react-refresh": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.9.0.tgz", - "integrity": "sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gatsby/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/gatsby/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/gatsby/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/generate-robotstxt": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/generate-robotstxt/-/generate-robotstxt-8.0.3.tgz", - "integrity": "sha512-iD//oAVKcHOCz9M0IiT3pyUiF2uN1qvL3qaTA8RGLz7NU7l0XVwyzd3rN+tzhB657DNUgrygXt9w8+0zkTMFrg==", - "dependencies": { - "cosmiconfig": "^6.0.0", - "fs-extra": "^9.0.0", - "ip-regex": "^4.1.0", - "is-absolute-url": "^3.0.3", - "meow": "^7.0.1", - "resolve-from": "^5.0.0" - }, - "bin": { - "generate-robotstxt": "dist/cli.js" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/generate-robotstxt/node_modules/cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/generate-robotstxt/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/generate-robotstxt/node_modules/is-absolute-url": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", - "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/generate-robotstxt/node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", - "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", - "dependencies": { - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-own-enumerable-property-symbols": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", - "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", - "dev": true - }, - "node_modules/get-port": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", - "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==", - "engines": { - "node": ">=4" - } - }, - "node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/git-up": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/git-up/-/git-up-7.0.0.tgz", - "integrity": "sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==", - "dependencies": { - "is-ssh": "^1.4.0", - "parse-url": "^8.1.0" - } - }, - "node_modules/github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" - }, - "node_modules/github-slugger": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.5.0.tgz", - "integrity": "sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==" - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" - }, - "node_modules/global-dirs": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", - "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", - "dependencies": { - "ini": "2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/global-dirs/node_modules/ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "engines": { - "node": ">=10" - } - }, - "node_modules/global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "dependencies": { - "global-prefix": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "dependencies": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/global-prefix/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "dependencies": { - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/got": { - "version": "11.8.6", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", - "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", - "dependencies": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=10.19.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, - "node_modules/graphql": { - "version": "15.8.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz", - "integrity": "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==", - "engines": { - "node": ">= 10.x" - } - }, - "node_modules/graphql-compose": { - "version": "9.0.10", - "resolved": "https://registry.npmjs.org/graphql-compose/-/graphql-compose-9.0.10.tgz", - "integrity": "sha512-UsVoxfi2+c8WbHl2pEB+teoRRZoY4mbWBoijeLDGpAZBSPChnqtSRjp+T9UcouLCwGr5ooNyOQLoI3OVzU1bPQ==", - "dependencies": { - "graphql-type-json": "0.3.2" - } - }, - "node_modules/graphql-playground-html": { - "version": "1.6.30", - "resolved": "https://registry.npmjs.org/graphql-playground-html/-/graphql-playground-html-1.6.30.tgz", - "integrity": "sha512-tpCujhsJMva4aqE8ULnF7/l3xw4sNRZcSHu+R00VV+W0mfp+Q20Plvcrp+5UXD+2yS6oyCXncA+zoQJQqhGCEw==", - "dependencies": { - "xss": "^1.0.6" - } - }, - "node_modules/graphql-playground-middleware-express": { - "version": "1.7.23", - "resolved": "https://registry.npmjs.org/graphql-playground-middleware-express/-/graphql-playground-middleware-express-1.7.23.tgz", - "integrity": "sha512-M/zbTyC1rkgiQjFSgmzAv6umMHOphYLNWZp6Ye5QrD77WfGOOoSqDsVmGUczc2pDkEPEzzGB/bvBO5rdzaTRgw==", - "dependencies": { - "graphql-playground-html": "^1.6.30" - }, - "peerDependencies": { - "express": "^4.16.2" - } - }, - "node_modules/graphql-tag": { - "version": "2.12.6", - "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", - "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", - "dependencies": { - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" - } - }, - "node_modules/graphql-type-json": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/graphql-type-json/-/graphql-type-json-0.3.2.tgz", - "integrity": "sha512-J+vjof74oMlCWXSvt0DOf2APEdZOCdubEvGDUAlqH//VBYcOYsGgRW7Xzorr44LvkjiuvecWc8fChxuZZbChtg==", - "peerDependencies": { - "graphql": ">=0.8.0" - } - }, - "node_modules/gray-matter": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", - "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", - "dependencies": { - "js-yaml": "^3.13.1", - "kind-of": "^6.0.2", - "section-matter": "^1.0.0", - "strip-bom-string": "^1.0.0" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/gray-matter/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/gray-matter/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/gray-matter/node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" - }, - "node_modules/gzip-size": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", - "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", - "dependencies": { - "duplexer": "^0.1.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-cors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha512-g5VNKdkFuUuVCP9gYfDJHjK2nqdQJ7aDLTnycnc2+RvsOQbuLdF5pm7vuE5J76SEBIQjs4kQY/BWq74JUmjbXA==" - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", - "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", - "dependencies": { - "get-intrinsic": "^1.2.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-yarn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/hasha": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", - "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", - "dependencies": { - "is-stream": "^2.0.0", - "type-fest": "^0.8.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/hasha/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/hast-to-hyperscript": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz", - "integrity": "sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA==", - "dependencies": { - "@types/unist": "^2.0.3", - "comma-separated-tokens": "^1.0.0", - "property-information": "^5.3.0", - "space-separated-tokens": "^1.0.0", - "style-to-object": "^0.3.0", - "unist-util-is": "^4.0.0", - "web-namespaces": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-from-parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz", - "integrity": "sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==", - "dependencies": { - "@types/parse5": "^5.0.0", - "hastscript": "^6.0.0", - "property-information": "^5.0.0", - "vfile": "^4.0.0", - "vfile-location": "^3.2.0", - "web-namespaces": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-is-element": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-1.1.0.tgz", - "integrity": "sha512-oUmNua0bFbdrD/ELDSSEadRVtWZOf3iF6Lbv81naqsIV99RnSCieTbWuWCY8BAeEfKJTKl0gRdokv+dELutHGQ==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-parse-selector": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz", - "integrity": "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-raw": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-6.0.1.tgz", - "integrity": "sha512-ZMuiYA+UF7BXBtsTBNcLBF5HzXzkyE6MLzJnL605LKE8GJylNjGc4jjxazAHUtcwT5/CEt6afRKViYB4X66dig==", - "dependencies": { - "@types/hast": "^2.0.0", - "hast-util-from-parse5": "^6.0.0", - "hast-util-to-parse5": "^6.0.0", - "html-void-elements": "^1.0.0", - "parse5": "^6.0.0", - "unist-util-position": "^3.0.0", - "vfile": "^4.0.0", - "web-namespaces": "^1.0.0", - "xtend": "^4.0.0", - "zwitch": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-raw/node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" - }, - "node_modules/hast-util-to-html": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-7.1.3.tgz", - "integrity": "sha512-yk2+1p3EJTEE9ZEUkgHsUSVhIpCsL/bvT8E5GzmWc+N1Po5gBw+0F8bo7dpxXR0nu0bQVxVZGX2lBGF21CmeDw==", - "dependencies": { - "ccount": "^1.0.0", - "comma-separated-tokens": "^1.0.0", - "hast-util-is-element": "^1.0.0", - "hast-util-whitespace": "^1.0.0", - "html-void-elements": "^1.0.0", - "property-information": "^5.0.0", - "space-separated-tokens": "^1.0.0", - "stringify-entities": "^3.0.1", - "unist-util-is": "^4.0.0", - "xtend": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-parse5": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz", - "integrity": "sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ==", - "dependencies": { - "hast-to-hyperscript": "^9.0.0", - "property-information": "^5.0.0", - "web-namespaces": "^1.0.0", - "xtend": "^4.0.0", - "zwitch": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-whitespace": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-1.0.4.tgz", - "integrity": "sha512-I5GTdSfhYfAPNztx2xJRQpG8cuDSNt599/7YUn7Gx/WxNMsG+a835k97TDkFgk123cwjfwINaZknkKkphx/f2A==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hastscript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz", - "integrity": "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==", - "dependencies": { - "@types/hast": "^2.0.0", - "comma-separated-tokens": "^1.0.0", - "hast-util-parse-selector": "^2.0.0", - "property-information": "^5.0.0", - "space-separated-tokens": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "bin": { - "he": "bin/he" - } - }, - "node_modules/header-case": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", - "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", - "dependencies": { - "capital-case": "^1.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "dependencies": { - "react-is": "^16.7.0" - } - }, - "node_modules/hoist-non-react-statics/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "node_modules/hosted-git-info": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", - "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/hosted-git-info/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/html-entities": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz", - "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/mdevils" - }, - { - "type": "patreon", - "url": "https://patreon.com/mdevils" - } - ] - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "node_modules/html-void-elements": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.5.tgz", - "integrity": "sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/htmlparser2": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", - "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "entities": "^4.4.0" - } - }, - "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http2-wrapper": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", - "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" - }, - "engines": { - "node": ">=10.19.0" - } - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/husky": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/husky/-/husky-7.0.4.tgz", - "integrity": "sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==", - "dev": true, - "bin": { - "husky": "lib/bin.js" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/typicode" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", - "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/image-size": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.2.tgz", - "integrity": "sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==", - "dev": true, - "dependencies": { - "queue": "6.0.2" - }, - "bin": { - "image-size": "bin/image-size.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/immer": { - "version": "9.0.21", - "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", - "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/immer" - } - }, - "node_modules/immutable": { - "version": "3.7.6", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.7.6.tgz", - "integrity": "sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "engines": { - "node": ">=4" - } - }, - "node_modules/import-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-4.0.0.tgz", - "integrity": "sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ==", - "engines": { - "node": ">=12.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==", - "engines": { - "node": ">=4" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "node_modules/inline-style-parser": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", - "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" - }, - "node_modules/inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.19", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/inquirer/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/inquirer/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/inquirer/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/inquirer/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/inquirer/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/inquirer/node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/inquirer/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/inquirer/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/internal-slot": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", - "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", - "dependencies": { - "get-intrinsic": "^1.2.2", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/intl-messageformat": { - "version": "10.5.11", - "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.5.11.tgz", - "integrity": "sha512-eYq5fkFBVxc7GIFDzpFQkDOZgNayNTQn4Oufe8jw6YY6OHVw70/4pA3FyCsQ0Gb2DnvEJEMmN2tOaXUGByM+kg==", - "dependencies": { - "@formatjs/ecma402-abstract": "1.18.2", - "@formatjs/fast-memoize": "2.2.0", - "@formatjs/icu-messageformat-parser": "2.7.6", - "tslib": "^2.4.0" - } - }, - "node_modules/invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dependencies": { - "loose-envify": "^1.0.0" - } - }, - "node_modules/ip-regex": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", - "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", - "dependencies": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-absolute-url": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-4.0.1.tgz", - "integrity": "sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-alphabetical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", - "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-alphanumeric": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz", - "integrity": "sha512-ZmRL7++ZkcMOfDuWZuMJyIVLr2keE1o/DeNWh1EmgqGhUcV+9BIVsx0BcSBOHTZqzjs4+dISzr2KAeBEWGgXeA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-alphanumerical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", - "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", - "dependencies": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - }, - "node_modules/is-async-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", - "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "engines": { - "node": ">=4" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dependencies": { - "ci-info": "^2.0.0" - }, - "bin": { - "is-ci": "bin.js" - } - }, - "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-decimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", - "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-finalizationregistry": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", - "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-hexadecimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", - "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-installed-globally": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", - "dependencies": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-invalid-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-invalid-path/-/is-invalid-path-0.1.0.tgz", - "integrity": "sha512-aZMG0T3F34mTg4eTdszcGXx54oiZ4NtHSft3hWNJMGJXUUqdIj3cOZuHcU0nCWWcY3jd7yRe/3AEm3vSNTpBGQ==", - "dependencies": { - "is-glob": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-invalid-path/node_modules/is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-invalid-path/node_modules/is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", - "dependencies": { - "is-extglob": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-lower-case/-/is-lower-case-2.0.2.tgz", - "integrity": "sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ==", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/is-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", - "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-npm": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", - "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", - "dependencies": { - "is-unc-path": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-relative-url": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-relative-url/-/is-relative-url-3.0.0.tgz", - "integrity": "sha512-U1iSYRlY2GIMGuZx7gezlB5dp1Kheaym7zKzO1PV06mOihiWTXejLwm4poEJysPyXF+HtK/BEd0DVlcCh30pEA==", - "dependencies": { - "is-absolute-url": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-relative-url/node_modules/is-absolute-url": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", - "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-root": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", - "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/is-set": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", - "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-ssh": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz", - "integrity": "sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==", - "dependencies": { - "protocols": "^2.0.1" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", - "dependencies": { - "which-typed-array": "^1.1.11" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" - }, - "node_modules/is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", - "dependencies": { - "unc-path-regex": "^0.1.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-upper-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-upper-case/-/is-upper-case-2.0.2.tgz", - "integrity": "sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ==", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/is-valid-domain": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-valid-domain/-/is-valid-domain-0.1.6.tgz", - "integrity": "sha512-ZKtq737eFkZr71At8NxOFcP9O1K89gW3DkdrGMpp1upr/ueWjj+Weh4l9AI4rN0Gt8W2M1w7jrG2b/Yv83Ljpg==", - "dependencies": { - "punycode": "^2.1.1" - } - }, - "node_modules/is-valid-path": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-valid-path/-/is-valid-path-0.1.1.tgz", - "integrity": "sha512-+kwPrVDu9Ms03L90Qaml+79+6DZHqHyRoANI6IsZJ/g8frhnfchDOBCa0RbQ6/kdHt5CS5OeIEyrYznNuVN+8A==", - "dependencies": { - "is-invalid-path": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", - "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", - "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-whitespace-character": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", - "integrity": "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-word-character": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz", - "integrity": "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-yarn-global": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/iterator.prototype": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", - "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", - "dependencies": { - "define-properties": "^1.2.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "reflect.getprototypeof": "^1.0.4", - "set-function-name": "^2.0.1" - } - }, - "node_modules/jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jimp-compact": { - "version": "0.16.1-2", - "resolved": "https://registry.npmjs.org/jimp-compact/-/jimp-compact-0.16.1-2.tgz", - "integrity": "sha512-b2A3rRT1TITzqmaO70U2/uunCh43BQVq7BfRwGPkD5xj8/WZsR3sPTy9DENt+dNZGsel3zBEm1UtYegUxjZW7A==" - }, - "node_modules/joi": { - "version": "17.11.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.11.0.tgz", - "integrity": "sha512-NgB+lZLNoqISVy1rZocE9PZI36bL/77ie924Ri43yEvi9GUUMPeyVIr8KdFTMUlby1p0PBYMk9spIxEUQYqrJQ==", - "dependencies": { - "@hapi/hoek": "^9.0.0", - "@hapi/topo": "^5.0.0", - "@sideway/address": "^4.1.3", - "@sideway/formula": "^3.0.1", - "@sideway/pinpoint": "^2.0.0" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" - }, - "node_modules/json-loader": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", - "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==" - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsx-ast-utils": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", - "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "object.assign": "^4.1.4", - "object.values": "^1.1.6" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "engines": { - "node": ">=6" - } - }, - "node_modules/klona": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", - "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/language-subtag-registry": { - "version": "0.3.22", - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", - "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==" - }, - "node_modules/language-tags": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", - "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", - "dependencies": { - "language-subtag-registry": "^0.3.20" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/latest-version": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", - "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", - "dependencies": { - "package-json": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/legacy-swc-helpers": { - "name": "@swc/helpers", - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz", - "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==", - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", - "engines": { - "node": ">=10" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - }, - "node_modules/lint-staged": { - "version": "11.2.6", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-11.2.6.tgz", - "integrity": "sha512-Vti55pUnpvPE0J9936lKl0ngVeTdSZpEdTNhASbkaWX7J5R9OEifo1INBGQuGW4zmy6OG+TcWPJ3m5yuy5Q8Tg==", - "dev": true, - "dependencies": { - "cli-truncate": "2.1.0", - "colorette": "^1.4.0", - "commander": "^8.2.0", - "cosmiconfig": "^7.0.1", - "debug": "^4.3.2", - "enquirer": "^2.3.6", - "execa": "^5.1.1", - "listr2": "^3.12.2", - "micromatch": "^4.0.4", - "normalize-path": "^3.0.0", - "please-upgrade-node": "^3.2.0", - "string-argv": "0.3.1", - "stringify-object": "3.3.0", - "supports-color": "8.1.1" - }, - "bin": { - "lint-staged": "bin/lint-staged.js" - }, - "funding": { - "url": "https://opencollective.com/lint-staged" - } - }, - "node_modules/lint-staged/node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "dev": true, - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/lint-staged/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/lint-staged/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/lint-staged/node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/listr2": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", - "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", - "dev": true, - "dependencies": { - "cli-truncate": "^2.1.0", - "colorette": "^2.0.16", - "log-update": "^4.0.0", - "p-map": "^4.0.0", - "rfdc": "^1.3.0", - "rxjs": "^7.5.1", - "through": "^2.3.8", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "enquirer": ">= 2.3.0 < 3" - }, - "peerDependenciesMeta": { - "enquirer": { - "optional": true - } - } - }, - "node_modules/listr2/node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true - }, - "node_modules/lmdb": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-2.5.3.tgz", - "integrity": "sha512-iBA0cb13CobBSoGJLfZgnrykLlfJipDAnvtf+YwIqqzBEsTeQYsXrHaSBkaHd5wCWeabwrNvhjZoFMUrlo+eLw==", - "hasInstallScript": true, - "dependencies": { - "msgpackr": "^1.5.4", - "node-addon-api": "^4.3.0", - "node-gyp-build-optional-packages": "5.0.3", - "ordered-binary": "^1.2.4", - "weak-lru-cache": "^1.2.2" - }, - "optionalDependencies": { - "@lmdb/lmdb-darwin-arm64": "2.5.3", - "@lmdb/lmdb-darwin-x64": "2.5.3", - "@lmdb/lmdb-linux-arm": "2.5.3", - "@lmdb/lmdb-linux-arm64": "2.5.3", - "@lmdb/lmdb-linux-x64": "2.5.3", - "@lmdb/lmdb-win32-x64": "2.5.3" - } - }, - "node_modules/lmdb/node_modules/node-addon-api": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" - }, - "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lock": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/lock/-/lock-1.1.0.tgz", - "integrity": "sha512-NZQIJJL5Rb9lMJ0Yl1JoVr9GSdo4HTPsUEWsSFzB8dE8DSoiLCVavWZPi7Rnlv/o73u6I24S/XYc/NmG4l8EKA==" - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash.assignin": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", - "integrity": "sha512-yX/rx6d/UTVh7sSVWVSIMjfnz95evAgDFdb1ZozC35I9mSFCkmzptOzevxjgbQUsc78NR44LVHWjsoMQXy9FDg==" - }, - "node_modules/lodash.bind": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz", - "integrity": "sha512-lxdsn7xxlCymgLYo1gGvVrfHmkjDiyqVv62FAeF2i5ta72BipE1SLxw8hPEPLhD4/247Ijw07UQH7Hq/chT5LA==" - }, - "node_modules/lodash.chunk": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.chunk/-/lodash.chunk-4.2.0.tgz", - "integrity": "sha512-ZzydJKfUHJwHa+hF5X66zLFCBrWn5GeF28OHEr4WVWtNDXlQ/IjWKPBiikqKo2ne0+v6JgCgJ0GzJp8k8bHC7w==" - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" - }, - "node_modules/lodash.deburr": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/lodash.deburr/-/lodash.deburr-4.1.0.tgz", - "integrity": "sha512-m/M1U1f3ddMCs6Hq2tAsYThTBDaAKFDX3dwDo97GEYzamXi9SqUpjWi/Rrj/gf3X2n8ktwgZrlP1z6E3v/IExQ==" - }, - "node_modules/lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" - }, - "node_modules/lodash.every": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.every/-/lodash.every-4.6.0.tgz", - "integrity": "sha512-isF82d+65/sNvQ3aaQAW7LLHnnTxSN/2fm4rhYyuufLzA4VtHz6y6S5vFwe6PQVr2xdqUOyxBbTNKDpnmeu50w==" - }, - "node_modules/lodash.filter": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", - "integrity": "sha512-pXYUy7PR8BCLwX5mgJ/aNtyOvuJTdZAo9EQFUvMIYugqmJxnrYaANvTbgndOzHSCSR0wnlBBfRXJL5SbWxo3FQ==" - }, - "node_modules/lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==" - }, - "node_modules/lodash.flattendeep": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==" - }, - "node_modules/lodash.foreach": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", - "integrity": "sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==" - }, - "node_modules/lodash.map": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", - "integrity": "sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==" - }, - "node_modules/lodash.maxby": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.maxby/-/lodash.maxby-4.6.0.tgz", - "integrity": "sha512-QfTqQTwzmKxLy7VZlbx2M/ipWv8DCQ2F5BI/MRxLharOQ5V78yMSuB+JE+EuUM22txYfj09R2Q7hUlEYj7KdNg==" - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" - }, - "node_modules/lodash.pick": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", - "integrity": "sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==" - }, - "node_modules/lodash.reduce": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", - "integrity": "sha512-6raRe2vxCYBhpBu+B+TtNGUzah+hQjVdu3E17wfusjyrXBka2nBS8OH/gjVZ5PvHOhWmIZTYri09Z6n/QfnNMw==" - }, - "node_modules/lodash.reject": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz", - "integrity": "sha512-qkTuvgEzYdyhiJBx42YPzPo71R1aEr0z79kAv7Ixg8wPFEjgRgJdUsGMG3Hf3OYSF/kHI79XhNlt+5Ar6OzwxQ==" - }, - "node_modules/lodash.some": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", - "integrity": "sha512-j7MJE+TuT51q9ggt4fSgVqro163BEFjAt3u97IqU+JA2DkWl80nFTrowzLpZ/BnpN7rrl0JA/593NAdd8p/scQ==" - }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==" - }, - "node_modules/lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" - }, - "node_modules/log-update": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", - "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/log-update/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/log-update/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/log-update/node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/log-update/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/longest-streak": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", - "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/lower-case-first": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case-first/-/lower-case-first-2.0.2.tgz", - "integrity": "sha512-EVm/rR94FJTZi3zefZ82fLWab+GX14LJN4HrWBcuo6Evmsl9hEfnqxgcHCKb9q+mNf6EVdsjx/qucYFIIB84pg==", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/lru-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", - "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==", - "dependencies": { - "es5-ext": "~0.10.2" - } - }, - "node_modules/magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "dependencies": { - "sourcemap-codec": "^1.4.8" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dependencies": { - "p-defer": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/map-age-cleaner/node_modules/p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/markdown-escapes": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz", - "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/markdown-table": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", - "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==", - "dependencies": { - "repeat-string": "^1.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/md5-file": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/md5-file/-/md5-file-5.0.0.tgz", - "integrity": "sha512-xbEFXCYVWrSx/gEKS1VPlg84h/4L20znVIulKw6kMfmBUAZNAnF00eczz9ICMl+/hjQGo5KSXRxbL/47X3rmMw==", - "bin": { - "md5-file": "cli.js" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/mdast-squeeze-paragraphs": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz", - "integrity": "sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ==", - "dependencies": { - "unist-util-remove": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-squeeze-paragraphs/node_modules/unist-util-remove": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-2.1.0.tgz", - "integrity": "sha512-J8NYPyBm4baYLdCbjmf1bhPu45Cr1MWTm77qd9istEkzWpnN6O9tMsEbB2JhNnBCqGENRqEWomQ+He6au0B27Q==", - "dependencies": { - "unist-util-is": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-compact": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-1.0.4.tgz", - "integrity": "sha512-3YDMQHI5vRiS2uygEFYaqckibpJtKq5Sj2c8JioeOQBU6INpKbdWzfyLqFFnDwEcEnRFIdMsguzs5pC1Jp4Isg==", - "dependencies": { - "unist-util-visit": "^1.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-compact/node_modules/unist-util-is": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", - "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==" - }, - "node_modules/mdast-util-compact/node_modules/unist-util-visit": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", - "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", - "dependencies": { - "unist-util-visit-parents": "^2.0.0" - } - }, - "node_modules/mdast-util-compact/node_modules/unist-util-visit-parents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", - "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", - "dependencies": { - "unist-util-is": "^3.0.0" - } - }, - "node_modules/mdast-util-definitions": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz", - "integrity": "sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==", - "dependencies": { - "unist-util-visit": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-find-and-replace": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-1.1.1.tgz", - "integrity": "sha512-9cKl33Y21lyckGzpSmEQnIDjEfeeWelN5s1kUW1LwdB0Fkuq2u+4GdqcGEygYxJE8GVqCl0741bYXHgamfWAZA==", - "dependencies": { - "escape-string-regexp": "^4.0.0", - "unist-util-is": "^4.0.0", - "unist-util-visit-parents": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mdast-util-footnote": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/mdast-util-footnote/-/mdast-util-footnote-0.1.7.tgz", - "integrity": "sha512-QxNdO8qSxqbO2e3m09KwDKfWiLgqyCurdWTQ198NpbZ2hxntdc+VKS4fDJCmNWbAroUdYnSthu+XbZ8ovh8C3w==", - "dependencies": { - "mdast-util-to-markdown": "^0.6.0", - "micromark": "~2.11.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-from-markdown": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", - "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", - "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-to-string": "^2.0.0", - "micromark": "~2.11.0", - "parse-entities": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-from-markdown/node_modules/mdast-util-to-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", - "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-0.1.2.tgz", - "integrity": "sha512-NNkhDx/qYcuOWB7xHUGWZYVXvjPFFd6afg6/e2g+SV4r9q5XUcCbV4Wfa3DLYIiD+xAEZc6K4MGaE/m0KDcPwQ==", - "dependencies": { - "mdast-util-gfm-autolink-literal": "^0.1.0", - "mdast-util-gfm-strikethrough": "^0.2.0", - "mdast-util-gfm-table": "^0.1.0", - "mdast-util-gfm-task-list-item": "^0.1.0", - "mdast-util-to-markdown": "^0.6.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-autolink-literal": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-0.1.3.tgz", - "integrity": "sha512-GjmLjWrXg1wqMIO9+ZsRik/s7PLwTaeCHVB7vRxUwLntZc8mzmTsLVr6HW1yLokcnhfURsn5zmSVdi3/xWWu1A==", - "dependencies": { - "ccount": "^1.0.0", - "mdast-util-find-and-replace": "^1.1.0", - "micromark": "^2.11.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-strikethrough": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-0.2.3.tgz", - "integrity": "sha512-5OQLXpt6qdbttcDG/UxYY7Yjj3e8P7X16LzvpX8pIQPYJ/C2Z1qFGMmcw+1PZMUM3Z8wt8NRfYTvCni93mgsgA==", - "dependencies": { - "mdast-util-to-markdown": "^0.6.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-table": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-0.1.6.tgz", - "integrity": "sha512-j4yDxQ66AJSBwGkbpFEp9uG/LS1tZV3P33fN1gkyRB2LoRL+RR3f76m0HPHaby6F4Z5xr9Fv1URmATlRRUIpRQ==", - "dependencies": { - "markdown-table": "^2.0.0", - "mdast-util-to-markdown": "~0.6.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-task-list-item": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-0.1.6.tgz", - "integrity": "sha512-/d51FFIfPsSmCIRNp7E6pozM9z1GYPIkSy1urQ8s/o4TC22BZ7DqfHFWiqBD23bc7J3vV1Fc9O4QIHBlfuit8A==", - "dependencies": { - "mdast-util-to-markdown": "~0.6.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-hast": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.0.1.tgz", - "integrity": "sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA==", - "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "mdast-util-definitions": "^4.0.0", - "mdurl": "^1.0.0", - "unist-builder": "^2.0.0", - "unist-util-generated": "^1.0.0", - "unist-util-position": "^3.0.0", - "unist-util-visit": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-markdown": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", - "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", - "dependencies": { - "@types/unist": "^2.0.0", - "longest-streak": "^2.0.0", - "mdast-util-to-string": "^2.0.0", - "parse-entities": "^2.0.0", - "repeat-string": "^1.0.0", - "zwitch": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-markdown/node_modules/mdast-util-to-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", - "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-nlcst": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/mdast-util-to-nlcst/-/mdast-util-to-nlcst-3.2.3.tgz", - "integrity": "sha512-hPIsgEg7zCvdU6/qvjcR6lCmJeRuIEpZGY5xBV+pqzuMOvQajyyF8b6f24f8k3Rw8u40GwkI3aAxUXr3bB2xag==", - "dependencies": { - "nlcst-to-string": "^2.0.0", - "repeat-string": "^1.5.2", - "unist-util-position": "^3.0.0", - "vfile-location": "^2.0.0" - } - }, - "node_modules/mdast-util-to-nlcst/node_modules/vfile-location": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.6.tgz", - "integrity": "sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-string": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz", - "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-toc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-toc/-/mdast-util-toc-3.1.0.tgz", - "integrity": "sha512-Za0hqL1PqWrvxGtA/3NH9D5nhGAUS9grMM4obEAz5+zsk1RIw/vWUchkaoDLNdrwk05A0CSC5eEXng36/1qE5w==", - "dependencies": { - "github-slugger": "^1.2.1", - "mdast-util-to-string": "^1.0.5", - "unist-util-is": "^2.1.2", - "unist-util-visit": "^1.1.0" - } - }, - "node_modules/mdast-util-toc/node_modules/unist-util-is": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-2.1.3.tgz", - "integrity": "sha512-4WbQX2iwfr/+PfM4U3zd2VNXY+dWtZsN1fLnWEi2QQXA4qyDYAZcDMfXUX0Cu6XZUHHAO9q4nyxxLT4Awk1qUA==" - }, - "node_modules/mdast-util-toc/node_modules/unist-util-visit": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", - "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", - "dependencies": { - "unist-util-visit-parents": "^2.0.0" - } - }, - "node_modules/mdast-util-toc/node_modules/unist-util-visit-parents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", - "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", - "dependencies": { - "unist-util-is": "^3.0.0" - } - }, - "node_modules/mdast-util-toc/node_modules/unist-util-visit-parents/node_modules/unist-util-is": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", - "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==" - }, - "node_modules/mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" - }, - "node_modules/mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==" - }, - "node_modules/meant": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/meant/-/meant-1.0.3.tgz", - "integrity": "sha512-88ZRGcNxAq4EH38cQ4D85PM57pikCwS8Z99EWHODxN7KBY+UuPiqzRTtZzS8KTXO/ywSWbdjjJST2Hly/EQxLw==" - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mem": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/mem/-/mem-8.1.1.tgz", - "integrity": "sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==", - "dependencies": { - "map-age-cleaner": "^0.1.3", - "mimic-fn": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/mem?sponsor=1" - } - }, - "node_modules/mem/node_modules/mimic-fn": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", - "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/memfs": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", - "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", - "dependencies": { - "fs-monkey": "^1.0.4" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/memoize-one": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", - "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" - }, - "node_modules/memoizee": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", - "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", - "dependencies": { - "d": "^1.0.1", - "es5-ext": "^0.10.53", - "es6-weak-map": "^2.0.3", - "event-emitter": "^0.3.5", - "is-promise": "^2.2.2", - "lru-queue": "^0.1.0", - "next-tick": "^1.1.0", - "timers-ext": "^0.1.7" - } - }, - "node_modules/meow": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-7.1.1.tgz", - "integrity": "sha512-GWHvA5QOcS412WCo8vwKDlTelGLsCGBVevQB5Kva961rmNfun0PCbv5+xta2kUMFJyR8/oWnn7ddeKdosbAPbA==", - "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^2.5.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.13.1", - "yargs-parser": "^18.1.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/type-fest": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", - "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/micromark": { - "version": "2.11.4", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", - "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "debug": "^4.0.0", - "parse-entities": "^2.0.0" - } - }, - "node_modules/micromark-extension-footnote": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/micromark-extension-footnote/-/micromark-extension-footnote-0.3.2.tgz", - "integrity": "sha512-gr/BeIxbIWQoUm02cIfK7mdMZ/fbroRpLsck4kvFtjbzP4yi+OPVbnukTc/zy0i7spC2xYE/dbX1Sur8BEDJsQ==", - "dependencies": { - "micromark": "~2.11.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-0.3.3.tgz", - "integrity": "sha512-oVN4zv5/tAIA+l3GbMi7lWeYpJ14oQyJ3uEim20ktYFAcfX1x3LNlFGGlmrZHt7u9YlKExmyJdDGaTt6cMSR/A==", - "dependencies": { - "micromark": "~2.11.0", - "micromark-extension-gfm-autolink-literal": "~0.5.0", - "micromark-extension-gfm-strikethrough": "~0.6.5", - "micromark-extension-gfm-table": "~0.4.0", - "micromark-extension-gfm-tagfilter": "~0.3.0", - "micromark-extension-gfm-task-list-item": "~0.3.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-autolink-literal": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-0.5.7.tgz", - "integrity": "sha512-ePiDGH0/lhcngCe8FtH4ARFoxKTUelMp4L7Gg2pujYD5CSMb9PbblnyL+AAMud/SNMyusbS2XDSiPIRcQoNFAw==", - "dependencies": { - "micromark": "~2.11.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-strikethrough": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-0.6.5.tgz", - "integrity": "sha512-PpOKlgokpQRwUesRwWEp+fHjGGkZEejj83k9gU5iXCbDG+XBA92BqnRKYJdfqfkrRcZRgGuPuXb7DaK/DmxOhw==", - "dependencies": { - "micromark": "~2.11.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-table": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-0.4.3.tgz", - "integrity": "sha512-hVGvESPq0fk6ALWtomcwmgLvH8ZSVpcPjzi0AjPclB9FsVRgMtGZkUcpE0zgjOCFAznKepF4z3hX8z6e3HODdA==", - "dependencies": { - "micromark": "~2.11.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-tagfilter": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-0.3.0.tgz", - "integrity": "sha512-9GU0xBatryXifL//FJH+tAZ6i240xQuFrSL7mYi8f4oZSbc+NvXjkrHemeYP0+L4ZUT+Ptz3b95zhUZnMtoi/Q==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-task-list-item": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-0.3.3.tgz", - "integrity": "sha512-0zvM5iSLKrc/NQl84pZSjGo66aTGd57C1idmlWmE87lkMcXrTxg1uXa/nXomxJytoje9trP0NDLvw4bZ/Z/XCQ==", - "dependencies": { - "micromark": "~2.11.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "engines": { - "node": ">=4" - } - }, - "node_modules/mini-css-extract-plugin": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-1.6.2.tgz", - "integrity": "sha512-WhDvO3SjGm40oV5y26GjMJYjd2UMqrLAGKy5YS2/3QKJy2F7jgynuHTir/tgUUOiNQu5saXHdc8reo7YuhhT4Q==", - "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0", - "webpack-sources": "^1.1.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.4.0 || ^5.0.0" - } - }, - "node_modules/mini-svg-data-uri": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz", - "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==", - "bin": { - "mini-svg-data-uri": "cli.js" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "dependencies": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/minimist-options/node_modules/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mitt": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz", - "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==" - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" - }, - "node_modules/moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", - "engines": { - "node": "*" - } - }, - "node_modules/mrmime": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", - "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/msgpackr": { - "version": "1.9.9", - "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.9.9.tgz", - "integrity": "sha512-sbn6mioS2w0lq1O6PpGtsv6Gy8roWM+o3o4Sqjd6DudrL/nOugY+KyJUimoWzHnf9OkO0T6broHFnYE/R05t9A==", - "optionalDependencies": { - "msgpackr-extract": "^3.0.2" - } - }, - "node_modules/msgpackr-extract": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.2.tgz", - "integrity": "sha512-SdzXp4kD/Qf8agZ9+iTu6eql0m3kWm1A2y1hkpTeVNENutaB0BwHlSvAIaMxwntmRUAUjon2V4L8Z/njd0Ct8A==", - "hasInstallScript": true, - "optional": true, - "dependencies": { - "node-gyp-build-optional-packages": "5.0.7" - }, - "bin": { - "download-msgpackr-prebuilds": "bin/download-prebuilds.js" - }, - "optionalDependencies": { - "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.2", - "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.2", - "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.2", - "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.2", - "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.2", - "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.2" - } - }, - "node_modules/msgpackr-extract/node_modules/node-gyp-build-optional-packages": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.7.tgz", - "integrity": "sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w==", - "optional": true, - "bin": { - "node-gyp-build-optional-packages": "bin.js", - "node-gyp-build-optional-packages-optional": "optional.js", - "node-gyp-build-optional-packages-test": "build-test.js" - } - }, - "node_modules/multer": { - "version": "1.4.5-lts.1", - "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz", - "integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==", - "dependencies": { - "append-field": "^1.0.0", - "busboy": "^1.0.0", - "concat-stream": "^1.5.2", - "mkdirp": "^0.5.4", - "object-assign": "^4.1.1", - "type-is": "^1.6.4", - "xtend": "^4.0.0" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" - }, - "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/napi-build-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", - "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" - }, - "node_modules/needle": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz", - "integrity": "sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==", - "dependencies": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - }, - "bin": { - "needle": "bin/needle" - }, - "engines": { - "node": ">= 4.4.x" - } - }, - "node_modules/needle/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - }, - "node_modules/next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" - }, - "node_modules/nlcst-to-string": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-2.0.4.tgz", - "integrity": "sha512-3x3jwTd6UPG7vi5k4GEzvxJ5rDA7hVUIRNHPblKuMVP9Z3xmlsd9cgLcpAMkc5uPOBna82EeshROFhsPkbnTZg==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node_modules/node-abi": { - "version": "3.51.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.51.0.tgz", - "integrity": "sha512-SQkEP4hmNWjlniS5zdnfIXTk1x7Ome85RDzHlTbBtzE97Gfwz/Ipw4v/Ryk20DWIy3yCNVLVlGKApCnmvYoJbA==", - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-abi/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-abi/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-abi/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/node-addon-api": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.0.0.tgz", - "integrity": "sha512-vgbBJTS4m5/KkE16t5Ly0WW9hz46swAstv0hYYwMtbG7AznRhNyfLRe8HZAiWIpcHzoO7HxhLuBQj9rJ/Ho0ZA==" - }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-gyp-build-optional-packages": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.3.tgz", - "integrity": "sha512-k75jcVzk5wnnc/FMxsf4udAoTEUv2jY3ycfdSd3yWu6Cnd1oee6/CfZJApyscA4FJOmdoixWwiwOyf16RzD5JA==", - "bin": { - "node-gyp-build-optional-packages": "bin.js", - "node-gyp-build-optional-packages-optional": "optional.js", - "node-gyp-build-optional-packages-test": "build-test.js" - } - }, - "node_modules/node-html-parser": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-5.4.2.tgz", - "integrity": "sha512-RaBPP3+51hPne/OolXxcz89iYvQvKOydaqoePpOgXcrOKZhjVIzmpKZz+Hd/RBO2/zN2q6CNJhQzucVz+u3Jyw==", - "dependencies": { - "css-select": "^4.2.1", - "he": "1.2.0" - } - }, - "node_modules/node-html-parser/node_modules/css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/node-html-parser/node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/node-html-parser/node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/node-html-parser/node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/node-html-parser/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==" - }, - "node_modules/node-object-hash": { - "version": "2.3.10", - "resolved": "https://registry.npmjs.org/node-object-hash/-/node-object-hash-2.3.10.tgz", - "integrity": "sha512-jY5dPJzw6NHd/KPSfPKJ+IHoFS81/tJ43r34ZeNMXGzCOM8jwQDCD12HYayKIB6MuznrnqIYy2e891NA2g0ibA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" - }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/normalize-package-data/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" - }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/normalize.css": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.1.tgz", - "integrity": "sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==" - }, - "node_modules/not": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/not/-/not-0.1.0.tgz", - "integrity": "sha512-5PDmaAsVfnWUgTUbJ3ERwn7u79Z0dYxN9ErxCpVJJqe2RK0PJ3z+iFUxuqjwtlDDegXvtWoxD/3Fzxox7tFGWA==" - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/null-loader": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/null-loader/-/null-loader-4.0.1.tgz", - "integrity": "sha512-pxqVbi4U6N26lq+LmgIbB5XATP0VdZKOG25DhHi8btMmJJefGArFyDg1yc4U3hWCJbMqSrw0qyrz1UQX+qYXqg==", - "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/nullthrows": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", - "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==" - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", - "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", - "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.getownpropertydescriptors": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.7.tgz", - "integrity": "sha512-PrJz0C2xJ58FNn11XV2lr4Jt5Gzl94qpy9Lu0JlfEj14z88sqbSBJCBEzdlNUCzY2gburhbrwOZ5BHCmuNUy0g==", - "dependencies": { - "array.prototype.reduce": "^1.0.6", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "safe-array-concat": "^1.0.0" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.groupby": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", - "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1" - } - }, - "node_modules/object.hasown": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", - "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", - "dependencies": { - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.values": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", - "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/objectFitPolyfill": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/objectFitPolyfill/-/objectFitPolyfill-2.3.5.tgz", - "integrity": "sha512-8Quz071ZmGi0QWEG4xB3Bv5Lpw6K0Uca87FLoLMKMWjB6qIq9IyBegP3b/VLNxv2WYvIMGoeUQ+c6ibUkNa8TA==" - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/open": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", - "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", - "dependencies": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/opener": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", - "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", - "dev": true, - "bin": { - "opener": "bin/opener-bin.js" - } - }, - "node_modules/opentracing": { - "version": "0.14.7", - "resolved": "https://registry.npmjs.org/opentracing/-/opentracing-0.14.7.tgz", - "integrity": "sha512-vz9iS7MJ5+Bp1URw8Khvdyw1H/hGvzHWlKQ7eRrQojSCDL1/SrWfrY9QebLw97n2deyRtzHRC3MkQfVNUCo91Q==", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/ordered-binary": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.4.1.tgz", - "integrity": "sha512-9LtiGlPy982CsgxZvJGNNp2/NnrgEr6EAyN3iIEP3/8vd3YLgAZQHbQ75ZrkfBRGrNg37Dk3U6tuVb+B4Xfslg==" - }, - "node_modules/os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/p-defer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-3.0.0.tgz", - "integrity": "sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "engines": { - "node": ">=4" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-queue": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", - "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", - "dependencies": { - "eventemitter3": "^4.0.4", - "p-timeout": "^3.2.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", - "dependencies": { - "p-finally": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/package-json": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", - "dependencies": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/package-json/node_modules/@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/package-json/node_modules/@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "dependencies": { - "defer-to-connect": "^1.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/package-json/node_modules/cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/package-json/node_modules/decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", - "dependencies": { - "mimic-response": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/package-json/node_modules/defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" - }, - "node_modules/package-json/node_modules/got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "dependencies": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/package-json/node_modules/got/node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/package-json/node_modules/got/node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/package-json/node_modules/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==" - }, - "node_modules/package-json/node_modules/keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "dependencies": { - "json-buffer": "3.0.0" - } - }, - "node_modules/package-json/node_modules/normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/package-json/node_modules/p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/package-json/node_modules/responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", - "dependencies": { - "lowercase-keys": "^1.0.0" - } - }, - "node_modules/package-json/node_modules/responselike/node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-english": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/parse-english/-/parse-english-4.2.0.tgz", - "integrity": "sha512-jw5N6wZUZViIw3VLG/FUSeL3vDhfw5Q2g4E3nYC69Mm5ANbh9ZWd+eligQbeUoyObZM8neynTn3l14e09pjEWg==", - "dependencies": { - "nlcst-to-string": "^2.0.0", - "parse-latin": "^4.0.0", - "unist-util-modify-children": "^2.0.0", - "unist-util-visit-children": "^1.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/parse-entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", - "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", - "dependencies": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/parse-filepath": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", - "dependencies": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse-latin": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-4.3.0.tgz", - "integrity": "sha512-TYKL+K98dcAWoCw/Ac1yrPviU8Trk+/gmjQVaoWEFDZmVD4KRg6c/80xKqNNFQObo2mTONgF8trzAf2UTwKafw==", - "dependencies": { - "nlcst-to-string": "^2.0.0", - "unist-util-modify-children": "^2.0.0", - "unist-util-visit-children": "^1.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/parse-numeric-range": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz", - "integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==" - }, - "node_modules/parse-path": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-7.0.0.tgz", - "integrity": "sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==", - "dependencies": { - "protocols": "^2.0.0" - } - }, - "node_modules/parse-srcset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz", - "integrity": "sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==" - }, - "node_modules/parse-url": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-8.1.0.tgz", - "integrity": "sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==", - "dependencies": { - "parse-path": "^7.0.0" - } - }, - "node_modules/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", - "dependencies": { - "entities": "^4.4.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", - "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", - "dependencies": { - "domhandler": "^5.0.2", - "parse5": "^7.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parseqs": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz", - "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==" - }, - "node_modules/parseuri": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz", - "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==" - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/password-prompt": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/password-prompt/-/password-prompt-1.1.3.tgz", - "integrity": "sha512-HkrjG2aJlvF0t2BMH0e2LB/EHf3Lcq3fNMzy4GYHcQblAvOl+QQji1Lx7WRBMqpVK8p+KR7bCg7oqAMXtdgqyw==", - "dependencies": { - "ansi-escapes": "^4.3.2", - "cross-spawn": "^7.0.3" - } - }, - "node_modules/path": { - "version": "0.12.7", - "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", - "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==", - "dependencies": { - "process": "^0.11.1", - "util": "^0.10.3" - } - }, - "node_modules/path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "dev": true - }, - "node_modules/path-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", - "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==" - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", - "dependencies": { - "path-root-regex": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-to-regexp": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", - "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==", - "dev": true - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/peek-readable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz", - "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==", - "engines": { - "node": ">=8" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "dev": true - }, - "node_modules/physical-cpu-count": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz", - "integrity": "sha512-rxJOljMuWtYlvREBmd6TZYanfcPhNUKtGDZBjBBS8WG1dpN2iwPsRJZgQqN/OtJuiQckdRFOfzogqJClTrsi7g==" - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-up/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-up/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/platform": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz", - "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==" - }, - "node_modules/please-upgrade-node": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", - "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", - "dev": true, - "dependencies": { - "semver-compare": "^1.0.0" - } - }, - "node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-calc": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", - "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", - "dependencies": { - "postcss-selector-parser": "^6.0.9", - "postcss-value-parser": "^4.2.0" - }, - "peerDependencies": { - "postcss": "^8.2.2" - } - }, - "node_modules/postcss-colormin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz", - "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==", - "dependencies": { - "browserslist": "^4.21.4", - "caniuse-api": "^3.0.0", - "colord": "^2.9.1", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-convert-values": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz", - "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==", - "dependencies": { - "browserslist": "^4.21.4", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-comments": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", - "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-duplicates": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", - "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-empty": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", - "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-overridden": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", - "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-flexbugs-fixes": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz", - "integrity": "sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==", - "peerDependencies": { - "postcss": "^8.1.4" - } - }, - "node_modules/postcss-loader": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-5.3.0.tgz", - "integrity": "sha512-/+Z1RAmssdiSLgIZwnJHwBMnlABPgF7giYzTN2NOfr9D21IJZ4mQC1R2miwp80zno9M4zMD/umGI8cR+2EL5zw==", - "dependencies": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.4", - "semver": "^7.3.4" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "postcss": "^7.0.0 || ^8.0.1", - "webpack": "^5.0.0" - } - }, - "node_modules/postcss-loader/node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/postcss-loader/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/postcss-loader/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/postcss-loader/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/postcss-loader/node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/postcss-merge-longhand": { - "version": "5.1.7", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", - "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==", - "dependencies": { - "postcss-value-parser": "^4.2.0", - "stylehacks": "^5.1.1" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-merge-rules": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz", - "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==", - "dependencies": { - "browserslist": "^4.21.4", - "caniuse-api": "^3.0.0", - "cssnano-utils": "^3.1.0", - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-font-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", - "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-gradients": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", - "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", - "dependencies": { - "colord": "^2.9.1", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-params": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz", - "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==", - "dependencies": { - "browserslist": "^4.21.4", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-selectors": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", - "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", - "dependencies": { - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-modules-extract-imports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-local-by-default": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", - "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", - "dependencies": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", - "dependencies": { - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", - "dependencies": { - "icss-utils": "^5.0.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-normalize-charset": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", - "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-display-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", - "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-positions": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", - "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-repeat-style": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", - "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-string": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", - "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-timing-functions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", - "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-unicode": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", - "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==", - "dependencies": { - "browserslist": "^4.21.4", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", - "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", - "dependencies": { - "normalize-url": "^6.0.1", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-whitespace": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", - "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-ordered-values": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", - "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", - "dependencies": { - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-reduce-initial": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz", - "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==", - "dependencies": { - "browserslist": "^4.21.4", - "caniuse-api": "^3.0.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-reduce-transforms": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", - "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", - "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-svgo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", - "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", - "dependencies": { - "postcss-value-parser": "^4.2.0", - "svgo": "^2.7.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-svgo/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "engines": { - "node": ">= 10" - } - }, - "node_modules/postcss-svgo/node_modules/css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/postcss-svgo/node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/postcss-svgo/node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/postcss-svgo/node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/postcss-svgo/node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/postcss-svgo/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/postcss-svgo/node_modules/mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" - }, - "node_modules/postcss-svgo/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-svgo/node_modules/svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", - "dependencies": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" - }, - "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/postcss-unique-selectors": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", - "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", - "dependencies": { - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" - }, - "node_modules/prebuild-install": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", - "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", - "dependencies": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^3.3.0", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - }, - "bin": { - "prebuild-install": "bin.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/prebuild-install/node_modules/detect-libc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", - "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prettier-plugin-prisma": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/prettier-plugin-prisma/-/prettier-plugin-prisma-4.13.0.tgz", - "integrity": "sha512-bnOWoQTVXM9VWBErPGE6rVgI8kCQts+DMQolg7Sj/Q0/oAlpDYOhce4ljQKf5BhJW061yrB3+CRVps6tNcUkQg==", - "dev": true, - "dependencies": { - "@prisma/prisma-fmt-wasm": "4.13.0-52.integration-mobc-upstream-d100a9299fcb9cffb064301998e9a94ce2722c49" - }, - "engines": { - "node": ">=14", - "npm": ">=8" - }, - "peerDependencies": { - "prettier": ">=2" - } - }, - "node_modules/pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pretty-error": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", - "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", - "dependencies": { - "lodash": "^4.17.20", - "renderkid": "^2.0.4" - } - }, - "node_modules/prism-react-renderer": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-1.2.1.tgz", - "integrity": "sha512-w23ch4f75V1Tnz8DajsYKvY5lF7H1+WvzvLUcF0paFxkTHSp42RS0H5CttdN2Q8RR3DRGZ9v5xD/h3n8C8kGmg==", - "dev": true, - "peerDependencies": { - "react": ">=0.14.9" - } - }, - "node_modules/prisma": { - "version": "4.16.2", - "resolved": "https://registry.npmjs.org/prisma/-/prisma-4.16.2.tgz", - "integrity": "sha512-SYCsBvDf0/7XSJyf2cHTLjLeTLVXYfqp7pG5eEVafFLeT0u/hLFz/9W196nDRGUOo1JfPatAEb+uEnTQImQC1g==", - "devOptional": true, - "hasInstallScript": true, - "dependencies": { - "@prisma/engines": "4.16.2" - }, - "bin": { - "prisma": "build/index.js", - "prisma2": "build/index.js" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/probe-image-size": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/probe-image-size/-/probe-image-size-7.2.3.tgz", - "integrity": "sha512-HubhG4Rb2UH8YtV4ba0Vp5bQ7L78RTONYu/ujmCu5nBI8wGv24s4E9xSKBi0N1MowRpxk76pFCpJtW0KPzOK0w==", - "dependencies": { - "lodash.merge": "^4.6.2", - "needle": "^2.5.2", - "stream-parser": "~0.3.1" - } - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "dependencies": { - "asap": "~2.0.3" - } - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - } - }, - "node_modules/prop-types/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "node_modules/proper-lockfile": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", - "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", - "dependencies": { - "graceful-fs": "^4.2.4", - "retry": "^0.12.0", - "signal-exit": "^3.0.2" - } - }, - "node_modules/property-information": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", - "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", - "dependencies": { - "xtend": "^4.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/protocols": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz", - "integrity": "sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==" - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/pupa": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", - "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", - "dependencies": { - "escape-goat": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, - "node_modules/qs": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", - "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/query-string": { - "version": "6.14.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz", - "integrity": "sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==", - "dependencies": { - "decode-uri-component": "^0.2.0", - "filter-obj": "^1.1.0", - "split-on-first": "^1.0.0", - "strict-uri-encode": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/queue": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", - "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", - "dev": true, - "dependencies": { - "inherits": "~2.0.3" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/raw-body/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/raw-loader": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz", - "integrity": "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==", - "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-copy-to-clipboard": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/react-copy-to-clipboard/-/react-copy-to-clipboard-5.1.0.tgz", - "integrity": "sha512-k61RsNgAayIJNoy9yDsYzDe/yAZAzEbEgcz3DZMhF686LEyukcE1hzurxe85JandPUG+yTfGVFzuEw3xt8WP/A==", - "dependencies": { - "copy-to-clipboard": "^3.3.1", - "prop-types": "^15.8.1" - }, - "peerDependencies": { - "react": "^15.3.0 || 16 || 17 || 18" - } - }, - "node_modules/react-copy-to-clipboard/node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/react-copy-to-clipboard/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "node_modules/react-dev-utils": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz", - "integrity": "sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==", - "dependencies": { - "@babel/code-frame": "^7.16.0", - "address": "^1.1.2", - "browserslist": "^4.18.1", - "chalk": "^4.1.2", - "cross-spawn": "^7.0.3", - "detect-port-alt": "^1.1.6", - "escape-string-regexp": "^4.0.0", - "filesize": "^8.0.6", - "find-up": "^5.0.0", - "fork-ts-checker-webpack-plugin": "^6.5.0", - "global-modules": "^2.0.0", - "globby": "^11.0.4", - "gzip-size": "^6.0.0", - "immer": "^9.0.7", - "is-root": "^2.1.0", - "loader-utils": "^3.2.0", - "open": "^8.4.0", - "pkg-up": "^3.1.0", - "prompts": "^2.4.2", - "react-error-overlay": "^6.0.11", - "recursive-readdir": "^2.2.2", - "shell-quote": "^1.7.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/react-dev-utils/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/react-dev-utils/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/react-dev-utils/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/react-dev-utils/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/react-dev-utils/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/react-dev-utils/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/react-dev-utils/node_modules/loader-utils": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", - "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", - "engines": { - "node": ">= 12.13.0" - } - }, - "node_modules/react-dev-utils/node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/react-dev-utils/node_modules/react-error-overlay": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz", - "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==" - }, - "node_modules/react-dev-utils/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/react-dom": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", - "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.2" - }, - "peerDependencies": { - "react": "17.0.2" - } - }, - "node_modules/react-error-overlay": { - "version": "6.0.9", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz", - "integrity": "sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==" - }, - "node_modules/react-fast-compare": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", - "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==" - }, - "node_modules/react-feather": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/react-feather/-/react-feather-2.0.10.tgz", - "integrity": "sha512-BLhukwJ+Z92Nmdcs+EMw6dy1Z/VLiJTzEQACDUEnWMClhYnFykJCGWQx+NmwP/qQHGX/5CzQ+TGi8ofg2+HzVQ==", - "dependencies": { - "prop-types": "^15.7.2" - }, - "peerDependencies": { - "react": ">=16.8.6" - } - }, - "node_modules/react-ga": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/react-ga/-/react-ga-3.3.1.tgz", - "integrity": "sha512-4Vc0W5EvXAXUN/wWyxvsAKDLLgtJ3oLmhYYssx+YzphJpejtOst6cbIHCIyF50Fdxuf5DDKqRYny24yJ2y7GFQ==", - "peerDependencies": { - "prop-types": "^15.6.0", - "react": "^15.6.2 || ^16.0 || ^17 || ^18" - } - }, - "node_modules/react-instantsearch-core": { - "version": "6.32.1", - "resolved": "https://registry.npmjs.org/react-instantsearch-core/-/react-instantsearch-core-6.32.1.tgz", - "integrity": "sha512-R8VivvJmFemsW6Urp5KGiqjVZ8XkgYNm8qt6t9WVHXOoo7B8Txi/7yOMNRwT8PWNWBMpYlYMEWZ9PClMuX0Zsg==", - "dependencies": { - "@babel/runtime": "^7.1.2", - "algoliasearch-helper": "^3.10.0", - "prop-types": "^15.6.2", - "react-fast-compare": "^3.0.0" - }, - "peerDependencies": { - "algoliasearch": ">= 3.1 < 5", - "react": ">= 16.3.0 < 19" - } - }, - "node_modules/react-instantsearch-dom": { - "version": "6.32.1", - "resolved": "https://registry.npmjs.org/react-instantsearch-dom/-/react-instantsearch-dom-6.32.1.tgz", - "integrity": "sha512-oditYXY6zNbAY6txhGBLOPaEie95Eii+nCEgysuoo4fnOQDUxuHXMruiTkYJlfJJ5HAKBJyTdjtKoGeuJL6G1w==", - "deprecated": "package has moved to react-instantsearch", - "dependencies": { - "@babel/runtime": "^7.1.2", - "algoliasearch-helper": "^3.10.0", - "classnames": "^2.2.5", - "prop-types": "^15.6.2", - "react-fast-compare": "^3.0.0", - "react-instantsearch-core": "6.32.1" - }, - "peerDependencies": { - "algoliasearch": ">= 3.1 < 5", - "react": ">= 16.3.0 < 19", - "react-dom": ">= 16.3.0 < 19" - } - }, - "node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" - }, - "node_modules/react-lifecycles-compat": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", - "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" - }, - "node_modules/react-refresh": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", - "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-select": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.4.0.tgz", - "integrity": "sha512-CjE9RFLUvChd5SdlfG4vqxZd55AZJRrLrHzkQyTYeHlpOztqcgnyftYAolJ0SGsBev6zAs6qFrjm6KU3eo2hzg==", - "dependencies": { - "@babel/runtime": "^7.12.0", - "@emotion/cache": "^11.4.0", - "@emotion/react": "^11.8.1", - "@types/react-transition-group": "^4.4.0", - "memoize-one": "^5.0.0", - "prop-types": "^15.6.0", - "react-transition-group": "^4.3.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/react-sticky-box": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/react-sticky-box/-/react-sticky-box-1.0.2.tgz", - "integrity": "sha512-Kyvtppdtv1KqJyNU4DtrSMI0unyQRgtraZvVQ0GAazVbYiTsIVpyhpr+5R0Aavzu4uJNSe1awj2rk/qI7i6Zfw==", - "dependencies": { - "resize-observer-polyfill": "^1.5.1" - }, - "peerDependencies": { - "react": ">=16.8.0" - } - }, - "node_modules/react-toastify": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-9.0.8.tgz", - "integrity": "sha512-EwM+teWt49HSHx+67qI08yLAW1zAsBxCXLCsUfxHYv1W7/R3ZLhrqKalh7j+kjgPna1h5LQMSMwns4tB4ww2yQ==", - "dependencies": { - "clsx": "^1.1.1" - }, - "peerDependencies": { - "react": ">=16", - "react-dom": ">=16" - } - }, - "node_modules/react-transition-group": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", - "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", - "dependencies": { - "@babel/runtime": "^7.5.5", - "dom-helpers": "^5.0.1", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2" - }, - "peerDependencies": { - "react": ">=16.6.0", - "react-dom": ">=16.6.0" - } - }, - "node_modules/read": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", - "dependencies": { - "mute-stream": "~0.0.4" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/readable-web-to-node-stream": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", - "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", - "dependencies": { - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/readable-web-to-node-stream/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/recursive-readdir": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", - "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", - "dependencies": { - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/redux": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/redux/-/redux-4.1.2.tgz", - "integrity": "sha512-SH8PglcebESbd/shgf6mii6EIoRM0zrQyjcuQ+ojmfxjTtE0z9Y8pa62iA/OJ58qjP6j27uyW4kUF4jl/jd6sw==", - "dependencies": { - "@babel/runtime": "^7.9.2" - } - }, - "node_modules/redux-thunk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.2.tgz", - "integrity": "sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q==", - "peerDependencies": { - "redux": "^4" - } - }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz", - "integrity": "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "globalthis": "^1.0.3", - "which-builtin-type": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" - }, - "node_modules/regenerate-unicode-properties": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", - "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", - "dependencies": { - "regenerate": "^1.4.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", - "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" - }, - "node_modules/regenerator-transform": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", - "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", - "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "set-function-name": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/regexpu-core": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", - "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", - "dependencies": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^9.0.0", - "regjsgen": "^0.5.2", - "regjsparser": "^0.7.0", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/registry-auth-token": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz", - "integrity": "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==", - "dependencies": { - "rc": "1.2.8" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/registry-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", - "dependencies": { - "rc": "^1.2.8" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/regjsgen": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==" - }, - "node_modules/regjsparser": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", - "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", - "dependencies": { - "jsesc": "~0.5.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/relay-runtime": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/relay-runtime/-/relay-runtime-12.0.0.tgz", - "integrity": "sha512-QU6JKr1tMsry22DXNy9Whsq5rmvwr3LSZiiWV/9+DFpuTWvp+WFhobWMc8TC4OjKFfNhEZy7mOiqUAn5atQtug==", - "dependencies": { - "@babel/runtime": "^7.0.0", - "fbjs": "^3.0.0", - "invariant": "^2.2.4" - } - }, - "node_modules/remark": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/remark/-/remark-10.0.1.tgz", - "integrity": "sha512-E6lMuoLIy2TyiokHprMjcWNJ5UxfGQjaMSMhV+f4idM625UjjK4j798+gPs5mfjzDE6vL0oFKVeZM6gZVSVrzQ==", - "dependencies": { - "remark-parse": "^6.0.0", - "remark-stringify": "^6.0.0", - "unified": "^7.0.0" - } - }, - "node_modules/remark-footnotes": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-2.0.0.tgz", - "integrity": "sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-gfm": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-1.0.0.tgz", - "integrity": "sha512-KfexHJCiqvrdBZVbQ6RopMZGwaXz6wFJEfByIuEwGf0arvITHjiKKZ1dpXujjH9KZdm1//XJQwgfnJ3lmXaDPA==", - "dependencies": { - "mdast-util-gfm": "^0.1.0", - "micromark-extension-gfm": "^0.3.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-mdx": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-1.6.22.tgz", - "integrity": "sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ==", - "dependencies": { - "@babel/core": "7.12.9", - "@babel/helper-plugin-utils": "7.10.4", - "@babel/plugin-proposal-object-rest-spread": "7.12.1", - "@babel/plugin-syntax-jsx": "7.12.1", - "@mdx-js/util": "1.6.22", - "is-alphabetical": "1.0.4", - "remark-parse": "8.0.3", - "unified": "9.2.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-mdx/node_modules/@babel/core": { - "version": "7.12.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", - "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", - "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.12.5", - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helpers": "^7.12.5", - "@babel/parser": "^7.12.7", - "@babel/template": "^7.12.7", - "@babel/traverse": "^7.12.9", - "@babel/types": "^7.12.7", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.2", - "lodash": "^4.17.19", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/remark-mdx/node_modules/@babel/helper-plugin-utils": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", - "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" - }, - "node_modules/remark-mdx/node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", - "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead.", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.12.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/remark-mdx/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" - }, - "node_modules/remark-mdx/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/remark-mdx/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/remark-parse": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz", - "integrity": "sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==", - "dependencies": { - "ccount": "^1.0.0", - "collapse-white-space": "^1.0.2", - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-whitespace-character": "^1.0.0", - "is-word-character": "^1.0.0", - "markdown-escapes": "^1.0.0", - "parse-entities": "^2.0.0", - "repeat-string": "^1.5.4", - "state-toggle": "^1.0.0", - "trim": "0.0.1", - "trim-trailing-lines": "^1.0.0", - "unherit": "^1.0.4", - "unist-util-remove-position": "^2.0.0", - "vfile-location": "^3.0.0", - "xtend": "^4.0.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-parse/node_modules/unist-util-remove-position": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz", - "integrity": "sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==", - "dependencies": { - "unist-util-visit": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-retext": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/remark-retext/-/remark-retext-3.1.3.tgz", - "integrity": "sha512-UujXAm28u4lnUvtOZQFYfRIhxX+auKI9PuA2QpQVTT7gYk1OgX6o0OUrSo1KOa6GNrFX+OODOtS5PWIHPxM7qw==", - "dependencies": { - "mdast-util-to-nlcst": "^3.2.0" - } - }, - "node_modules/remark-sectionize": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/remark-sectionize/-/remark-sectionize-1.1.1.tgz", - "integrity": "sha512-++GBmbsoeQrMBWn6jf3mj0bRq3DR8LnQPJo7u5faQ9JAJ5GeAu2uve8NoW+vgvhnuAv0GYS8hGb2+kqa+8mnpg==", - "dependencies": { - "unist-util-find-after": "^2.0.2", - "unist-util-visit-parents": "^2.0.1" - } - }, - "node_modules/remark-sectionize/node_modules/unist-util-is": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", - "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==" - }, - "node_modules/remark-sectionize/node_modules/unist-util-visit-parents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", - "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", - "dependencies": { - "unist-util-is": "^3.0.0" - } - }, - "node_modules/remark-squeeze-paragraphs": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz", - "integrity": "sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw==", - "dependencies": { - "mdast-squeeze-paragraphs": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-stringify": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.1.tgz", - "integrity": "sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==", - "dependencies": { - "mdast-util-to-markdown": "^0.6.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark/node_modules/markdown-table": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz", - "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==" - }, - "node_modules/remark/node_modules/parse-entities": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.2.tgz", - "integrity": "sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==", - "dependencies": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" - } - }, - "node_modules/remark/node_modules/remark-parse": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-6.0.3.tgz", - "integrity": "sha512-QbDXWN4HfKTUC0hHa4teU463KclLAnwpn/FBn87j9cKYJWWawbiLgMfP2Q4XwhxxuuuOxHlw+pSN0OKuJwyVvg==", - "dependencies": { - "collapse-white-space": "^1.0.2", - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-whitespace-character": "^1.0.0", - "is-word-character": "^1.0.0", - "markdown-escapes": "^1.0.0", - "parse-entities": "^1.1.0", - "repeat-string": "^1.5.4", - "state-toggle": "^1.0.0", - "trim": "0.0.1", - "trim-trailing-lines": "^1.0.0", - "unherit": "^1.0.4", - "unist-util-remove-position": "^1.0.0", - "vfile-location": "^2.0.0", - "xtend": "^4.0.1" - } - }, - "node_modules/remark/node_modules/remark-stringify": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-6.0.4.tgz", - "integrity": "sha512-eRWGdEPMVudijE/psbIDNcnJLRVx3xhfuEsTDGgH4GsFF91dVhw5nhmnBppafJ7+NWINW6C7ZwWbi30ImJzqWg==", - "dependencies": { - "ccount": "^1.0.0", - "is-alphanumeric": "^1.0.0", - "is-decimal": "^1.0.0", - "is-whitespace-character": "^1.0.0", - "longest-streak": "^2.0.1", - "markdown-escapes": "^1.0.0", - "markdown-table": "^1.1.0", - "mdast-util-compact": "^1.0.0", - "parse-entities": "^1.0.2", - "repeat-string": "^1.5.4", - "state-toggle": "^1.0.0", - "stringify-entities": "^1.0.1", - "unherit": "^1.0.4", - "xtend": "^4.0.1" - } - }, - "node_modules/remark/node_modules/stringify-entities": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-1.3.2.tgz", - "integrity": "sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A==", - "dependencies": { - "character-entities-html4": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-hexadecimal": "^1.0.0" - } - }, - "node_modules/remark/node_modules/unified": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/unified/-/unified-7.1.0.tgz", - "integrity": "sha512-lbk82UOIGuCEsZhPj8rNAkXSDXd6p0QLzIuSsCdxrqnqU56St4eyOB+AlXsVgVeRmetPTYydIuvFfpDIed8mqw==", - "dependencies": { - "@types/unist": "^2.0.0", - "@types/vfile": "^3.0.0", - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-plain-obj": "^1.1.0", - "trough": "^1.0.0", - "vfile": "^3.0.0", - "x-is-string": "^0.1.0" - } - }, - "node_modules/remark/node_modules/unist-util-is": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", - "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==" - }, - "node_modules/remark/node_modules/unist-util-remove-position": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz", - "integrity": "sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A==", - "dependencies": { - "unist-util-visit": "^1.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark/node_modules/unist-util-stringify-position": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz", - "integrity": "sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==" - }, - "node_modules/remark/node_modules/unist-util-visit": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", - "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", - "dependencies": { - "unist-util-visit-parents": "^2.0.0" - } - }, - "node_modules/remark/node_modules/unist-util-visit-parents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", - "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", - "dependencies": { - "unist-util-is": "^3.0.0" - } - }, - "node_modules/remark/node_modules/vfile": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-3.0.1.tgz", - "integrity": "sha512-y7Y3gH9BsUSdD4KzHsuMaCzRjglXN0W2EcMf0gpvu6+SbsGhMje7xDc8AEoeXy6mIwCKMI6BkjMsRjzQbhMEjQ==", - "dependencies": { - "is-buffer": "^2.0.0", - "replace-ext": "1.0.0", - "unist-util-stringify-position": "^1.0.0", - "vfile-message": "^1.0.0" - } - }, - "node_modules/remark/node_modules/vfile-location": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.6.tgz", - "integrity": "sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark/node_modules/vfile-message": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-1.1.1.tgz", - "integrity": "sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==", - "dependencies": { - "unist-util-stringify-position": "^1.1.1" - } - }, - "node_modules/remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==" - }, - "node_modules/renderkid": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz", - "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==", - "dependencies": { - "css-select": "^4.1.3", - "dom-converter": "^0.2.0", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^3.0.1" - } - }, - "node_modules/renderkid/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/renderkid/node_modules/css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/renderkid/node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/renderkid/node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/renderkid/node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/renderkid/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/renderkid/node_modules/htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - }, - "node_modules/renderkid/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha512-vuNYXC7gG7IeVNBC1xUllqCcZKRbJoSPOBhnTEcAIiKCsbuef6zO3F0Rve3isPMMoNoQRWjQwbAgAjHUHniyEA==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-like": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz", - "integrity": "sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==", - "engines": { - "node": "*" - } - }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" - }, - "node_modules/require-package-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/require-package-name/-/require-package-name-2.0.1.tgz", - "integrity": "sha512-uuoJ1hU/k6M0779t3VMVIYpb2VMJk05cehCaABFhXaibcbvfgR8wKiozLjVFSzJPmQMRqIcO0HMyTFqfV09V6Q==" - }, - "node_modules/resize-observer-polyfill": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", - "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-alpn": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/responselike": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", - "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", - "dependencies": { - "lowercase-keys": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/retext-english": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/retext-english/-/retext-english-3.0.4.tgz", - "integrity": "sha512-yr1PgaBDde+25aJXrnt3p1jvT8FVLVat2Bx8XeAWX13KXo8OT+3nWGU3HWxM4YFJvmfqvJYJZG2d7xxaO774gw==", - "dependencies": { - "parse-english": "^4.0.0", - "unherit": "^1.0.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/safe-array-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", - "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-array-concat/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/sanitize-html": { - "version": "1.27.5", - "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-1.27.5.tgz", - "integrity": "sha512-M4M5iXDAUEcZKLXkmk90zSYWEtk5NH3JmojQxKxV371fnMh+x9t1rqdmXaGoyEHw3z/X/8vnFhKjGL5xFGOJ3A==", - "dependencies": { - "htmlparser2": "^4.1.0", - "lodash": "^4.17.15", - "parse-srcset": "^1.0.2", - "postcss": "^7.0.27" - } - }, - "node_modules/sanitize-html/node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/sanitize-html/node_modules/dom-serializer/node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/sanitize-html/node_modules/domhandler": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz", - "integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==", - "dependencies": { - "domelementtype": "^2.0.1" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/sanitize-html/node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/sanitize-html/node_modules/domutils/node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/sanitize-html/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/sanitize-html/node_modules/htmlparser2": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.1.0.tgz", - "integrity": "sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^3.0.0", - "domutils": "^2.0.0", - "entities": "^2.0.0" - } - }, - "node_modules/sanitize-html/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" - }, - "node_modules/sanitize-html/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/sanitize-html/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sax": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", - "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" - }, - "node_modules/scheduler": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/schema-utils/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/schema-utils/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/schema-utils/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "node_modules/section-matter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", - "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", - "dependencies": { - "extend-shallow": "^2.0.1", - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/semver-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", - "dev": true - }, - "node_modules/semver-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", - "dependencies": { - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/send/node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/sentence-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", - "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case-first": "^2.0.2" - } - }, - "node_modules/serialize-javascript": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", - "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" - }, - "node_modules/set-function-length": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", - "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", - "dependencies": { - "define-data-property": "^1.1.1", - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", - "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", - "dependencies": { - "define-data-property": "^1.0.1", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shallow-compare": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/shallow-compare/-/shallow-compare-1.2.2.tgz", - "integrity": "sha512-LUMFi+RppPlrHzbqmFnINTrazo0lPNwhcgzuAXVVcfy/mqPDrQmHAyz5bvV0gDAuRFrk804V0HpQ6u9sZ0tBeg==" - }, - "node_modules/shallowequal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", - "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" - }, - "node_modules/sharp": { - "version": "0.30.7", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.30.7.tgz", - "integrity": "sha512-G+MY2YW33jgflKPTXXptVO28HvNOo9G3j0MybYAHeEmby+QuD2U98dT6ueht9cv/XDqZspSpIhoSW+BAKJ7Hig==", - "hasInstallScript": true, - "dependencies": { - "color": "^4.2.3", - "detect-libc": "^2.0.1", - "node-addon-api": "^5.0.0", - "prebuild-install": "^7.1.1", - "semver": "^7.3.7", - "simple-get": "^4.0.1", - "tar-fs": "^2.1.1", - "tunnel-agent": "^0.6.0" - }, - "engines": { - "node": ">=12.13.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/sharp/node_modules/detect-libc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", - "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/sharp/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sharp/node_modules/node-addon-api": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", - "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==" - }, - "node_modules/sharp/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sharp/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "engines": { - "node": ">=8" - } - }, - "node_modules/shell-quote": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", - "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, - "node_modules/signedsource": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/signedsource/-/signedsource-1.0.0.tgz", - "integrity": "sha512-6+eerH9fEnNmi/hyM1DXcRK3pWdoMQtlkQ+ns0ntzunjKqp5i3sKCc80ym8Fib3iaYhdJUOPdhlJWj1tvge2Ww==" - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/simple-get": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/simple-swizzle/node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" - }, - "node_modules/sirv": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.3.tgz", - "integrity": "sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==", - "dev": true, - "dependencies": { - "@polka/url": "^1.0.0-next.20", - "mrmime": "^1.0.0", - "totalist": "^3.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" - }, - "node_modules/sitemap": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-7.1.1.tgz", - "integrity": "sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg==", - "dependencies": { - "@types/node": "^17.0.5", - "@types/sax": "^1.2.1", - "arg": "^5.0.0", - "sax": "^1.2.4" - }, - "bin": { - "sitemap": "dist/cli.js" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=5.6.0" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/slice-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/slugify": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz", - "integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/smoothscroll-polyfill": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/smoothscroll-polyfill/-/smoothscroll-polyfill-0.4.4.tgz", - "integrity": "sha512-TK5ZA9U5RqCwMpfoMq/l1mrH0JAR7y7KRvOBx0n2869aLxch+gT9GhN3yUfjiw+d/DiF1mKo14+hd62JyMmoBg==" - }, - "node_modules/snake-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", - "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/socket.io": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-3.1.2.tgz", - "integrity": "sha512-JubKZnTQ4Z8G4IZWtaAZSiRP3I/inpy8c/Bsx2jrwGrTbKeVU5xd6qkKMHpChYeM3dWZSO0QACiGK+obhBNwYw==", - "dependencies": { - "@types/cookie": "^0.4.0", - "@types/cors": "^2.8.8", - "@types/node": ">=10.0.0", - "accepts": "~1.3.4", - "base64id": "~2.0.0", - "debug": "~4.3.1", - "engine.io": "~4.1.0", - "socket.io-adapter": "~2.1.0", - "socket.io-parser": "~4.0.3" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/socket.io-adapter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.1.0.tgz", - "integrity": "sha512-+vDov/aTsLjViYTwS9fPy5pEtTkrbEKsw2M+oVSoFGw6OD1IpvlV1VPhUzNbofCQ8oyMbdYJqDtGdmHQK6TdPg==" - }, - "node_modules/socket.io-client": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-3.1.3.tgz", - "integrity": "sha512-4sIGOGOmCg3AOgGi7EEr6ZkTZRkrXwub70bBB/F0JSkMOUFpA77WsL87o34DffQQ31PkbMUIadGOk+3tx1KGbw==", - "dependencies": { - "@types/component-emitter": "^1.2.10", - "backo2": "~1.0.2", - "component-emitter": "~1.3.0", - "debug": "~4.3.1", - "engine.io-client": "~4.1.0", - "parseuri": "0.0.6", - "socket.io-parser": "~4.0.4" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/socket.io-parser": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.5.tgz", - "integrity": "sha512-sNjbT9dX63nqUFIOv95tTVm6elyIU4RvB1m8dOeZt+IgWwcWklFDOdmGcfo3zSiRsnR/3pJkjY5lfoGqEe4Eig==", - "dependencies": { - "@types/component-emitter": "^1.2.10", - "component-emitter": "~1.3.0", - "debug": "~4.3.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" - }, - "node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "deprecated": "Please use @jridgewell/sourcemap-codec instead" - }, - "node_modules/space-separated-tokens": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", - "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.16", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", - "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==" - }, - "node_modules/split-on-first": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", - "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/sponge-case": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sponge-case/-/sponge-case-1.0.1.tgz", - "integrity": "sha512-dblb9Et4DAtiZ5YSUZHLl4XhH4uK80GhAZrVXdN4O2P4gQ40Wa5UIOPUHlA/nFd2PLblBZWUioLMMAVrgpoYcA==", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/sprintf-js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" - }, - "node_modules/st": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/st/-/st-2.0.0.tgz", - "integrity": "sha512-drN+aGYnrZPNYIymmNwIY7LXYJ8MqsqXj4fMRue3FOgGMdGjSX10fhJ3qx0sVQPhcWxhEaN4U/eWM4O4dbYNAw==", - "dependencies": { - "async-cache": "^1.1.0", - "bl": "^4.0.0", - "fd": "~0.0.2", - "mime": "^2.4.4", - "negotiator": "~0.6.2" - }, - "bin": { - "st": "bin/server.js" - }, - "optionalDependencies": { - "graceful-fs": "^4.2.3" - } - }, - "node_modules/stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility" - }, - "node_modules/stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", - "engines": { - "node": "*" - } - }, - "node_modules/stackframe": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", - "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" - }, - "node_modules/state-toggle": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz", - "integrity": "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/static-site-generator-webpack-plugin": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-3.4.2.tgz", - "integrity": "sha512-39Kn+fZDVjolLYuX5y1rDvksJIW0QEUaEC/AVO/UewNXxGzoSQI1UYnRsL+ocAcN5Yti6d6rJgEL0qZ5tNXfdw==", - "dependencies": { - "bluebird": "^3.0.5", - "cheerio": "^0.22.0", - "eval": "^0.1.0", - "url": "^0.11.0", - "webpack-sources": "^0.2.0" - } - }, - "node_modules/static-site-generator-webpack-plugin/node_modules/cheerio": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", - "integrity": "sha512-8/MzidM6G/TgRelkzDG13y3Y9LxBjCb+8yOEZ9+wwq5gVF2w2pV0wmHvjfT0RvuxGyR7UEuK36r+yYMbT4uKgA==", - "dependencies": { - "css-select": "~1.2.0", - "dom-serializer": "~0.1.0", - "entities": "~1.1.1", - "htmlparser2": "^3.9.1", - "lodash.assignin": "^4.0.9", - "lodash.bind": "^4.1.4", - "lodash.defaults": "^4.0.1", - "lodash.filter": "^4.4.0", - "lodash.flatten": "^4.2.0", - "lodash.foreach": "^4.3.0", - "lodash.map": "^4.4.0", - "lodash.merge": "^4.4.0", - "lodash.pick": "^4.2.1", - "lodash.reduce": "^4.4.0", - "lodash.reject": "^4.4.0", - "lodash.some": "^4.4.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/static-site-generator-webpack-plugin/node_modules/css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha512-dUQOBoqdR7QwV90WysXPLXG5LO7nhYBgiWVfxF80DKPF8zx1t/pUd2FYy73emg3zrjtM6dzmYgbHKfV2rxiHQA==", - "dependencies": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" - } - }, - "node_modules/static-site-generator-webpack-plugin/node_modules/css-what": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", - "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", - "engines": { - "node": "*" - } - }, - "node_modules/static-site-generator-webpack-plugin/node_modules/dom-serializer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", - "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", - "dependencies": { - "domelementtype": "^1.3.0", - "entities": "^1.1.1" - } - }, - "node_modules/static-site-generator-webpack-plugin/node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - }, - "node_modules/static-site-generator-webpack-plugin/node_modules/domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "dependencies": { - "domelementtype": "1" - } - }, - "node_modules/static-site-generator-webpack-plugin/node_modules/domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw==", - "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "node_modules/static-site-generator-webpack-plugin/node_modules/entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" - }, - "node_modules/static-site-generator-webpack-plugin/node_modules/htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "dependencies": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - } - }, - "node_modules/static-site-generator-webpack-plugin/node_modules/nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "dependencies": { - "boolbase": "~1.0.0" - } - }, - "node_modules/static-site-generator-webpack-plugin/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/static-site-generator-webpack-plugin/node_modules/source-list-map": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-1.1.2.tgz", - "integrity": "sha512-FqR2O+cX+toUD3ULVIgTtiqYIqPnA62ehJD47mf4LG1PZCB+xmIa3gcTEhegGbP22aRPh88dJSdgDIolrvSxBQ==" - }, - "node_modules/static-site-generator-webpack-plugin/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-site-generator-webpack-plugin/node_modules/webpack-sources": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-0.2.3.tgz", - "integrity": "sha512-iqanNZjOHLdPn/R0e/nKVn90dm4IsUMxKam0MZD1btWhFub/Cdo1nWdMio6yEqBc0F8mEieOjc+jfBSXwna94Q==", - "dependencies": { - "source-list-map": "^1.1.1", - "source-map": "~0.5.3" - } - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/stream-parser": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/stream-parser/-/stream-parser-0.3.1.tgz", - "integrity": "sha512-bJ/HgKq41nlKvlhccD5kaCr/P+Hu0wPNKPJOH7en+YrJu/9EgqUF+88w5Jb6KNcjOFMhfX4B2asfeAtIGuHObQ==", - "dependencies": { - "debug": "2" - } - }, - "node_modules/stream-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/stream-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/strict-uri-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", - "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/string-argv": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", - "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", - "dev": true, - "engines": { - "node": ">=0.6.19" - } - }, - "node_modules/string-natural-compare": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz", - "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==" - }, - "node_modules/string-similarity": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/string-similarity/-/string-similarity-1.2.2.tgz", - "integrity": "sha512-IoHUjcw3Srl8nsPlW04U3qwWPk3oG2ffLM0tN853d/E/JlIvcmZmDY2Kz5HzKp4lEi2T7QD7Zuvjq/1rDw+XcQ==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "dependencies": { - "lodash.every": "^4.6.0", - "lodash.flattendeep": "^4.4.0", - "lodash.foreach": "^4.5.0", - "lodash.map": "^4.6.0", - "lodash.maxby": "^4.6.0" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "node_modules/string.prototype.matchall": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", - "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "regexp.prototype.flags": "^1.5.0", - "set-function-name": "^2.0.0", - "side-channel": "^1.0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", - "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/stringify-entities": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-3.1.0.tgz", - "integrity": "sha512-3FP+jGMmMV/ffZs86MoghGqAoqXAdxLrJP4GUdrDN1aIScYih5tuIO3eF4To5AJZ79KDZ8Fpdy7QJnK8SsL1Vg==", - "dependencies": { - "character-entities-html4": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "xtend": "^4.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/stringify-object": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", - "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", - "dev": true, - "dependencies": { - "get-own-enumerable-property-symbols": "^3.0.0", - "is-obj": "^1.0.1", - "is-regexp": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/stringify-object/node_modules/is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-bom-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", - "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-filename-increment": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-filename-increment/-/strip-filename-increment-2.0.1.tgz", - "integrity": "sha512-+v5xsiTTsdYqkPj7qz1zlngIsjZedhHDi3xp/9bMurV8kXe9DAr732gNVqtt4X8sI3hOqS3nlFfps5gyVcux6w==", - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dependencies": { - "min-indent": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strip-outer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", - "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", - "dependencies": { - "escape-string-regexp": "^1.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strtok3": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz", - "integrity": "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==", - "dependencies": { - "@tokenizer/token": "^0.3.0", - "peek-readable": "^4.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/style-loader": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-2.0.0.tgz", - "integrity": "sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ==", - "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/style-to-object": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz", - "integrity": "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==", - "dependencies": { - "inline-style-parser": "0.1.1" - } - }, - "node_modules/styled-components": { - "version": "5.3.11", - "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.3.11.tgz", - "integrity": "sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw==", - "dependencies": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/traverse": "^7.4.5", - "@emotion/is-prop-valid": "^1.1.0", - "@emotion/stylis": "^0.8.4", - "@emotion/unitless": "^0.7.4", - "babel-plugin-styled-components": ">= 1.12.0", - "css-to-react-native": "^3.0.0", - "hoist-non-react-statics": "^3.0.0", - "shallowequal": "^1.1.0", - "supports-color": "^5.5.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/styled-components" - }, - "peerDependencies": { - "react": ">= 16.8.0", - "react-dom": ">= 16.8.0", - "react-is": ">= 16.8.0" - } - }, - "node_modules/styled-components/node_modules/@emotion/unitless": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", - "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" - }, - "node_modules/stylehacks": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", - "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", - "dependencies": { - "browserslist": "^4.21.4", - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/stylis": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", - "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" - }, - "node_modules/sudo-prompt": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-8.2.5.tgz", - "integrity": "sha512-rlBo3HU/1zAJUrkY6jNxDOC9eVYliG6nS4JA8u8KAshITd07tafMc/Br7xQwCSseXwJ2iCcHCE8SNWX3q8Z+kw==" - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", - "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.", - "dependencies": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" - }, - "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/svgo/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/svgo/node_modules/css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } - }, - "node_modules/svgo/node_modules/css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/svgo/node_modules/dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "dependencies": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - } - }, - "node_modules/svgo/node_modules/domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "node_modules/svgo/node_modules/domutils/node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - }, - "node_modules/svgo/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/svgo/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/svgo/node_modules/nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "dependencies": { - "boolbase": "~1.0.0" - } - }, - "node_modules/svgo/node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, - "node_modules/svgo/node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" - }, - "node_modules/swap-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/swap-case/-/swap-case-2.0.2.tgz", - "integrity": "sha512-kc6S2YS/2yXbtkSMunBtKdah4VFETZ8Oh6ONSmSd9bRxhqTrtARUCBUiWXH3xVPpvR7tz2CSnkuXVE42EcGnMw==", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/table": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", - "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", - "dependencies": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/table/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/table/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/table/node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tar-stream/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/term-size": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", - "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/terser": { - "version": "5.24.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.24.0.tgz", - "integrity": "sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw==", - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.9", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", - "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.17", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.16.8" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/terser-webpack-plugin/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/terser-webpack-plugin/node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/terser-webpack-plugin/node_modules/serialize-javascript": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", - "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/terser-webpack-plugin/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/terser/node_modules/acorn": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" - }, - "node_modules/timers-ext": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", - "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", - "dependencies": { - "es5-ext": "~0.10.46", - "next-tick": "1" - } - }, - "node_modules/title-case": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/title-case/-/title-case-3.0.3.tgz", - "integrity": "sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dependencies": { - "rimraf": "^3.0.0" - }, - "engines": { - "node": ">=8.17.0" - } - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "engines": { - "node": ">=4" - } - }, - "node_modules/to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "engines": { - "node": ">=6" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toggle-selection": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", - "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/token-types": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz", - "integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==", - "dependencies": { - "@tokenizer/token": "^0.3.0", - "ieee754": "^1.2.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/totalist": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", - "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==", - "deprecated": "Use String.prototype.trim() instead" - }, - "node_modules/trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/trim-repeated": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", - "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", - "dependencies": { - "escape-string-regexp": "^1.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/trim-trailing-lines": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz", - "integrity": "sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/trough": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", - "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/true-case-path": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-2.2.1.tgz", - "integrity": "sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q==" - }, - "node_modules/tsconfig-paths": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", - "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - }, - "node_modules/tslint": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz", - "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==", - "deprecated": "TSLint has been deprecated in favor of ESLint. Please see https://github.com/palantir/tslint/issues/4534 for more information.", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "builtin-modules": "^1.1.1", - "chalk": "^2.3.0", - "commander": "^2.12.1", - "diff": "^4.0.1", - "glob": "^7.1.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.3", - "resolve": "^1.3.2", - "semver": "^5.3.0", - "tslib": "^1.13.0", - "tsutils": "^2.29.0" - }, - "bin": { - "tslint": "bin/tslint" - }, - "engines": { - "node": ">=4.8.0" - }, - "peerDependencies": { - "typescript": ">=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev || >= 4.0.0-dev" - } - }, - "node_modules/tslint/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/tslint/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/tslint/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/tslint/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/tslint/node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "node_modules/tslint/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/tslint/node_modules/tsutils": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", - "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "peerDependencies": { - "typescript": ">=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev" - } - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/type-of": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/type-of/-/type-of-2.0.1.tgz", - "integrity": "sha512-39wxbwHdQ2sTiBB8wAzKfQ9GN+om8w+sjNWzr+vZJR5AMD5J+J7Yc8AtXnU9r/r2c8XiDZ/smxutDmZehX/qpQ==" - }, - "node_modules/typed-array-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", - "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" - }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/ua-parser-js": { - "version": "1.0.37", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.37.tgz", - "integrity": "sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/ua-parser-js" - }, - { - "type": "paypal", - "url": "https://paypal.me/faisalman" - }, - { - "type": "github", - "url": "https://github.com/sponsors/faisalman" - } - ], - "engines": { - "node": "*" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/underscore.string": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.6.tgz", - "integrity": "sha512-VoC83HWXmCrF6rgkyxS9GHv8W9Q5nhMKho+OadDJGzL2oDYbYEppBaCMH6pFlwLeqj2QS+hhkw2kpXkSdD1JxQ==", - "dependencies": { - "sprintf-js": "^1.1.1", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": "*" - } - }, - "node_modules/unherit": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz", - "integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==", - "dependencies": { - "inherits": "^2.0.0", - "xtend": "^4.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", - "engines": { - "node": ">=4" - } - }, - "node_modules/unified": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", - "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", - "dependencies": { - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unified/node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "dependencies": { - "crypto-random-string": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/unist-builder": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz", - "integrity": "sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-find-after": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-2.0.4.tgz", - "integrity": "sha512-zo0ShIr+E/aU9xSK7JC9Kb+WP9seTFCuqVYdo5+HJSjN009XMfhiA1FIExEKzdDP1UsgvKGleGlB/pSdTSqZww==", - "dependencies": { - "unist-util-is": "^3.0.0" - } - }, - "node_modules/unist-util-find-after/node_modules/unist-util-is": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", - "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==" - }, - "node_modules/unist-util-generated": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz", - "integrity": "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-is": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", - "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-map": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/unist-util-map/-/unist-util-map-1.0.5.tgz", - "integrity": "sha512-dFil/AN6vqhnQWNCZk0GF/G3+Q5YwsB+PqjnzvpO2wzdRtUJ1E8PN+XRE/PRr/G3FzKjRTJU0haqE0Ekl+O3Ag==", - "dependencies": { - "object-assign": "^4.0.1" - } - }, - "node_modules/unist-util-modify-children": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-2.0.0.tgz", - "integrity": "sha512-HGrj7JQo9DwZt8XFsX8UD4gGqOsIlCih9opG6Y+N11XqkBGKzHo8cvDi+MfQQgiZ7zXRUiQREYHhjOBHERTMdg==", - "dependencies": { - "array-iterate": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-position": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz", - "integrity": "sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-remove": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-1.0.3.tgz", - "integrity": "sha512-mB6nCHCQK0pQffUAcCVmKgIWzG/AXs/V8qpS8K72tMPtOSCMSjDeMc5yN+Ye8rB0FhcE+JvW++o1xRNc0R+++g==", - "dependencies": { - "unist-util-is": "^3.0.0" - } - }, - "node_modules/unist-util-remove-position": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-3.0.0.tgz", - "integrity": "sha512-17kIOuolVuK16LMb9KyMJlqdfCtlfQY5FjY3Sdo9iC7F5wqdXhNjMq0PBvMpkVNNnAmHxXssUW+rZ9T2zbP0Rg==", - "dependencies": { - "unist-util-visit": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-remove/node_modules/unist-util-is": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", - "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==" - }, - "node_modules/unist-util-select": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/unist-util-select/-/unist-util-select-3.0.4.tgz", - "integrity": "sha512-xf1zCu4okgPqGLdhCDpRnjwBNyv3EqjiXRUbz2SdK1+qnLMB7uXXajfzuBvvbHoQ+JLyp4AEbFCGndmc6S72sw==", - "dependencies": { - "css-selector-parser": "^1.0.0", - "not": "^0.1.0", - "nth-check": "^2.0.0", - "unist-util-is": "^4.0.0", - "zwitch": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-stringify-position": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", - "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", - "dependencies": { - "@types/unist": "^2.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", - "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0", - "unist-util-visit-parents": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit-children": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/unist-util-visit-children/-/unist-util-visit-children-1.1.4.tgz", - "integrity": "sha512-sA/nXwYRCQVRwZU2/tQWUqJ9JSFM1X3x7JIOsIgSzrFHcfVt6NkzDtKzyxg2cZWkCwGF9CO8x4QNZRJRMK8FeQ==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit-parents": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", - "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/unixify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unixify/-/unixify-1.0.0.tgz", - "integrity": "sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg==", - "dependencies": { - "normalize-path": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unixify/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==" - }, - "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/update-notifier": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", - "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", - "dependencies": { - "boxen": "^5.0.0", - "chalk": "^4.1.0", - "configstore": "^5.0.1", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.4.0", - "is-npm": "^5.0.0", - "is-yarn-global": "^0.3.0", - "latest-version": "^5.1.0", - "pupa": "^2.1.1", - "semver": "^7.3.4", - "semver-diff": "^3.1.1", - "xdg-basedir": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/yeoman/update-notifier?sponsor=1" - } - }, - "node_modules/update-notifier/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/update-notifier/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/update-notifier/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/update-notifier/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/update-notifier/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/update-notifier/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/update-notifier/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/update-notifier/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/update-notifier/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/upper-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", - "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/upper-case-first": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", - "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/url": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.3.tgz", - "integrity": "sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==", - "dependencies": { - "punycode": "^1.4.1", - "qs": "^6.11.2" - } - }, - "node_modules/url-loader": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", - "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", - "dependencies": { - "loader-utils": "^2.0.0", - "mime-types": "^2.1.27", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "file-loader": "*", - "webpack": "^4.0.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "file-loader": { - "optional": true - } - } - }, - "node_modules/url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", - "dependencies": { - "prepend-http": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/url/node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" - }, - "node_modules/util": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", - "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", - "dependencies": { - "inherits": "2.0.3" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/util.promisify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/util/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" - }, - "node_modules/utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==" - }, - "node_modules/utility-types": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz", - "integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/v8-compile-cache": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", - "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==" - }, - "node_modules/valid-url": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz", - "integrity": "sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA==" - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/value-or-promise": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.12.tgz", - "integrity": "sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q==", - "engines": { - "node": ">=12" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/vfile": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", - "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", - "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^2.0.0", - "vfile-message": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-location": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz", - "integrity": "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-message": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", - "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/weak-lru-cache": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz", - "integrity": "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==" - }, - "node_modules/web-namespaces": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz", - "integrity": "sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/web-vitals": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-1.1.2.tgz", - "integrity": "sha512-PFMKIY+bRSXlMxVAQ+m2aw9c/ioUYfDgrYot0YUa+/xa0sakubWhSDyxAKwzymvXVdF4CZI71g06W+mqhzu6ig==" - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/webpack": { - "version": "5.89.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz", - "integrity": "sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==", - "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^1.0.0", - "@webassemblyjs/ast": "^1.11.5", - "@webassemblyjs/wasm-edit": "^1.11.5", - "@webassemblyjs/wasm-parser": "^1.11.5", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.9.0", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.15.0", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.7", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-bundle-analyzer": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.1.tgz", - "integrity": "sha512-s3P7pgexgT/HTUSYgxJyn28A+99mmLq4HsJepMPzu0R8ImJc52QNqaFYW1Z2z2uIb1/J3eYgaAWVpaC+v/1aAQ==", - "dev": true, - "dependencies": { - "@discoveryjs/json-ext": "0.5.7", - "acorn": "^8.0.4", - "acorn-walk": "^8.0.0", - "commander": "^7.2.0", - "debounce": "^1.2.1", - "escape-string-regexp": "^4.0.0", - "gzip-size": "^6.0.0", - "html-escaper": "^2.0.2", - "is-plain-object": "^5.0.0", - "opener": "^1.5.2", - "picocolors": "^1.0.0", - "sirv": "^2.0.3", - "ws": "^7.3.1" - }, - "bin": { - "webpack-bundle-analyzer": "lib/bin/analyzer.js" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/acorn": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/webpack-dev-middleware": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-4.3.0.tgz", - "integrity": "sha512-PjwyVY95/bhBh6VUqt6z4THplYcsvQ8YNNBTBM873xLVmw8FLeALn0qurHbs9EmcfhzQis/eoqypSnZeuUz26w==", - "dependencies": { - "colorette": "^1.2.2", - "mem": "^8.1.1", - "memfs": "^3.2.2", - "mime-types": "^2.1.30", - "range-parser": "^1.2.1", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= v10.23.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/webpack-merge": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", - "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", - "dependencies": { - "clone-deep": "^4.0.1", - "flat": "^5.0.2", - "wildcard": "^2.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dependencies": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, - "node_modules/webpack-sources/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-stats-plugin": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/webpack-stats-plugin/-/webpack-stats-plugin-1.1.3.tgz", - "integrity": "sha512-yUKYyy+e0iF/w31QdfioRKY+h3jDBRpthexBOWGKda99iu2l/wxYsI/XqdlP5IU58/0KB9CsJZgWNAl+/MPkRw==" - }, - "node_modules/webpack-virtual-modules": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.3.2.tgz", - "integrity": "sha512-RXQXioY6MhzM4CNQwmBwKXYgBs6ulaiQ8bkNQEl2J6Z+V+s7lgl/wGvaI/I0dLnYKB8cKsxQc17QOAVIphPLDw==", - "dependencies": { - "debug": "^3.0.0" - } - }, - "node_modules/webpack-virtual-modules/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/webpack/node_modules/acorn": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/webpack/node_modules/acorn-import-assertions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", - "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/webpack/node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", - "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", - "dependencies": { - "function.prototype.name": "^1.1.5", - "has-tostringtag": "^1.0.0", - "is-async-function": "^2.0.0", - "is-date-object": "^1.0.5", - "is-finalizationregistry": "^1.0.2", - "is-generator-function": "^1.0.10", - "is-regex": "^1.1.4", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" - }, - "node_modules/which-collection": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", - "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", - "dependencies": { - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-weakmap": "^2.0.1", - "is-weakset": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-module": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", - "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==" - }, - "node_modules/which-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", - "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.4", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "dependencies": { - "string-width": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wildcard": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", - "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==" - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/write": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/write/-/write-2.0.0.tgz", - "integrity": "sha512-yam9TAqN8sAZokECAejo9HpT2j2s39OgK8i8yxadrFBVo+iSWLfnipRVFulfAw1d2dz5vSuGmlMHYRKG4fysOA==", - "dependencies": { - "add-filename-increment": "^1.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "node_modules/ws": { - "version": "8.14.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", - "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/x-is-string": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/x-is-string/-/x-is-string-0.1.0.tgz", - "integrity": "sha512-GojqklwG8gpzOVEVki5KudKNoq7MbbjYZCbyWzEz7tyPA7eleiE0+ePwOWQQRb5fm86rD3S8Tc0tSFf3AOv50w==" - }, - "node_modules/xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/xmlhttprequest-ssl": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz", - "integrity": "sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/xss": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.14.tgz", - "integrity": "sha512-og7TEJhXvn1a7kzZGQ7ETjdQVS2UfZyTlsEdDOqvQF7GoxNfY+0YLCzBy1kPdsDDx4QuNAonQPddpsn6Xl/7sw==", - "dependencies": { - "commander": "^2.20.3", - "cssfilter": "0.0.10" - }, - "bin": { - "xss": "bin/xss" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/xss/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, - "node_modules/xstate": { - "version": "4.32.1", - "resolved": "https://registry.npmjs.org/xstate/-/xstate-4.32.1.tgz", - "integrity": "sha512-QYUd+3GkXZ8i6qdixnOn28bL3EvA++LONYL/EMWwKlFSh/hiLndJ8YTnz77FDs+JUXcwU7NZJg7qoezoRHc4GQ==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/xstate" - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "engines": { - "node": ">=0.4" - } - }, - "node_modules/xxhash-wasm": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-0.4.2.tgz", - "integrity": "sha512-/eyHVRJQCirEkSZ1agRSCwriMhwlyUcFkXD5TPVSLP+IPzjsqMVzZwdoczLp1SoQU0R3dxz1RpIK+4YNQbCVOA==" - }, - "node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - }, - "node_modules/yaml": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", - "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", - "dev": true, - "engines": { - "node": ">= 14" - } - }, - "node_modules/yaml-loader": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/yaml-loader/-/yaml-loader-0.6.0.tgz", - "integrity": "sha512-1bNiLelumURyj+zvVHOv8Y3dpCri0F2S+DCcmps0pA1zWRLjS+FhZQg4o3aUUDYESh73+pKZNI18bj7stpReow==", - "dependencies": { - "loader-utils": "^1.4.0", - "yaml": "^1.8.3" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/yaml-loader/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/yaml-loader/node_modules/loader-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", - "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/yaml-loader/node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs-parser/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yargs/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "dev": true, - "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, - "node_modules/yeast": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "integrity": "sha512-8HFIh676uyGYP6wP13R/j6OJ/1HwJ46snpvzE7aHAN3Ryqh2yX6Xox2B4CUmTwwOIzlG3Bs7ocsP5dZH/R1Qbg==" - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yoga-layout-prebuilt": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/yoga-layout-prebuilt/-/yoga-layout-prebuilt-1.10.0.tgz", - "integrity": "sha512-YnOmtSbv4MTf7RGJMK0FvZ+KD8OEe/J5BNnR0GHhD8J/XcG/Qvxgszm0Un6FTHWW4uHlTgP0IztiXQnGyIR45g==", - "dependencies": { - "@types/yoga-layout": "1.9.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yurnalist": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/yurnalist/-/yurnalist-2.1.0.tgz", - "integrity": "sha512-PgrBqosQLM3gN2xBFIMDLACRTV9c365VqityKKpSTWpwR+U4LAFR3rSVyEoscWlu3EzX9+Y0I86GXUKxpHFl6w==", - "dependencies": { - "chalk": "^2.4.2", - "inquirer": "^7.0.0", - "is-ci": "^2.0.0", - "read": "^1.0.7", - "strip-ansi": "^5.2.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/yurnalist/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "engines": { - "node": ">=6" - } - }, - "node_modules/yurnalist/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/zwitch": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", - "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - } - }, - "dependencies": { - "@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==" - }, - "@algolia/cache-browser-local-storage": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.14.2.tgz", - "integrity": "sha512-FRweBkK/ywO+GKYfAWbrepewQsPTIEirhi1BdykX9mxvBPtGNKccYAxvGdDCumU1jL4r3cayio4psfzKMejBlA==", - "requires": { - "@algolia/cache-common": "4.14.2" - } - }, - "@algolia/cache-common": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.14.2.tgz", - "integrity": "sha512-SbvAlG9VqNanCErr44q6lEKD2qoK4XtFNx9Qn8FK26ePCI8I9yU7pYB+eM/cZdS9SzQCRJBbHUumVr4bsQ4uxg==" - }, - "@algolia/cache-in-memory": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.14.2.tgz", - "integrity": "sha512-HrOukWoop9XB/VFojPv1R5SVXowgI56T9pmezd/djh2JnVN/vXswhXV51RKy4nCpqxyHt/aGFSq2qkDvj6KiuQ==", - "requires": { - "@algolia/cache-common": "4.14.2" - } - }, - "@algolia/client-account": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.14.2.tgz", - "integrity": "sha512-WHtriQqGyibbb/Rx71YY43T0cXqyelEU0lB2QMBRXvD2X0iyeGl4qMxocgEIcbHyK7uqE7hKgjT8aBrHqhgc1w==", - "requires": { - "@algolia/client-common": "4.14.2", - "@algolia/client-search": "4.14.2", - "@algolia/transporter": "4.14.2" - } - }, - "@algolia/client-analytics": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.14.2.tgz", - "integrity": "sha512-yBvBv2mw+HX5a+aeR0dkvUbFZsiC4FKSnfqk9rrfX+QrlNOKEhCG0tJzjiOggRW4EcNqRmaTULIYvIzQVL2KYQ==", - "requires": { - "@algolia/client-common": "4.14.2", - "@algolia/client-search": "4.14.2", - "@algolia/requester-common": "4.14.2", - "@algolia/transporter": "4.14.2" - } - }, - "@algolia/client-common": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.14.2.tgz", - "integrity": "sha512-43o4fslNLcktgtDMVaT5XwlzsDPzlqvqesRi4MjQz2x4/Sxm7zYg5LRYFol1BIhG6EwxKvSUq8HcC/KxJu3J0Q==", - "requires": { - "@algolia/requester-common": "4.14.2", - "@algolia/transporter": "4.14.2" - } - }, - "@algolia/client-personalization": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.14.2.tgz", - "integrity": "sha512-ACCoLi0cL8CBZ1W/2juehSltrw2iqsQBnfiu/Rbl9W2yE6o2ZUb97+sqN/jBqYNQBS+o0ekTMKNkQjHHAcEXNw==", - "requires": { - "@algolia/client-common": "4.14.2", - "@algolia/requester-common": "4.14.2", - "@algolia/transporter": "4.14.2" - } - }, - "@algolia/client-search": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.14.2.tgz", - "integrity": "sha512-L5zScdOmcZ6NGiVbLKTvP02UbxZ0njd5Vq9nJAmPFtjffUSOGEp11BmD2oMJ5QvARgx2XbX4KzTTNS5ECYIMWw==", - "requires": { - "@algolia/client-common": "4.14.2", - "@algolia/requester-common": "4.14.2", - "@algolia/transporter": "4.14.2" - } - }, - "@algolia/events": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@algolia/events/-/events-4.0.1.tgz", - "integrity": "sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==" - }, - "@algolia/logger-common": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.14.2.tgz", - "integrity": "sha512-/JGlYvdV++IcMHBnVFsqEisTiOeEr6cUJtpjz8zc0A9c31JrtLm318Njc72p14Pnkw3A/5lHHh+QxpJ6WFTmsA==" - }, - "@algolia/logger-console": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.14.2.tgz", - "integrity": "sha512-8S2PlpdshbkwlLCSAB5f8c91xyc84VM9Ar9EdfE9UmX+NrKNYnWR1maXXVDQQoto07G1Ol/tYFnFVhUZq0xV/g==", - "requires": { - "@algolia/logger-common": "4.14.2" - } - }, - "@algolia/requester-browser-xhr": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.14.2.tgz", - "integrity": "sha512-CEh//xYz/WfxHFh7pcMjQNWgpl4wFB85lUMRyVwaDPibNzQRVcV33YS+63fShFWc2+42YEipFGH2iPzlpszmDw==", - "requires": { - "@algolia/requester-common": "4.14.2" - } - }, - "@algolia/requester-common": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.14.2.tgz", - "integrity": "sha512-73YQsBOKa5fvVV3My7iZHu1sUqmjjfs9TteFWwPwDmnad7T0VTCopttcsM3OjLxZFtBnX61Xxl2T2gmG2O4ehg==" - }, - "@algolia/requester-node-http": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.14.2.tgz", - "integrity": "sha512-oDbb02kd1o5GTEld4pETlPZLY0e+gOSWjWMJHWTgDXbv9rm/o2cF7japO6Vj1ENnrqWvLBmW1OzV9g6FUFhFXg==", - "requires": { - "@algolia/requester-common": "4.14.2" - } - }, - "@algolia/transporter": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.14.2.tgz", - "integrity": "sha512-t89dfQb2T9MFQHidjHcfhh6iGMNwvuKUvojAj+JsrHAGbuSy7yE4BylhLX6R0Q1xYRoC4Vvv+O5qIw/LdnQfsQ==", - "requires": { - "@algolia/cache-common": "4.14.2", - "@algolia/logger-common": "4.14.2", - "@algolia/requester-common": "4.14.2" - } - }, - "@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@ardatan/relay-compiler": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@ardatan/relay-compiler/-/relay-compiler-12.0.0.tgz", - "integrity": "sha512-9anThAaj1dQr6IGmzBMcfzOQKTa5artjuPmw8NYK/fiGEMjADbSguBY2FMDykt+QhilR3wc9VA/3yVju7JHg7Q==", - "requires": { - "@babel/core": "^7.14.0", - "@babel/generator": "^7.14.0", - "@babel/parser": "^7.14.0", - "@babel/runtime": "^7.0.0", - "@babel/traverse": "^7.14.0", - "@babel/types": "^7.0.0", - "babel-preset-fbjs": "^3.4.0", - "chalk": "^4.0.0", - "fb-watchman": "^2.0.0", - "fbjs": "^3.0.0", - "glob": "^7.1.1", - "immutable": "~3.7.6", - "invariant": "^2.2.4", - "nullthrows": "^1.1.1", - "relay-runtime": "12.0.0", - "signedsource": "^1.0.0", - "yargs": "^15.3.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@babel/code-frame": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.4.tgz", - "integrity": "sha512-r1IONyb6Ia+jYR2vvIDhdWdlTGhqbBoFqLTQidzZ4kepUFH15ejXvFHxCVbtl7BOXIudsIubf4E81xeA3h3IXA==", - "requires": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" - } - }, - "@babel/compat-data": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.3.tgz", - "integrity": "sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ==" - }, - "@babel/core": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.3.tgz", - "integrity": "sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==", - "requires": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.3", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.2", - "@babel/parser": "^7.23.3", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.3", - "@babel/types": "^7.23.3", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - } - }, - "@babel/eslint-parser": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.23.3.tgz", - "integrity": "sha512-9bTuNlyx7oSstodm1cR1bECj4fkiknsDa1YniISkJemMY3DGhJNYBECbe6QD/q54mp2J8VO66jW3/7uP//iFCw==", - "requires": { - "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", - "eslint-visitor-keys": "^2.1.0", - "semver": "^6.3.1" - } - }, - "@babel/generator": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.4.tgz", - "integrity": "sha512-esuS49Cga3HcThFNebGhlgsrVLkvhqvYDTzgjfFFlHJcIfLe5jFmRRfCQ1KuBfc4Jrtn3ndLgKWAKjBE+IraYQ==", - "requires": { - "@babel/types": "^7.23.4", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", - "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", - "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", - "requires": { - "@babel/types": "^7.22.15" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", - "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", - "requires": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", - "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.15", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "semver": "^6.3.1" - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", - "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "regexpu-core": "^5.3.1", - "semver": "^6.3.1" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==" - }, - "regenerate-unicode-properties": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", - "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", - "requires": { - "regenerate": "^1.4.2" - } - }, - "regexpu-core": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", - "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", - "requires": { - "@babel/regjsgen": "^0.8.0", - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsparser": "^0.9.1", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" - } - }, - "regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", - "requires": { - "jsesc": "~0.5.0" - } - } - } - }, - "@babel/helper-define-polyfill-provider": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz", - "integrity": "sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==", - "requires": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" - } - }, - "@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==" - }, - "@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "requires": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", - "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", - "requires": { - "@babel/types": "^7.23.0" - } - }, - "@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", - "requires": { - "@babel/types": "^7.22.15" - } - }, - "@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", - "requires": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", - "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==" - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", - "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-wrap-function": "^7.22.20" - } - }, - "@babel/helper-replace-supers": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", - "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", - "requires": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-member-expression-to-functions": "^7.22.15", - "@babel/helper-optimise-call-expression": "^7.22.5" - } - }, - "@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", - "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==" - }, - "@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==" - }, - "@babel/helper-validator-option": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", - "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==" - }, - "@babel/helper-wrap-function": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", - "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", - "requires": { - "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.15", - "@babel/types": "^7.22.19" - } - }, - "@babel/helpers": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.4.tgz", - "integrity": "sha512-HfcMizYz10cr3h29VqyfGL6ZWIjTwWfvYBMsBVGwpcbhNGe3wQ1ZXZRPzZoAHhd9OqHadHqjQ89iVKINXnbzuw==", - "requires": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.4", - "@babel/types": "^7.23.4" - } - }, - "@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", - "requires": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.4.tgz", - "integrity": "sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ==" - }, - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz", - "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", - "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.23.3" - } - }, - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.3.tgz", - "integrity": "sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==", - "requires": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", - "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", - "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", - "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", - "requires": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.20.7" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", - "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", - "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - } - }, - "@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", - "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", - "requires": {} - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-flow": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.23.3.tgz", - "integrity": "sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-syntax-import-assertions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", - "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-syntax-import-attributes": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", - "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-jsx": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", - "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-typescript": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", - "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-syntax-unicode-sets-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", - "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", - "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-async-generator-functions": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.4.tgz", - "integrity": "sha512-efdkfPhHYTtn0G6n2ddrESE91fgXxjlqLsnUtPWnJs4a4mZIbUaK7ffqKIIUKXSHwcDvaCVX6GXkaJJFqtX7jw==", - "requires": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.20", - "@babel/plugin-syntax-async-generators": "^7.8.4" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", - "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", - "requires": { - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.20" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", - "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", - "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-class-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", - "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-class-static-block": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", - "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.3.tgz", - "integrity": "sha512-FGEQmugvAEu2QtgtU0uTASXevfLMFfBeVCIIdcQhn/uBQsMTjBajdnAtanQlOcuihWh10PZ7+HWvc7NtBwP74w==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20", - "@babel/helper-split-export-declaration": "^7.22.6", - "globals": "^11.1.0" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", - "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/template": "^7.22.15" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", - "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", - "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", - "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-dynamic-import": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", - "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", - "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-export-namespace-from": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", - "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-transform-flow-strip-types": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.23.3.tgz", - "integrity": "sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-flow": "^7.23.3" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.3.tgz", - "integrity": "sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", - "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", - "requires": { - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-json-strings": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", - "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-json-strings": "^7.8.3" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", - "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-logical-assignment-operators": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", - "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", - "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", - "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", - "requires": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", - "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", - "requires": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz", - "integrity": "sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==", - "requires": { - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", - "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", - "requires": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", - "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", - "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", - "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - } - }, - "@babel/plugin-transform-numeric-separator": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", - "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-transform-object-rest-spread": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz", - "integrity": "sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==", - "requires": { - "@babel/compat-data": "^7.23.3", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.23.3" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", - "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20" - } - }, - "@babel/plugin-transform-optional-catch-binding": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", - "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - } - }, - "@babel/plugin-transform-optional-chaining": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", - "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", - "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-private-methods": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", - "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-private-property-in-object": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", - "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - } - }, - "@babel/plugin-transform-property-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", - "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-react-display-name": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz", - "integrity": "sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-react-jsx": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz", - "integrity": "sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-jsx": "^7.23.3", - "@babel/types": "^7.23.4" - }, - "dependencies": { - "@babel/plugin-syntax-jsx": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", - "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - } - } - }, - "@babel/plugin-transform-react-jsx-development": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz", - "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==", - "requires": { - "@babel/plugin-transform-react-jsx": "^7.22.5" - } - }, - "@babel/plugin-transform-react-pure-annotations": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz", - "integrity": "sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", - "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "regenerator-transform": "^0.15.2" - } - }, - "@babel/plugin-transform-reserved-words": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", - "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-runtime": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.4.tgz", - "integrity": "sha512-ITwqpb6V4btwUG0YJR82o2QvmWrLgDnx/p2A3CTPYGaRgULkDiC0DRA2C4jlRB9uXGUEfaSS/IGHfVW+ohzYDw==", - "requires": { - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "babel-plugin-polyfill-corejs2": "^0.4.6", - "babel-plugin-polyfill-corejs3": "^0.8.5", - "babel-plugin-polyfill-regenerator": "^0.5.3", - "semver": "^6.3.1" - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", - "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", - "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", - "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", - "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", - "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-typescript": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.4.tgz", - "integrity": "sha512-39hCCOl+YUAyMOu6B9SmUTiHUU0t/CxJNUmY3qRdJujbqi+lrQcL11ysYUsAvFWPBdhihrv1z0oRG84Yr3dODQ==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-typescript": "^7.23.3" - } - }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", - "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-unicode-property-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", - "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", - "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-unicode-sets-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", - "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/preset-env": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.3.tgz", - "integrity": "sha512-ovzGc2uuyNfNAs/jyjIGxS8arOHS5FENZaNn4rtE7UdKMMkqHCvboHfcuhWLZNX5cB44QfcGNWjaevxMzzMf+Q==", - "requires": { - "@babel/compat-data": "^7.23.3", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.3", - "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.23.3", - "@babel/plugin-syntax-import-attributes": "^7.23.3", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.23.3", - "@babel/plugin-transform-async-generator-functions": "^7.23.3", - "@babel/plugin-transform-async-to-generator": "^7.23.3", - "@babel/plugin-transform-block-scoped-functions": "^7.23.3", - "@babel/plugin-transform-block-scoping": "^7.23.3", - "@babel/plugin-transform-class-properties": "^7.23.3", - "@babel/plugin-transform-class-static-block": "^7.23.3", - "@babel/plugin-transform-classes": "^7.23.3", - "@babel/plugin-transform-computed-properties": "^7.23.3", - "@babel/plugin-transform-destructuring": "^7.23.3", - "@babel/plugin-transform-dotall-regex": "^7.23.3", - "@babel/plugin-transform-duplicate-keys": "^7.23.3", - "@babel/plugin-transform-dynamic-import": "^7.23.3", - "@babel/plugin-transform-exponentiation-operator": "^7.23.3", - "@babel/plugin-transform-export-namespace-from": "^7.23.3", - "@babel/plugin-transform-for-of": "^7.23.3", - "@babel/plugin-transform-function-name": "^7.23.3", - "@babel/plugin-transform-json-strings": "^7.23.3", - "@babel/plugin-transform-literals": "^7.23.3", - "@babel/plugin-transform-logical-assignment-operators": "^7.23.3", - "@babel/plugin-transform-member-expression-literals": "^7.23.3", - "@babel/plugin-transform-modules-amd": "^7.23.3", - "@babel/plugin-transform-modules-commonjs": "^7.23.3", - "@babel/plugin-transform-modules-systemjs": "^7.23.3", - "@babel/plugin-transform-modules-umd": "^7.23.3", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.23.3", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.3", - "@babel/plugin-transform-numeric-separator": "^7.23.3", - "@babel/plugin-transform-object-rest-spread": "^7.23.3", - "@babel/plugin-transform-object-super": "^7.23.3", - "@babel/plugin-transform-optional-catch-binding": "^7.23.3", - "@babel/plugin-transform-optional-chaining": "^7.23.3", - "@babel/plugin-transform-parameters": "^7.23.3", - "@babel/plugin-transform-private-methods": "^7.23.3", - "@babel/plugin-transform-private-property-in-object": "^7.23.3", - "@babel/plugin-transform-property-literals": "^7.23.3", - "@babel/plugin-transform-regenerator": "^7.23.3", - "@babel/plugin-transform-reserved-words": "^7.23.3", - "@babel/plugin-transform-shorthand-properties": "^7.23.3", - "@babel/plugin-transform-spread": "^7.23.3", - "@babel/plugin-transform-sticky-regex": "^7.23.3", - "@babel/plugin-transform-template-literals": "^7.23.3", - "@babel/plugin-transform-typeof-symbol": "^7.23.3", - "@babel/plugin-transform-unicode-escapes": "^7.23.3", - "@babel/plugin-transform-unicode-property-regex": "^7.23.3", - "@babel/plugin-transform-unicode-regex": "^7.23.3", - "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", - "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.6", - "babel-plugin-polyfill-corejs3": "^0.8.5", - "babel-plugin-polyfill-regenerator": "^0.5.3", - "core-js-compat": "^3.31.0", - "semver": "^6.3.1" - } - }, - "@babel/preset-modules": { - "version": "0.1.6-no-external-plugins", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", - "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - } - }, - "@babel/preset-react": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.23.3.tgz", - "integrity": "sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", - "@babel/plugin-transform-react-display-name": "^7.23.3", - "@babel/plugin-transform-react-jsx": "^7.22.15", - "@babel/plugin-transform-react-jsx-development": "^7.22.5", - "@babel/plugin-transform-react-pure-annotations": "^7.23.3" - } - }, - "@babel/preset-typescript": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz", - "integrity": "sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", - "@babel/plugin-syntax-jsx": "^7.23.3", - "@babel/plugin-transform-modules-commonjs": "^7.23.3", - "@babel/plugin-transform-typescript": "^7.23.3" - }, - "dependencies": { - "@babel/plugin-syntax-jsx": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", - "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - } - } - }, - "@babel/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" - }, - "@babel/runtime": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.4.tgz", - "integrity": "sha512-2Yv65nlWnWlSpe3fXEyX5i7fx5kIKo4Qbcj+hMO0odwaneFjfXw5fdum+4yL20O0QiaHpia0cYQ9xpNMqrBwHg==", - "requires": { - "regenerator-runtime": "^0.14.0" - } - }, - "@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "requires": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" - } - }, - "@babel/traverse": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.4.tgz", - "integrity": "sha512-IYM8wSUwunWTB6tFC2dkKZhxbIjHoWemdK+3f8/wq8aKhbUscxD5MX72ubd90fxvFknaLPeGw5ycU84V1obHJg==", - "requires": { - "@babel/code-frame": "^7.23.4", - "@babel/generator": "^7.23.4", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.4", - "@babel/types": "^7.23.4", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.4.tgz", - "integrity": "sha512-7uIFwVYpoplT5jp/kVv6EF93VaJ8H+Yn5IczYiaAi98ajzjfoZfslet/e0sLh+wVBjb2qqIut1b0S26VSafsSQ==", - "requires": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - } - }, - "@builder.io/partytown": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/@builder.io/partytown/-/partytown-0.5.4.tgz", - "integrity": "sha512-qnikpQgi30AS01aFlNQV6l8/qdZIcP76mp90ti+u4rucXHsn4afSKivQXApqxvrQG9+Ibv45STyvHizvxef/7A==" - }, - "@discoveryjs/json-ext": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", - "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", - "dev": true - }, - "@emotion/babel-plugin": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", - "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==", - "requires": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/runtime": "^7.18.3", - "@emotion/hash": "^0.9.1", - "@emotion/memoize": "^0.8.1", - "@emotion/serialize": "^1.1.2", - "babel-plugin-macros": "^3.1.0", - "convert-source-map": "^1.5.0", - "escape-string-regexp": "^4.0.0", - "find-root": "^1.1.0", - "source-map": "^0.5.7", - "stylis": "4.2.0" - }, - "dependencies": { - "convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" - } - } - }, - "@emotion/cache": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", - "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", - "requires": { - "@emotion/memoize": "^0.8.1", - "@emotion/sheet": "^1.2.2", - "@emotion/utils": "^1.2.1", - "@emotion/weak-memoize": "^0.3.1", - "stylis": "4.2.0" - } - }, - "@emotion/hash": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", - "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" - }, - "@emotion/is-prop-valid": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz", - "integrity": "sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==", - "requires": { - "@emotion/memoize": "^0.8.1" - } - }, - "@emotion/memoize": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", - "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" - }, - "@emotion/react": { - "version": "11.11.1", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.1.tgz", - "integrity": "sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==", - "requires": { - "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.11.0", - "@emotion/cache": "^11.11.0", - "@emotion/serialize": "^1.1.2", - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", - "@emotion/utils": "^1.2.1", - "@emotion/weak-memoize": "^0.3.1", - "hoist-non-react-statics": "^3.3.1" - } - }, - "@emotion/serialize": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.2.tgz", - "integrity": "sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==", - "requires": { - "@emotion/hash": "^0.9.1", - "@emotion/memoize": "^0.8.1", - "@emotion/unitless": "^0.8.1", - "@emotion/utils": "^1.2.1", - "csstype": "^3.0.2" - } - }, - "@emotion/sheet": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", - "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" - }, - "@emotion/stylis": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", - "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==" - }, - "@emotion/unitless": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", - "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==" - }, - "@emotion/use-insertion-effect-with-fallbacks": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", - "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", - "requires": {} - }, - "@emotion/utils": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", - "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==" - }, - "@emotion/weak-memoize": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", - "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" - }, - "@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", - "requires": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", - "requires": { - "type-fest": "^0.20.2" - } - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" - } - } - }, - "@formatjs/ecma402-abstract": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.18.2.tgz", - "integrity": "sha512-+QoPW4csYALsQIl8GbN14igZzDbuwzcpWrku9nyMXlaqAlwRBgl5V+p0vWMGFqHOw37czNXaP/lEk4wbLgcmtA==", - "requires": { - "@formatjs/intl-localematcher": "0.5.4", - "tslib": "^2.4.0" - } - }, - "@formatjs/fast-memoize": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.0.tgz", - "integrity": "sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==", - "requires": { - "tslib": "^2.4.0" - } - }, - "@formatjs/icu-messageformat-parser": { - "version": "2.7.6", - "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.6.tgz", - "integrity": "sha512-etVau26po9+eewJKYoiBKP6743I1br0/Ie00Pb/S/PtmYfmjTcOn2YCh2yNkSZI12h6Rg+BOgQYborXk46BvkA==", - "requires": { - "@formatjs/ecma402-abstract": "1.18.2", - "@formatjs/icu-skeleton-parser": "1.8.0", - "tslib": "^2.4.0" - } - }, - "@formatjs/icu-skeleton-parser": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.0.tgz", - "integrity": "sha512-QWLAYvM0n8hv7Nq5BEs4LKIjevpVpbGLAJgOaYzg9wABEoX1j0JO1q2/jVkO6CVlq0dbsxZCngS5aXbysYueqA==", - "requires": { - "@formatjs/ecma402-abstract": "1.18.2", - "tslib": "^2.4.0" - } - }, - "@formatjs/intl-localematcher": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.4.tgz", - "integrity": "sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==", - "requires": { - "tslib": "^2.4.0" - } - }, - "@gatsbyjs/parcel-namer-relative-to-cwd": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@gatsbyjs/parcel-namer-relative-to-cwd/-/parcel-namer-relative-to-cwd-1.7.0.tgz", - "integrity": "sha512-KifWxXYcLrXFHvM9Ug77BlyoQ3TLOB3lh4izNHFVuST/NEr5fKpn/IZRqEXhNEYaESjE6C1gDA42Vvhi58pnRQ==", - "requires": { - "@babel/runtime": "^7.18.0", - "@parcel/namer-default": "2.6.2", - "@parcel/plugin": "2.6.2", - "gatsby-core-utils": "^3.22.0" - } - }, - "@gatsbyjs/potrace": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@gatsbyjs/potrace/-/potrace-2.3.0.tgz", - "integrity": "sha512-72szhSY/4tPiPPOzq15CG6LW0s9FuWQ86gkLSUvBNoF0s+jsEdRaZmATYNjiY2Skg//EuyPLEqUQnXKXME0szg==", - "requires": { - "jimp-compact": "^0.16.1-2" - } - }, - "@gatsbyjs/reach-router": { - "version": "1.3.9", - "resolved": "https://registry.npmjs.org/@gatsbyjs/reach-router/-/reach-router-1.3.9.tgz", - "integrity": "sha512-/354IaUSM54xb7K/TxpLBJB94iEAJ3P82JD38T8bLnIDWF+uw8+W/82DKnQ7y24FJcKxtVmG43aiDLG88KSuYQ==", - "requires": { - "invariant": "^2.2.3", - "prop-types": "^15.6.1", - "react-lifecycles-compat": "^3.0.4" - } - }, - "@gatsbyjs/webpack-hot-middleware": { - "version": "2.25.3", - "resolved": "https://registry.npmjs.org/@gatsbyjs/webpack-hot-middleware/-/webpack-hot-middleware-2.25.3.tgz", - "integrity": "sha512-ul17OZ8Dlw+ATRbnuU+kwxuAlq9lKbYz/2uBS1FLCdgoPTF1H2heP7HbUbgfMZbfRQNcCG2rMscMnr32ritCDw==", - "requires": { - "ansi-html-community": "0.0.8", - "html-entities": "^2.3.3", - "strip-ansi": "^6.0.0" - } - }, - "@graphql-codegen/add": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@graphql-codegen/add/-/add-3.2.3.tgz", - "integrity": "sha512-sQOnWpMko4JLeykwyjFTxnhqjd/3NOG2OyMuvK76Wnnwh8DRrNf2VEs2kmSvLl7MndMlOj7Kh5U154dVcvhmKQ==", - "requires": { - "@graphql-codegen/plugin-helpers": "^3.1.1", - "tslib": "~2.4.0" - }, - "dependencies": { - "@graphql-codegen/plugin-helpers": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-3.1.2.tgz", - "integrity": "sha512-emOQiHyIliVOIjKVKdsI5MXj312zmRDwmHpyUTZMjfpvxq/UVAHUJIVdVf+lnjjrI+LXBTgMlTWTgHQfmICxjg==", - "requires": { - "@graphql-tools/utils": "^9.0.0", - "change-case-all": "1.0.15", - "common-tags": "1.8.2", - "import-from": "4.0.0", - "lodash": "~4.17.0", - "tslib": "~2.4.0" - } - }, - "change-case-all": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/change-case-all/-/change-case-all-1.0.15.tgz", - "integrity": "sha512-3+GIFhk3sNuvFAJKU46o26OdzudQlPNBCu1ZQi3cMeMHhty1bhDxu2WrEilVNYaGvqUtR1VSigFcJOiS13dRhQ==", - "requires": { - "change-case": "^4.1.2", - "is-lower-case": "^2.0.2", - "is-upper-case": "^2.0.2", - "lower-case": "^2.0.2", - "lower-case-first": "^2.0.2", - "sponge-case": "^1.0.1", - "swap-case": "^2.0.2", - "title-case": "^3.0.3", - "upper-case": "^2.0.2", - "upper-case-first": "^2.0.2" - } - } - } - }, - "@graphql-codegen/core": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/@graphql-codegen/core/-/core-2.6.8.tgz", - "integrity": "sha512-JKllNIipPrheRgl+/Hm/xuWMw9++xNQ12XJR/OHHgFopOg4zmN3TdlRSyYcv/K90hCFkkIwhlHFUQTfKrm8rxQ==", - "requires": { - "@graphql-codegen/plugin-helpers": "^3.1.1", - "@graphql-tools/schema": "^9.0.0", - "@graphql-tools/utils": "^9.1.1", - "tslib": "~2.4.0" - }, - "dependencies": { - "@graphql-codegen/plugin-helpers": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-3.1.2.tgz", - "integrity": "sha512-emOQiHyIliVOIjKVKdsI5MXj312zmRDwmHpyUTZMjfpvxq/UVAHUJIVdVf+lnjjrI+LXBTgMlTWTgHQfmICxjg==", - "requires": { - "@graphql-tools/utils": "^9.0.0", - "change-case-all": "1.0.15", - "common-tags": "1.8.2", - "import-from": "4.0.0", - "lodash": "~4.17.0", - "tslib": "~2.4.0" - } - }, - "change-case-all": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/change-case-all/-/change-case-all-1.0.15.tgz", - "integrity": "sha512-3+GIFhk3sNuvFAJKU46o26OdzudQlPNBCu1ZQi3cMeMHhty1bhDxu2WrEilVNYaGvqUtR1VSigFcJOiS13dRhQ==", - "requires": { - "change-case": "^4.1.2", - "is-lower-case": "^2.0.2", - "is-upper-case": "^2.0.2", - "lower-case": "^2.0.2", - "lower-case-first": "^2.0.2", - "sponge-case": "^1.0.1", - "swap-case": "^2.0.2", - "title-case": "^3.0.3", - "upper-case": "^2.0.2", - "upper-case-first": "^2.0.2" - } - } - } - }, - "@graphql-codegen/plugin-helpers": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-2.7.2.tgz", - "integrity": "sha512-kln2AZ12uii6U59OQXdjLk5nOlh1pHis1R98cDZGFnfaiAbX9V3fxcZ1MMJkB7qFUymTALzyjZoXXdyVmPMfRg==", - "requires": { - "@graphql-tools/utils": "^8.8.0", - "change-case-all": "1.0.14", - "common-tags": "1.8.2", - "import-from": "4.0.0", - "lodash": "~4.17.0", - "tslib": "~2.4.0" - }, - "dependencies": { - "@graphql-tools/utils": { - "version": "8.13.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.13.1.tgz", - "integrity": "sha512-qIh9yYpdUFmctVqovwMdheVNJqFh+DQNWIhX87FJStfXYnmweBUDATok9fWPleKeFwxnW8IapKmY8m8toJEkAw==", - "requires": { - "tslib": "^2.4.0" - } - } - } - }, - "@graphql-codegen/schema-ast": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@graphql-codegen/schema-ast/-/schema-ast-2.6.1.tgz", - "integrity": "sha512-5TNW3b1IHJjCh07D2yQNGDQzUpUl2AD+GVe1Dzjqyx/d2Fn0TPMxLsHsKPS4Plg4saO8FK/QO70wLsP7fdbQ1w==", - "requires": { - "@graphql-codegen/plugin-helpers": "^3.1.2", - "@graphql-tools/utils": "^9.0.0", - "tslib": "~2.4.0" - }, - "dependencies": { - "@graphql-codegen/plugin-helpers": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-3.1.2.tgz", - "integrity": "sha512-emOQiHyIliVOIjKVKdsI5MXj312zmRDwmHpyUTZMjfpvxq/UVAHUJIVdVf+lnjjrI+LXBTgMlTWTgHQfmICxjg==", - "requires": { - "@graphql-tools/utils": "^9.0.0", - "change-case-all": "1.0.15", - "common-tags": "1.8.2", - "import-from": "4.0.0", - "lodash": "~4.17.0", - "tslib": "~2.4.0" - } - }, - "change-case-all": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/change-case-all/-/change-case-all-1.0.15.tgz", - "integrity": "sha512-3+GIFhk3sNuvFAJKU46o26OdzudQlPNBCu1ZQi3cMeMHhty1bhDxu2WrEilVNYaGvqUtR1VSigFcJOiS13dRhQ==", - "requires": { - "change-case": "^4.1.2", - "is-lower-case": "^2.0.2", - "is-upper-case": "^2.0.2", - "lower-case": "^2.0.2", - "lower-case-first": "^2.0.2", - "sponge-case": "^1.0.1", - "swap-case": "^2.0.2", - "title-case": "^3.0.3", - "upper-case": "^2.0.2", - "upper-case-first": "^2.0.2" - } - } - } - }, - "@graphql-codegen/typescript": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/@graphql-codegen/typescript/-/typescript-2.8.8.tgz", - "integrity": "sha512-A0oUi3Oy6+DormOlrTC4orxT9OBZkIglhbJBcDmk34jAKKUgesukXRd4yOhmTrnbchpXz2T8IAOFB3FWIaK4Rw==", - "requires": { - "@graphql-codegen/plugin-helpers": "^3.1.2", - "@graphql-codegen/schema-ast": "^2.6.1", - "@graphql-codegen/visitor-plugin-common": "2.13.8", - "auto-bind": "~4.0.0", - "tslib": "~2.4.0" - }, - "dependencies": { - "@graphql-codegen/plugin-helpers": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-3.1.2.tgz", - "integrity": "sha512-emOQiHyIliVOIjKVKdsI5MXj312zmRDwmHpyUTZMjfpvxq/UVAHUJIVdVf+lnjjrI+LXBTgMlTWTgHQfmICxjg==", - "requires": { - "@graphql-tools/utils": "^9.0.0", - "change-case-all": "1.0.15", - "common-tags": "1.8.2", - "import-from": "4.0.0", - "lodash": "~4.17.0", - "tslib": "~2.4.0" - } - }, - "change-case-all": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/change-case-all/-/change-case-all-1.0.15.tgz", - "integrity": "sha512-3+GIFhk3sNuvFAJKU46o26OdzudQlPNBCu1ZQi3cMeMHhty1bhDxu2WrEilVNYaGvqUtR1VSigFcJOiS13dRhQ==", - "requires": { - "change-case": "^4.1.2", - "is-lower-case": "^2.0.2", - "is-upper-case": "^2.0.2", - "lower-case": "^2.0.2", - "lower-case-first": "^2.0.2", - "sponge-case": "^1.0.1", - "swap-case": "^2.0.2", - "title-case": "^3.0.3", - "upper-case": "^2.0.2", - "upper-case-first": "^2.0.2" - } - } - } - }, - "@graphql-codegen/typescript-operations": { - "version": "2.5.13", - "resolved": "https://registry.npmjs.org/@graphql-codegen/typescript-operations/-/typescript-operations-2.5.13.tgz", - "integrity": "sha512-3vfR6Rx6iZU0JRt29GBkFlrSNTM6t+MSLF86ChvL4d/Jfo/JYAGuB3zNzPhirHYzJPCvLOAx2gy9ID1ltrpYiw==", - "requires": { - "@graphql-codegen/plugin-helpers": "^3.1.2", - "@graphql-codegen/typescript": "^2.8.8", - "@graphql-codegen/visitor-plugin-common": "2.13.8", - "auto-bind": "~4.0.0", - "tslib": "~2.4.0" - }, - "dependencies": { - "@graphql-codegen/plugin-helpers": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-3.1.2.tgz", - "integrity": "sha512-emOQiHyIliVOIjKVKdsI5MXj312zmRDwmHpyUTZMjfpvxq/UVAHUJIVdVf+lnjjrI+LXBTgMlTWTgHQfmICxjg==", - "requires": { - "@graphql-tools/utils": "^9.0.0", - "change-case-all": "1.0.15", - "common-tags": "1.8.2", - "import-from": "4.0.0", - "lodash": "~4.17.0", - "tslib": "~2.4.0" - } - }, - "change-case-all": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/change-case-all/-/change-case-all-1.0.15.tgz", - "integrity": "sha512-3+GIFhk3sNuvFAJKU46o26OdzudQlPNBCu1ZQi3cMeMHhty1bhDxu2WrEilVNYaGvqUtR1VSigFcJOiS13dRhQ==", - "requires": { - "change-case": "^4.1.2", - "is-lower-case": "^2.0.2", - "is-upper-case": "^2.0.2", - "lower-case": "^2.0.2", - "lower-case-first": "^2.0.2", - "sponge-case": "^1.0.1", - "swap-case": "^2.0.2", - "title-case": "^3.0.3", - "upper-case": "^2.0.2", - "upper-case-first": "^2.0.2" - } - } - } - }, - "@graphql-codegen/visitor-plugin-common": { - "version": "2.13.8", - "resolved": "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.13.8.tgz", - "integrity": "sha512-IQWu99YV4wt8hGxIbBQPtqRuaWZhkQRG2IZKbMoSvh0vGeWb3dB0n0hSgKaOOxDY+tljtOf9MTcUYvJslQucMQ==", - "requires": { - "@graphql-codegen/plugin-helpers": "^3.1.2", - "@graphql-tools/optimize": "^1.3.0", - "@graphql-tools/relay-operation-optimizer": "^6.5.0", - "@graphql-tools/utils": "^9.0.0", - "auto-bind": "~4.0.0", - "change-case-all": "1.0.15", - "dependency-graph": "^0.11.0", - "graphql-tag": "^2.11.0", - "parse-filepath": "^1.0.2", - "tslib": "~2.4.0" - }, - "dependencies": { - "@graphql-codegen/plugin-helpers": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-3.1.2.tgz", - "integrity": "sha512-emOQiHyIliVOIjKVKdsI5MXj312zmRDwmHpyUTZMjfpvxq/UVAHUJIVdVf+lnjjrI+LXBTgMlTWTgHQfmICxjg==", - "requires": { - "@graphql-tools/utils": "^9.0.0", - "change-case-all": "1.0.15", - "common-tags": "1.8.2", - "import-from": "4.0.0", - "lodash": "~4.17.0", - "tslib": "~2.4.0" - } - }, - "change-case-all": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/change-case-all/-/change-case-all-1.0.15.tgz", - "integrity": "sha512-3+GIFhk3sNuvFAJKU46o26OdzudQlPNBCu1ZQi3cMeMHhty1bhDxu2WrEilVNYaGvqUtR1VSigFcJOiS13dRhQ==", - "requires": { - "change-case": "^4.1.2", - "is-lower-case": "^2.0.2", - "is-upper-case": "^2.0.2", - "lower-case": "^2.0.2", - "lower-case-first": "^2.0.2", - "sponge-case": "^1.0.1", - "swap-case": "^2.0.2", - "title-case": "^3.0.3", - "upper-case": "^2.0.2", - "upper-case-first": "^2.0.2" - } - } - } - }, - "@graphql-tools/code-file-loader": { - "version": "7.3.23", - "resolved": "https://registry.npmjs.org/@graphql-tools/code-file-loader/-/code-file-loader-7.3.23.tgz", - "integrity": "sha512-8Wt1rTtyTEs0p47uzsPJ1vAtfAx0jmxPifiNdmo9EOCuUPyQGEbMaik/YkqZ7QUFIEYEQu+Vgfo8tElwOPtx5Q==", - "requires": { - "@graphql-tools/graphql-tag-pluck": "7.5.2", - "@graphql-tools/utils": "^9.2.1", - "globby": "^11.0.3", - "tslib": "^2.4.0", - "unixify": "^1.0.0" - } - }, - "@graphql-tools/graphql-tag-pluck": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/@graphql-tools/graphql-tag-pluck/-/graphql-tag-pluck-7.5.2.tgz", - "integrity": "sha512-RW+H8FqOOLQw0BPXaahYepVSRjuOHw+7IL8Opaa5G5uYGOBxoXR7DceyQ7BcpMgktAOOmpDNQ2WtcboChOJSRA==", - "requires": { - "@babel/parser": "^7.16.8", - "@babel/plugin-syntax-import-assertions": "^7.20.0", - "@babel/traverse": "^7.16.8", - "@babel/types": "^7.16.8", - "@graphql-tools/utils": "^9.2.1", - "tslib": "^2.4.0" - } - }, - "@graphql-tools/load": { - "version": "7.8.14", - "resolved": "https://registry.npmjs.org/@graphql-tools/load/-/load-7.8.14.tgz", - "integrity": "sha512-ASQvP+snHMYm+FhIaLxxFgVdRaM0vrN9wW2BKInQpktwWTXVyk+yP5nQUCEGmn0RTdlPKrffBaigxepkEAJPrg==", - "requires": { - "@graphql-tools/schema": "^9.0.18", - "@graphql-tools/utils": "^9.2.1", - "p-limit": "3.1.0", - "tslib": "^2.4.0" - } - }, - "@graphql-tools/merge": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.4.2.tgz", - "integrity": "sha512-XbrHAaj8yDuINph+sAfuq3QCZ/tKblrTLOpirK0+CAgNlZUCHs0Fa+xtMUURgwCVThLle1AF7svJCxFizygLsw==", - "requires": { - "@graphql-tools/utils": "^9.2.1", - "tslib": "^2.4.0" - } - }, - "@graphql-tools/optimize": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/optimize/-/optimize-1.4.0.tgz", - "integrity": "sha512-dJs/2XvZp+wgHH8T5J2TqptT9/6uVzIYvA6uFACha+ufvdMBedkfR4b4GbT8jAKLRARiqRTxy3dctnwkTM2tdw==", - "requires": { - "tslib": "^2.4.0" - } - }, - "@graphql-tools/relay-operation-optimizer": { - "version": "6.5.18", - "resolved": "https://registry.npmjs.org/@graphql-tools/relay-operation-optimizer/-/relay-operation-optimizer-6.5.18.tgz", - "integrity": "sha512-mc5VPyTeV+LwiM+DNvoDQfPqwQYhPV/cl5jOBjTgSniyaq8/86aODfMkrE2OduhQ5E00hqrkuL2Fdrgk0w1QJg==", - "requires": { - "@ardatan/relay-compiler": "12.0.0", - "@graphql-tools/utils": "^9.2.1", - "tslib": "^2.4.0" - } - }, - "@graphql-tools/schema": { - "version": "9.0.19", - "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-9.0.19.tgz", - "integrity": "sha512-oBRPoNBtCkk0zbUsyP4GaIzCt8C0aCI4ycIRUL67KK5pOHljKLBBtGT+Jr6hkzA74C8Gco8bpZPe7aWFjiaK2w==", - "requires": { - "@graphql-tools/merge": "^8.4.1", - "@graphql-tools/utils": "^9.2.1", - "tslib": "^2.4.0", - "value-or-promise": "^1.0.12" - } - }, - "@graphql-tools/utils": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.2.1.tgz", - "integrity": "sha512-WUw506Ql6xzmOORlriNrD6Ugx+HjVgYxt9KCXD9mHAak+eaXSwuGGPyE60hy9xaDEoXKBsG7SkG69ybitaVl6A==", - "requires": { - "@graphql-typed-document-node/core": "^3.1.1", - "tslib": "^2.4.0" - } - }, - "@graphql-typed-document-node/core": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", - "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", - "requires": {} - }, - "@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" - }, - "@hapi/topo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "requires": { - "@hapi/hoek": "^9.0.0" - } - }, - "@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", - "requires": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - } - }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" - }, - "@internationalized/date": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.5.1.tgz", - "integrity": "sha512-LUQIfwU9e+Fmutc/DpRTGXSdgYZLBegi4wygCWDSVmUdLTaMHsQyASDiJtREwanwKuQLq0hY76fCJ9J/9I2xOQ==", - "requires": { - "@swc/helpers": "^0.5.0" - }, - "dependencies": { - "@swc/helpers": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.6.tgz", - "integrity": "sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA==", - "requires": { - "tslib": "^2.4.0" - } - } - } - }, - "@internationalized/message": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@internationalized/message/-/message-3.1.1.tgz", - "integrity": "sha512-ZgHxf5HAPIaR0th+w0RUD62yF6vxitjlprSxmLJ1tam7FOekqRSDELMg4Cr/DdszG5YLsp5BG3FgHgqquQZbqw==", - "requires": { - "@swc/helpers": "^0.5.0", - "intl-messageformat": "^10.1.0" - }, - "dependencies": { - "@swc/helpers": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.6.tgz", - "integrity": "sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA==", - "requires": { - "tslib": "^2.4.0" - } - } - } - }, - "@internationalized/number": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.5.0.tgz", - "integrity": "sha512-ZY1BW8HT9WKYvaubbuqXbbDdHhOUMfE2zHHFJeTppid0S+pc8HtdIxFxaYMsGjCb4UsF+MEJ4n2TfU7iHnUK8w==", - "requires": { - "@swc/helpers": "^0.5.0" - }, - "dependencies": { - "@swc/helpers": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.6.tgz", - "integrity": "sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA==", - "requires": { - "tslib": "^2.4.0" - } - } - } - }, - "@internationalized/string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@internationalized/string/-/string-3.2.0.tgz", - "integrity": "sha512-Xx3Sy3f2c9ctT+vh8c7euEaEHQZltp0euZ3Hy4UfT3E13r6lxpUS3kgKyumEjboJZSnaZv7JhqWz3D75v+IxQg==", - "requires": { - "@swc/helpers": "^0.5.0" - }, - "dependencies": { - "@swc/helpers": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.6.tgz", - "integrity": "sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA==", - "requires": { - "tslib": "^2.4.0" - } - } - } - }, - "@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==" - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" - }, - "@jridgewell/source-map": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", - "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" - }, - "@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", - "requires": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "@lezer/common": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.1.1.tgz", - "integrity": "sha512-aAPB9YbvZHqAW+bIwiuuTDGB4DG0sYNRObGLxud8cW7osw1ZQxfDuTZ8KQiqfZ0QJGcR34CvpTMDXEyo/+Htgg==" - }, - "@lezer/lr": { - "version": "1.3.14", - "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.3.14.tgz", - "integrity": "sha512-z5mY4LStlA3yL7aHT/rqgG614cfcvklS+8oFRFBYrs4YaWLJyKKM4+nN6KopToX0o9Hj6zmH6M5kinOYuy06ug==", - "requires": { - "@lezer/common": "^1.0.0" - } - }, - "@lmdb/lmdb-darwin-arm64": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-2.5.3.tgz", - "integrity": "sha512-RXwGZ/0eCqtCY8FLTM/koR60w+MXyvBUpToXiIyjOcBnC81tAlTUHrRUavCEWPI9zc9VgvpK3+cbumPyR8BSuA==", - "optional": true - }, - "@lmdb/lmdb-darwin-x64": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-2.5.3.tgz", - "integrity": "sha512-337dNzh5yCdNCTk8kPfoU7jR3otibSlPDGW0vKZT97rKnQMb9tNdto3RtWoGPsQ8hKmlRZpojOJtmwjncq1MoA==", - "optional": true - }, - "@lmdb/lmdb-linux-arm": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-2.5.3.tgz", - "integrity": "sha512-mU2HFJDGwECkoD9dHQEfeTG5mp8hNS2BCfwoiOpVPMeapjYpQz9Uw3FkUjRZ4dGHWKbin40oWHuL0bk2bCx+Sg==", - "optional": true - }, - "@lmdb/lmdb-linux-arm64": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-2.5.3.tgz", - "integrity": "sha512-VJw60Mdgb4n+L0fO1PqfB0C7TyEQolJAC8qpqvG3JoQwvyOv6LH7Ib/WE3wxEW9nuHmVz9jkK7lk5HfWWgoO1Q==", - "optional": true - }, - "@lmdb/lmdb-linux-x64": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-2.5.3.tgz", - "integrity": "sha512-qaReO5aV8griBDsBr8uBF/faO3ieGjY1RY4p8JvTL6Mu1ylLrTVvOONqKFlNaCwrmUjWw5jnf7VafxDAeQHTow==", - "optional": true - }, - "@lmdb/lmdb-win32-x64": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.5.3.tgz", - "integrity": "sha512-cK+Elf3RjEzrm3SerAhrFWL5oQAsZSJ/LmjL1joIpTfEP1etJJ9CTRvdaV6XLYAxaEkfdhk/9hOvHLbR9yIhCA==", - "optional": true - }, - "@mdx-js/loader": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/@mdx-js/loader/-/loader-1.6.22.tgz", - "integrity": "sha512-9CjGwy595NaxAYp0hF9B/A0lH6C8Rms97e2JS9d3jVUtILn6pT5i5IV965ra3lIWc7Rs1GG1tBdVF7dCowYe6Q==", - "requires": { - "@mdx-js/mdx": "1.6.22", - "@mdx-js/react": "1.6.22", - "loader-utils": "2.0.0" - } - }, - "@mdx-js/mdx": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.22.tgz", - "integrity": "sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA==", - "requires": { - "@babel/core": "7.12.9", - "@babel/plugin-syntax-jsx": "7.12.1", - "@babel/plugin-syntax-object-rest-spread": "7.8.3", - "@mdx-js/util": "1.6.22", - "babel-plugin-apply-mdx-type-prop": "1.6.22", - "babel-plugin-extract-import-names": "1.6.22", - "camelcase-css": "2.0.1", - "detab": "2.0.4", - "hast-util-raw": "6.0.1", - "lodash.uniq": "4.5.0", - "mdast-util-to-hast": "10.0.1", - "remark-footnotes": "2.0.0", - "remark-mdx": "1.6.22", - "remark-parse": "8.0.3", - "remark-squeeze-paragraphs": "4.0.0", - "style-to-object": "0.3.0", - "unified": "9.2.0", - "unist-builder": "2.0.3", - "unist-util-visit": "2.0.3" - }, - "dependencies": { - "@babel/core": { - "version": "7.12.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", - "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.12.5", - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helpers": "^7.12.5", - "@babel/parser": "^7.12.7", - "@babel/template": "^7.12.7", - "@babel/traverse": "^7.12.9", - "@babel/types": "^7.12.7", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.2", - "lodash": "^4.17.19", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" - } - }, - "convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" - }, - "semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" - } - } - }, - "@mdx-js/react": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.22.tgz", - "integrity": "sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==", - "requires": {} - }, - "@mdx-js/util": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/@mdx-js/util/-/util-1.6.22.tgz", - "integrity": "sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==" - }, - "@mischnic/json-sourcemap": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@mischnic/json-sourcemap/-/json-sourcemap-0.1.1.tgz", - "integrity": "sha512-iA7+tyVqfrATAIsIRWQG+a7ZLLD0VaOCKV2Wd/v4mqIU3J9c4jx9p7S0nw1XH3gJCKNBOOwACOPYYSUu9pgT+w==", - "requires": { - "@lezer/common": "^1.0.0", - "@lezer/lr": "^1.0.0", - "json5": "^2.2.1" - } - }, - "@msgpackr-extract/msgpackr-extract-darwin-arm64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.2.tgz", - "integrity": "sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ==", - "optional": true - }, - "@msgpackr-extract/msgpackr-extract-darwin-x64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.2.tgz", - "integrity": "sha512-lwriRAHm1Yg4iDf23Oxm9n/t5Zpw1lVnxYU3HnJPTi2lJRkKTrps1KVgvL6m7WvmhYVt/FIsssWay+k45QHeuw==", - "optional": true - }, - "@msgpackr-extract/msgpackr-extract-linux-arm": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.2.tgz", - "integrity": "sha512-MOI9Dlfrpi2Cuc7i5dXdxPbFIgbDBGgKR5F2yWEa6FVEtSWncfVNKW5AKjImAQ6CZlBK9tympdsZJ2xThBiWWA==", - "optional": true - }, - "@msgpackr-extract/msgpackr-extract-linux-arm64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.2.tgz", - "integrity": "sha512-FU20Bo66/f7He9Fp9sP2zaJ1Q8L9uLPZQDub/WlUip78JlPeMbVL8546HbZfcW9LNciEXc8d+tThSJjSC+tmsg==", - "optional": true - }, - "@msgpackr-extract/msgpackr-extract-linux-x64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.2.tgz", - "integrity": "sha512-gsWNDCklNy7Ajk0vBBf9jEx04RUxuDQfBse918Ww+Qb9HCPoGzS+XJTLe96iN3BVK7grnLiYghP/M4L8VsaHeA==", - "optional": true - }, - "@msgpackr-extract/msgpackr-extract-win32-x64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.2.tgz", - "integrity": "sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ==", - "optional": true - }, - "@nicolo-ribaudo/eslint-scope-5-internals": { - "version": "5.1.1-v1", - "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", - "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", - "requires": { - "eslint-scope": "5.1.1" - } - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@parcel/bundler-default": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/bundler-default/-/bundler-default-2.6.2.tgz", - "integrity": "sha512-XIa3had/MIaTGgRFkHApXwytYs77k4geaNcmlb6nzmAABcYjW1CLYh83Zt0AbzLFsDT9ZcRY3u2UjhNf6efSaw==", - "requires": { - "@parcel/diagnostic": "2.6.2", - "@parcel/hash": "2.6.2", - "@parcel/plugin": "2.6.2", - "@parcel/utils": "2.6.2", - "nullthrows": "^1.1.1" - } - }, - "@parcel/cache": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/cache/-/cache-2.6.2.tgz", - "integrity": "sha512-hhJ6AsEGybeQZd9c/GYqfcKTgZKQXu3Xih6TlnP3gdR3KZoJOnb40ovHD1yYg4COvfcXThKP1cVJ18J6rcv3IA==", - "requires": { - "@parcel/fs": "2.6.2", - "@parcel/logger": "2.6.2", - "@parcel/utils": "2.6.2", - "lmdb": "2.5.2" - }, - "dependencies": { - "@lmdb/lmdb-darwin-arm64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-2.5.2.tgz", - "integrity": "sha512-+F8ioQIUN68B4UFiIBYu0QQvgb9FmlKw2ctQMSBfW2QBrZIxz9vD9jCGqTCPqZBRbPHAS/vG1zSXnKqnS2ch/A==", - "optional": true - }, - "@lmdb/lmdb-darwin-x64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-2.5.2.tgz", - "integrity": "sha512-KvPH56KRLLx4KSfKBx0m1r7GGGUMXm0jrKmNE7plbHlesZMuPJICtn07HYgQhj1LNsK7Yqwuvnqh1QxhJnF1EA==", - "optional": true - }, - "@lmdb/lmdb-linux-arm": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-2.5.2.tgz", - "integrity": "sha512-5kQAP21hAkfW5Bl+e0P57dV4dGYnkNIpR7f/GAh6QHlgXx+vp/teVj4PGRZaKAvt0GX6++N6hF8NnGElLDuIDw==", - "optional": true - }, - "@lmdb/lmdb-linux-arm64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-2.5.2.tgz", - "integrity": "sha512-aLl89VHL/wjhievEOlPocoefUyWdvzVrcQ/MHQYZm2JfV1jUsrbr/ZfkPPUFvZBf+VSE+Q0clWs9l29PCX1hTQ==", - "optional": true - }, - "@lmdb/lmdb-linux-x64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-2.5.2.tgz", - "integrity": "sha512-xUdUfwDJLGjOUPH3BuPBt0NlIrR7f/QHKgu3GZIXswMMIihAekj2i97oI0iWG5Bok/b+OBjHPfa8IU9velnP/Q==", - "optional": true - }, - "@lmdb/lmdb-win32-x64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.5.2.tgz", - "integrity": "sha512-zrBczSbXKxEyK2ijtbRdICDygRqWSRPpZMN5dD1T8VMEW5RIhIbwFWw2phDRXuBQdVDpSjalCIUMWMV2h3JaZA==", - "optional": true - }, - "lmdb": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-2.5.2.tgz", - "integrity": "sha512-V5V5Xa2Hp9i2XsbDALkBTeHXnBXh/lEmk9p22zdr7jtuOIY9TGhjK6vAvTpOOx9IKU4hJkRWZxn/HsvR1ELLtA==", - "requires": { - "@lmdb/lmdb-darwin-arm64": "2.5.2", - "@lmdb/lmdb-darwin-x64": "2.5.2", - "@lmdb/lmdb-linux-arm": "2.5.2", - "@lmdb/lmdb-linux-arm64": "2.5.2", - "@lmdb/lmdb-linux-x64": "2.5.2", - "@lmdb/lmdb-win32-x64": "2.5.2", - "msgpackr": "^1.5.4", - "node-addon-api": "^4.3.0", - "node-gyp-build-optional-packages": "5.0.3", - "ordered-binary": "^1.2.4", - "weak-lru-cache": "^1.2.2" - } - }, - "node-addon-api": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" - } - } - }, - "@parcel/codeframe": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/codeframe/-/codeframe-2.6.2.tgz", - "integrity": "sha512-oFlHr6HCaYYsB4SHkU+gn9DKtbzvv3/4NdwMX0/6NAKyYVI7inEsXyPGw2Bbd2ZCFatW9QJZUETF0etvh5AEfQ==", - "requires": { - "chalk": "^4.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@parcel/compressor-raw": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/compressor-raw/-/compressor-raw-2.6.2.tgz", - "integrity": "sha512-P3c8jjV5HVs+fNDjhvq7PtHXNm687nit1iwTS5VAt+ScXKhKBhoIJ56q+9opcw0jnXVjAAgZqcRZ50oAJBGdKw==", - "requires": { - "@parcel/plugin": "2.6.2" - } - }, - "@parcel/core": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/core/-/core-2.6.2.tgz", - "integrity": "sha512-JlKS3Ux0ngmdooSBbzQLShHJdsapF9E7TGMo1hFaHRquZip/DaqzvysYrgMJlDuCoLArciq5ei7ZKzGeK9zexA==", - "requires": { - "@mischnic/json-sourcemap": "^0.1.0", - "@parcel/cache": "2.6.2", - "@parcel/diagnostic": "2.6.2", - "@parcel/events": "2.6.2", - "@parcel/fs": "2.6.2", - "@parcel/graph": "2.6.2", - "@parcel/hash": "2.6.2", - "@parcel/logger": "2.6.2", - "@parcel/package-manager": "2.6.2", - "@parcel/plugin": "2.6.2", - "@parcel/source-map": "^2.0.0", - "@parcel/types": "2.6.2", - "@parcel/utils": "2.6.2", - "@parcel/workers": "2.6.2", - "abortcontroller-polyfill": "^1.1.9", - "base-x": "^3.0.8", - "browserslist": "^4.6.6", - "clone": "^2.1.1", - "dotenv": "^7.0.0", - "dotenv-expand": "^5.1.0", - "json5": "^2.2.0", - "msgpackr": "^1.5.4", - "nullthrows": "^1.1.1", - "semver": "^5.7.1" - }, - "dependencies": { - "dotenv": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-7.0.0.tgz", - "integrity": "sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==" - }, - "semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" - } - } - }, - "@parcel/diagnostic": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/diagnostic/-/diagnostic-2.6.2.tgz", - "integrity": "sha512-3ODSBkKVihENU763z1/1DhGAWFhYWRxOCOShC72KXp+GFnSgGiBsxclu8NBa/N948Rzp8lqQI8U1nLcKkh0O/w==", - "requires": { - "@mischnic/json-sourcemap": "^0.1.0", - "nullthrows": "^1.1.1" - } - }, - "@parcel/events": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/events/-/events-2.6.2.tgz", - "integrity": "sha512-IaCjOeA5ercdFVi1EZOmUHhGfIysmCUgc2Th9hMugSFO0I3GzRsBcAdP6XPfWm+TV6sQ/qZRfdk/drUxoAupnw==" - }, - "@parcel/fs": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-2.6.2.tgz", - "integrity": "sha512-mIhqdF3tjgeoIGqW7Nc/xfM2ClID7o8livwUe5lpQEP+ZaIBiMigXs6ckv3WToCACK+3uylrSD2A/HmlhrxMqQ==", - "requires": { - "@parcel/fs-search": "2.6.2", - "@parcel/types": "2.6.2", - "@parcel/utils": "2.6.2", - "@parcel/watcher": "^2.0.0", - "@parcel/workers": "2.6.2" - } - }, - "@parcel/fs-search": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/fs-search/-/fs-search-2.6.2.tgz", - "integrity": "sha512-4STid1zqtGnmGjHD/2TG2g/zPDiCTtE3IAS24QYH3eiUAz2uoKGgEqd2tZbZ2yI96jtCuIhC1bzVu8Hbykls7w==", - "requires": { - "detect-libc": "^1.0.3" - } - }, - "@parcel/graph": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/graph/-/graph-2.6.2.tgz", - "integrity": "sha512-DPH4G/RBFJWayIN2fnhDXqhUw75n7k15YsGzdDKiXuwwz4wMOjoL4cyrI6zOf1SIyh3guRmeTYJ4jjPzwrLYww==", - "requires": { - "@parcel/utils": "2.6.2", - "nullthrows": "^1.1.1" - } - }, - "@parcel/hash": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/hash/-/hash-2.6.2.tgz", - "integrity": "sha512-tFB+cJU1Wqag6WyJgsmx3nx+xhmjcNZqtWh/MtK1lHNnZdDRk6bjr7SapnygBwruz+SmSt5bbdVThcpk2dRCcA==", - "requires": { - "detect-libc": "^1.0.3", - "xxhash-wasm": "^0.4.2" - } - }, - "@parcel/logger": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-2.6.2.tgz", - "integrity": "sha512-Sz5YGCj1DbEiX0/G8Uw97LLZ0uEK+qtWcRAkHNpJpeMiSqDiRNevxXltz42EcLo+oCh4d4wyiVzwi9mNwzhS/Q==", - "requires": { - "@parcel/diagnostic": "2.6.2", - "@parcel/events": "2.6.2" - } - }, - "@parcel/markdown-ansi": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/markdown-ansi/-/markdown-ansi-2.6.2.tgz", - "integrity": "sha512-N/h9J4eibhc+B+krzvPMzFUWL37GudBIZBa7XSLkcuH6MnYYfh6rrMvhIyyESwk6VkcZNVzAeZrGQqxEs0dHDQ==", - "requires": { - "chalk": "^4.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@parcel/namer-default": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/namer-default/-/namer-default-2.6.2.tgz", - "integrity": "sha512-mp7bx/BQaIuohmZP0uE+gAmDBzzH0Yu8F4yCtE611lc6i0mou+nWRhzyKLNC/ieuI8DB3BFh2QQKeTxJn4W0qg==", - "requires": { - "@parcel/diagnostic": "2.6.2", - "@parcel/plugin": "2.6.2", - "nullthrows": "^1.1.1" - } - }, - "@parcel/node-resolver-core": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/node-resolver-core/-/node-resolver-core-2.6.2.tgz", - "integrity": "sha512-4b2L5QRYlTybvv3+TIRtwg4PPJXy+cRShCBa8eu1K0Fj297Afe8MOZrcVV+RIr2KPMIRXcIJoqDmOhyci/DynA==", - "requires": { - "@parcel/diagnostic": "2.6.2", - "@parcel/utils": "2.6.2", - "nullthrows": "^1.1.1", - "semver": "^5.7.1" - }, - "dependencies": { - "semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" - } - } - }, - "@parcel/optimizer-terser": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-terser/-/optimizer-terser-2.6.2.tgz", - "integrity": "sha512-ZSEVQ3G3zOiVPeHvH+BrHegZybrQj9kWQAaAA92leSqbvf6UaX4xqXbGRg2OttNFtbGYBzIl28Zm4t2SLeUIuA==", - "requires": { - "@parcel/diagnostic": "2.6.2", - "@parcel/plugin": "2.6.2", - "@parcel/source-map": "^2.0.0", - "@parcel/utils": "2.6.2", - "nullthrows": "^1.1.1", - "terser": "^5.2.0" - } - }, - "@parcel/package-manager": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/package-manager/-/package-manager-2.6.2.tgz", - "integrity": "sha512-xGMqTgnwTE3rgzYwUZMKxR8fzmP5iSYz/gj2H8FR3pEmwh/8xCMtNjTSth+hPVGuqgRZ6JxwpfdY/fXdZ61ViQ==", - "requires": { - "@parcel/diagnostic": "2.6.2", - "@parcel/fs": "2.6.2", - "@parcel/logger": "2.6.2", - "@parcel/types": "2.6.2", - "@parcel/utils": "2.6.2", - "@parcel/workers": "2.6.2", - "semver": "^5.7.1" - }, - "dependencies": { - "semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" - } - } - }, - "@parcel/packager-js": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/packager-js/-/packager-js-2.6.2.tgz", - "integrity": "sha512-fm5rKWtaExR0W+UEKWivXNPysRFxuBCdskdxDByb1J1JeGMvp7dJElbi8oXDAQM4MnM5EyG7cg47SlMZNTLm4A==", - "requires": { - "@parcel/diagnostic": "2.6.2", - "@parcel/hash": "2.6.2", - "@parcel/plugin": "2.6.2", - "@parcel/source-map": "^2.0.0", - "@parcel/utils": "2.6.2", - "globals": "^13.2.0", - "nullthrows": "^1.1.1" - }, - "dependencies": { - "globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", - "requires": { - "type-fest": "^0.20.2" - } - } - } - }, - "@parcel/packager-raw": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/packager-raw/-/packager-raw-2.6.2.tgz", - "integrity": "sha512-Rl3ZkMtMjb+LEvRowijDD8fibUAS6rWK0/vZQMk9cDNYCP2gCpZayLk0HZIGxneeTbosf/0sbngHq4VeRQOnQA==", - "requires": { - "@parcel/plugin": "2.6.2" - } - }, - "@parcel/plugin": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/plugin/-/plugin-2.6.2.tgz", - "integrity": "sha512-wbbWsM23Pr+8xtLSvf+UopXdVYlpKCCx6PuuZaZcKo+9IcDCWoGXD4M8Kkz14qBmkFn5uM00mULUqmVdSibB2w==", - "requires": { - "@parcel/types": "2.6.2" - } - }, - "@parcel/reporter-dev-server": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/reporter-dev-server/-/reporter-dev-server-2.6.2.tgz", - "integrity": "sha512-5QtL3ETMFL161jehlIK6rjBM+Pqk5cMhr60s9yLYqE1GY4M4gMj+Act+FXViyM6gmMA38cPxDvUsxTKBYXpFCw==", - "requires": { - "@parcel/plugin": "2.6.2", - "@parcel/utils": "2.6.2" - } - }, - "@parcel/resolver-default": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/resolver-default/-/resolver-default-2.6.2.tgz", - "integrity": "sha512-Lo5sWb5QkjWvdBr+TdmAF6Mszb/sMldBBatc1osQTkHXCy679VMH+lfyiWxHbwK+F1pmdMeBJpYcMxvrgT8EsA==", - "requires": { - "@parcel/node-resolver-core": "2.6.2", - "@parcel/plugin": "2.6.2" - } - }, - "@parcel/runtime-browser-hmr": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.6.2.tgz", - "integrity": "sha512-M4X0+7dyfdI6smwGUGjGXb8Ns3HX7ZrTemyq4Gc7zp7P/5gWjR8i9eISz46sXmF9bf01a/4dKZpoCC9un1pH1g==", - "requires": { - "@parcel/plugin": "2.6.2", - "@parcel/utils": "2.6.2" - } - }, - "@parcel/runtime-js": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/runtime-js/-/runtime-js-2.6.2.tgz", - "integrity": "sha512-0S3JFwgvs6FmEx2dHta9R0Sfu8vCnFAm4i7Y4efGHtAcTrF2CHjyiz4/hG+RQGJ70eoWW463Q+8qt6EKbkaOBQ==", - "requires": { - "@parcel/plugin": "2.6.2", - "@parcel/utils": "2.6.2", - "nullthrows": "^1.1.1" - } - }, - "@parcel/runtime-react-refresh": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.6.2.tgz", - "integrity": "sha512-DJTm5D/tUAGZm0o3ndDOPbKwdYrobuvm4jvkPq31LdEUqVvyuzBAMlqQFHc1yJEJDRRWOIQwQP9Y0NQbJmXFfg==", - "requires": { - "@parcel/plugin": "2.6.2", - "@parcel/utils": "2.6.2", - "react-error-overlay": "6.0.9", - "react-refresh": "^0.9.0" - }, - "dependencies": { - "react-refresh": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.9.0.tgz", - "integrity": "sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==" - } - } - }, - "@parcel/runtime-service-worker": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/runtime-service-worker/-/runtime-service-worker-2.6.2.tgz", - "integrity": "sha512-9jV+RwVEeDUI5+eLy8j1tapTNoHHGOY2+JUprcObQkQ8fux7KltQBJWFhpkUdGtz5LTCNXtj9tdycFtS5lmSzg==", - "requires": { - "@parcel/plugin": "2.6.2", - "@parcel/utils": "2.6.2", - "nullthrows": "^1.1.1" - } - }, - "@parcel/source-map": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@parcel/source-map/-/source-map-2.1.1.tgz", - "integrity": "sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew==", - "requires": { - "detect-libc": "^1.0.3" - } - }, - "@parcel/transformer-js": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/transformer-js/-/transformer-js-2.6.2.tgz", - "integrity": "sha512-uhXAMTjE/Q61amflV8qVpb73mj+mIdXIMH0cSks1/gDIAxcgIvWvrE14P4TvY6zJ1q1iRJRIRUN6cFSXqjjLSA==", - "requires": { - "@parcel/diagnostic": "2.6.2", - "@parcel/plugin": "2.6.2", - "@parcel/source-map": "^2.0.0", - "@parcel/utils": "2.6.2", - "@parcel/workers": "2.6.2", - "@swc/helpers": "^0.4.2", - "browserslist": "^4.6.6", - "detect-libc": "^1.0.3", - "nullthrows": "^1.1.1", - "regenerator-runtime": "^0.13.7", - "semver": "^5.7.1" - }, - "dependencies": { - "regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" - }, - "semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" - } - } - }, - "@parcel/transformer-json": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/transformer-json/-/transformer-json-2.6.2.tgz", - "integrity": "sha512-QGcIIvbPF/u10ihYvQhxXqb2QMXWSzcBxJrOSIXIl74TUGrWX05D5LmjDA/rzm/n/kvRnBkFNP60R/smYb8x+Q==", - "requires": { - "@parcel/plugin": "2.6.2", - "json5": "^2.2.0" - } - }, - "@parcel/transformer-raw": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/transformer-raw/-/transformer-raw-2.6.2.tgz", - "integrity": "sha512-CsofYq5g9Zj/FNmhya2R7Xp3WHlzz34mEdN69bds3azRYHCrl/TS33xXcp/9J+74SEIY1Ufh552o1cM3fnSrDQ==", - "requires": { - "@parcel/plugin": "2.6.2" - } - }, - "@parcel/transformer-react-refresh-wrap": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.6.2.tgz", - "integrity": "sha512-7EE68ebISz+oAHm64ZJbz6uJQT4aOoB8QiK3PvuY6+RsP7aK4/FEHGM1afW49KrZbP4lWjloEkcJm/88DfBiGw==", - "requires": { - "@parcel/plugin": "2.6.2", - "@parcel/utils": "2.6.2", - "react-refresh": "^0.9.0" - }, - "dependencies": { - "react-refresh": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.9.0.tgz", - "integrity": "sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==" - } - } - }, - "@parcel/types": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/types/-/types-2.6.2.tgz", - "integrity": "sha512-MV8BFpCIs2jMUvK2RHqzkoiuOQ//JIbrD1zocA2YRW3zuPL/iABvbAABJoXpoPCKikVWOoCWASgBfWQo26VvJQ==", - "requires": { - "@parcel/cache": "2.6.2", - "@parcel/diagnostic": "2.6.2", - "@parcel/fs": "2.6.2", - "@parcel/package-manager": "2.6.2", - "@parcel/source-map": "^2.0.0", - "@parcel/workers": "2.6.2", - "utility-types": "^3.10.0" - } - }, - "@parcel/utils": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-2.6.2.tgz", - "integrity": "sha512-Ug7hpRxjgbY5AopW55nY7MmGMVmwmN+ihfCmxJkBUoESTG/3iq8uME7GjyOgW5DkQc2K7q62i8y8N0wCJT1u4Q==", - "requires": { - "@parcel/codeframe": "2.6.2", - "@parcel/diagnostic": "2.6.2", - "@parcel/hash": "2.6.2", - "@parcel/logger": "2.6.2", - "@parcel/markdown-ansi": "2.6.2", - "@parcel/source-map": "^2.0.0", - "chalk": "^4.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@parcel/watcher": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.3.0.tgz", - "integrity": "sha512-pW7QaFiL11O0BphO+bq3MgqeX/INAk9jgBldVDYjlQPO4VddoZnF22TcF9onMhnLVHuNqBJeRf+Fj7eezi/+rQ==", - "requires": { - "@parcel/watcher-android-arm64": "2.3.0", - "@parcel/watcher-darwin-arm64": "2.3.0", - "@parcel/watcher-darwin-x64": "2.3.0", - "@parcel/watcher-freebsd-x64": "2.3.0", - "@parcel/watcher-linux-arm-glibc": "2.3.0", - "@parcel/watcher-linux-arm64-glibc": "2.3.0", - "@parcel/watcher-linux-arm64-musl": "2.3.0", - "@parcel/watcher-linux-x64-glibc": "2.3.0", - "@parcel/watcher-linux-x64-musl": "2.3.0", - "@parcel/watcher-win32-arm64": "2.3.0", - "@parcel/watcher-win32-ia32": "2.3.0", - "@parcel/watcher-win32-x64": "2.3.0", - "detect-libc": "^1.0.3", - "is-glob": "^4.0.3", - "micromatch": "^4.0.5", - "node-addon-api": "^7.0.0" - } - }, - "@parcel/watcher-android-arm64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.3.0.tgz", - "integrity": "sha512-f4o9eA3dgk0XRT3XhB0UWpWpLnKgrh1IwNJKJ7UJek7eTYccQ8LR7XUWFKqw6aEq5KUNlCcGvSzKqSX/vtWVVA==", - "optional": true - }, - "@parcel/watcher-darwin-arm64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.3.0.tgz", - "integrity": "sha512-mKY+oijI4ahBMc/GygVGvEdOq0L4DxhYgwQqYAz/7yPzuGi79oXrZG52WdpGA1wLBPrYb0T8uBaGFo7I6rvSKw==", - "optional": true - }, - "@parcel/watcher-darwin-x64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.3.0.tgz", - "integrity": "sha512-20oBj8LcEOnLE3mgpy6zuOq8AplPu9NcSSSfyVKgfOhNAc4eF4ob3ldj0xWjGGbOF7Dcy1Tvm6ytvgdjlfUeow==", - "optional": true - }, - "@parcel/watcher-freebsd-x64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.3.0.tgz", - "integrity": "sha512-7LftKlaHunueAEiojhCn+Ef2CTXWsLgTl4hq0pkhkTBFI3ssj2bJXmH2L67mKpiAD5dz66JYk4zS66qzdnIOgw==", - "optional": true - }, - "@parcel/watcher-linux-arm-glibc": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.3.0.tgz", - "integrity": "sha512-1apPw5cD2xBv1XIHPUlq0cO6iAaEUQ3BcY0ysSyD9Kuyw4MoWm1DV+W9mneWI+1g6OeP6dhikiFE6BlU+AToTQ==", - "optional": true - }, - "@parcel/watcher-linux-arm64-glibc": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.3.0.tgz", - "integrity": "sha512-mQ0gBSQEiq1k/MMkgcSB0Ic47UORZBmWoAWlMrTW6nbAGoLZP+h7AtUM7H3oDu34TBFFvjy4JCGP43JlylkTQA==", - "optional": true - }, - "@parcel/watcher-linux-arm64-musl": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.3.0.tgz", - "integrity": "sha512-LXZAExpepJew0Gp8ZkJ+xDZaTQjLHv48h0p0Vw2VMFQ8A+RKrAvpFuPVCVwKJCr5SE+zvaG+Etg56qXvTDIedw==", - "optional": true - }, - "@parcel/watcher-linux-x64-glibc": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.3.0.tgz", - "integrity": "sha512-P7Wo91lKSeSgMTtG7CnBS6WrA5otr1K7shhSjKHNePVmfBHDoAOHYRXgUmhiNfbcGk0uMCHVcdbfxtuiZCHVow==", - "optional": true - }, - "@parcel/watcher-linux-x64-musl": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.3.0.tgz", - "integrity": "sha512-+kiRE1JIq8QdxzwoYY+wzBs9YbJ34guBweTK8nlzLKimn5EQ2b2FSC+tAOpq302BuIMjyuUGvBiUhEcLIGMQ5g==", - "optional": true - }, - "@parcel/watcher-win32-arm64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.3.0.tgz", - "integrity": "sha512-35gXCnaz1AqIXpG42evcoP2+sNL62gZTMZne3IackM+6QlfMcJLy3DrjuL6Iks7Czpd3j4xRBzez3ADCj1l7Aw==", - "optional": true - }, - "@parcel/watcher-win32-ia32": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.3.0.tgz", - "integrity": "sha512-FJS/IBQHhRpZ6PiCjFt1UAcPr0YmCLHRbTc00IBTrelEjlmmgIVLeOx4MSXzx2HFEy5Jo5YdhGpxCuqCyDJ5ow==", - "optional": true - }, - "@parcel/watcher-win32-x64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.3.0.tgz", - "integrity": "sha512-dLx+0XRdMnVI62kU3wbXvbIRhLck4aE28bIGKbRGS7BJNt54IIj9+c/Dkqb+7DJEbHUZAX1bwaoM8PqVlHJmCA==", - "optional": true - }, - "@parcel/workers": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-2.6.2.tgz", - "integrity": "sha512-wBgUjJQm+lDd12fPRUmk09+ujTA9DgwPdqylSFK0OtI/yT6A+2kArUqjp8IwWo2tCJXoMzXBne2XQIWKqMiN4Q==", - "requires": { - "@parcel/diagnostic": "2.6.2", - "@parcel/logger": "2.6.2", - "@parcel/types": "2.6.2", - "@parcel/utils": "2.6.2", - "chrome-trace-event": "^1.0.2", - "nullthrows": "^1.1.1" - } - }, - "@percy/cli": { - "version": "1.27.4", - "resolved": "https://registry.npmjs.org/@percy/cli/-/cli-1.27.4.tgz", - "integrity": "sha512-eIM44ejCMFc/S2W7X0htV+lvvmf63x5CaBpsSoQ9LRc/W02zHVAwQYdFFUowZEK6G1EwJEPIUnDxuuEx9PLG5A==", - "dev": true, - "requires": { - "@percy/cli-app": "1.27.4", - "@percy/cli-build": "1.27.4", - "@percy/cli-command": "1.27.4", - "@percy/cli-config": "1.27.4", - "@percy/cli-exec": "1.27.4", - "@percy/cli-snapshot": "1.27.4", - "@percy/cli-upload": "1.27.4", - "@percy/client": "1.27.4", - "@percy/logger": "1.27.4" - } - }, - "@percy/cli-app": { - "version": "1.27.4", - "resolved": "https://registry.npmjs.org/@percy/cli-app/-/cli-app-1.27.4.tgz", - "integrity": "sha512-av/s6K2QmQgq4SCQQ+3lmteNHeQtIpMeBjMfSgxs9zeBoPVOMx5hXrdsi6l7ChvOLXyYfzl/TbEuwrSDXiA8mw==", - "dev": true, - "requires": { - "@percy/cli-command": "1.27.4", - "@percy/cli-exec": "1.27.4" - } - }, - "@percy/cli-build": { - "version": "1.27.4", - "resolved": "https://registry.npmjs.org/@percy/cli-build/-/cli-build-1.27.4.tgz", - "integrity": "sha512-tzCAcV0sAw608Gr/Q6NtPvVkA8dnIehMzvEXNIN3WP9DkprOgu7MYuexN0fZXf4vSroDWYXT87pHYP8YrrnDag==", - "dev": true, - "requires": { - "@percy/cli-command": "1.27.4" - } - }, - "@percy/cli-command": { - "version": "1.27.4", - "resolved": "https://registry.npmjs.org/@percy/cli-command/-/cli-command-1.27.4.tgz", - "integrity": "sha512-YDKeeOr1MvksDOnc2ZKQ/XuERGrWwzuT/vWZ9it8L+0SyPj28UbklDu0e9zBgPsSDfxJlIvsWXRuHNGHsweKXg==", - "dev": true, - "requires": { - "@percy/config": "1.27.4", - "@percy/core": "1.27.4", - "@percy/logger": "1.27.4" - } - }, - "@percy/cli-config": { - "version": "1.27.4", - "resolved": "https://registry.npmjs.org/@percy/cli-config/-/cli-config-1.27.4.tgz", - "integrity": "sha512-wFtQwPw4LEqpcZ6ac6WtejyGrvrrzzLdyvXNvsCPQLE47qXnXVXJ+E99k9KGcjavtUuPxrbWtX996Fz9Fb5hoQ==", - "dev": true, - "requires": { - "@percy/cli-command": "1.27.4" - } - }, - "@percy/cli-exec": { - "version": "1.27.4", - "resolved": "https://registry.npmjs.org/@percy/cli-exec/-/cli-exec-1.27.4.tgz", - "integrity": "sha512-aSDLvzXXdwJso+p5iI4iTOa7AYzgFdRoqY9ij/R5aAL9juNkvG5QatB1bkUNbJabKFe16t7iigt4eJnlS0R13A==", - "dev": true, - "requires": { - "@percy/cli-command": "1.27.4", - "cross-spawn": "^7.0.3", - "which": "^2.0.2" - } - }, - "@percy/cli-snapshot": { - "version": "1.27.4", - "resolved": "https://registry.npmjs.org/@percy/cli-snapshot/-/cli-snapshot-1.27.4.tgz", - "integrity": "sha512-dDT2UpeP6X5NcMdj3AKLhHGmnobwzlXsHa52C+ne3kg3HSZgaXH9OsNY866Xe7onvcsZxvnRKDYHmWW6kC3cKQ==", - "dev": true, - "requires": { - "@percy/cli-command": "1.27.4", - "yaml": "^2.0.0" - } - }, - "@percy/cli-upload": { - "version": "1.27.4", - "resolved": "https://registry.npmjs.org/@percy/cli-upload/-/cli-upload-1.27.4.tgz", - "integrity": "sha512-+4mcEOUydFubyMWVzQjPV79sL1Jar95SR7Yr7Vp4FBoE0iq0CbaHoJtyOWDfwvHYYp4rRjVMxpY0ha3jnmF0mA==", - "dev": true, - "requires": { - "@percy/cli-command": "1.27.4", - "fast-glob": "^3.2.11", - "image-size": "^1.0.0" - } - }, - "@percy/client": { - "version": "1.27.4", - "resolved": "https://registry.npmjs.org/@percy/client/-/client-1.27.4.tgz", - "integrity": "sha512-1F8ulTJhfk4/Lgj1Cn0blaRd8vTRJDxahAGseTbfrnZ2PHsftPZ65/5nCHPtpdD/2CE8N5COBQscGTMQQO+hBA==", - "dev": true, - "requires": { - "@percy/env": "1.27.4", - "@percy/logger": "1.27.4" - } - }, - "@percy/config": { - "version": "1.27.4", - "resolved": "https://registry.npmjs.org/@percy/config/-/config-1.27.4.tgz", - "integrity": "sha512-mlgiOdzdSfUSx9FskVIjmbT/iHbTif0Ow5evZQJTT1W0xgHOBWDCZyhINdsqulSBw+K1PNhHsu1J0h2ijxF4uA==", - "dev": true, - "requires": { - "@percy/logger": "1.27.4", - "ajv": "^8.6.2", - "cosmiconfig": "^8.0.0", - "yaml": "^2.0.0" - } - }, - "@percy/core": { - "version": "1.27.4", - "resolved": "https://registry.npmjs.org/@percy/core/-/core-1.27.4.tgz", - "integrity": "sha512-WdsA4zlPgXl9xj+a5WW2wA20iU6VTDmRq5sgsYNSuPzZfQB2I5Cecgvb55p86dhlUTbPJrC76daQKzDTGe0hfA==", - "dev": true, - "requires": { - "@percy/client": "1.27.4", - "@percy/config": "1.27.4", - "@percy/dom": "1.27.4", - "@percy/logger": "1.27.4", - "@percy/webdriver-utils": "1.27.4", - "content-disposition": "^0.5.4", - "cross-spawn": "^7.0.3", - "extract-zip": "^2.0.1", - "fast-glob": "^3.2.11", - "micromatch": "^4.0.4", - "mime-types": "^2.1.34", - "path-to-regexp": "^6.2.0", - "rimraf": "^3.0.2", - "ws": "^8.0.0" - } - }, - "@percy/dom": { - "version": "1.27.4", - "resolved": "https://registry.npmjs.org/@percy/dom/-/dom-1.27.4.tgz", - "integrity": "sha512-pwPDx3e9y7uRobVlEya8xu3BB3GeXbC74kQ6pPM/wFYDwi/Dg8DJywCsj5Nko/7QuhXP02rYgatkbREOIRxDnA==", - "dev": true - }, - "@percy/env": { - "version": "1.27.4", - "resolved": "https://registry.npmjs.org/@percy/env/-/env-1.27.4.tgz", - "integrity": "sha512-Xl2VUpljOrlCvAp/+KfmN9NUcTGpRdXPa1U9zSIyBnV/oAksp3/CK5EPpKZX/f8xUUkTp78UPaG99sEMA8VvXQ==", - "dev": true, - "requires": { - "@percy/logger": "1.27.4" - } - }, - "@percy/logger": { - "version": "1.27.4", - "resolved": "https://registry.npmjs.org/@percy/logger/-/logger-1.27.4.tgz", - "integrity": "sha512-AwXqYaDkHaq1TPkP+ByB8rjvH9ddvkAH9tFd2kmq8AeFFXZ0amAPSbm6u090OUtdHWjRmKQK9JjSouBxEh0aRw==", - "dev": true - }, - "@percy/sdk-utils": { - "version": "1.27.4", - "resolved": "https://registry.npmjs.org/@percy/sdk-utils/-/sdk-utils-1.27.4.tgz", - "integrity": "sha512-vhPcdtmJlvTYJ5VOqiVzo02ujdtBFNw1/Bj+2ybiZgn7PkCDPFcITfXoWWPea319EIibGC4ZHjWHctRBgtW/tQ==", - "dev": true - }, - "@percy/webdriver-utils": { - "version": "1.27.4", - "resolved": "https://registry.npmjs.org/@percy/webdriver-utils/-/webdriver-utils-1.27.4.tgz", - "integrity": "sha512-pZOOYns8Fikh2qlbxO16DxFEnCrnFIoLpE7iz4M9jXxOfk16VZF1PWknMChSr5NqG2I9k2OMjizUE2j8zvtl2Q==", - "dev": true, - "requires": { - "@percy/config": "1.27.4", - "@percy/sdk-utils": "1.27.4" - } - }, - "@philpl/buble": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@philpl/buble/-/buble-0.19.7.tgz", - "integrity": "sha512-wKTA2DxAGEW+QffRQvOhRQ0VBiYU2h2p8Yc1oBNlqSKws48/8faxqKNIuub0q4iuyTuLwtB8EkwiKwhlfV1PBA==", - "requires": { - "acorn": "^6.1.1", - "acorn-class-fields": "^0.2.1", - "acorn-dynamic-import": "^4.0.0", - "acorn-jsx": "^5.0.1", - "chalk": "^2.4.2", - "magic-string": "^0.25.2", - "minimist": "^1.2.0", - "os-homedir": "^1.0.1", - "regexpu-core": "^4.5.4" - } - }, - "@pmmmwh/react-refresh-webpack-plugin": { - "version": "0.5.11", - "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.11.tgz", - "integrity": "sha512-7j/6vdTym0+qZ6u4XbSAxrWBGYSdCfTzySkj7WAFgDLmSyWlOrWvpyzxlFh5jtw9dn0oL/jtW+06XfFiisN3JQ==", - "requires": { - "ansi-html-community": "^0.0.8", - "common-path-prefix": "^3.0.0", - "core-js-pure": "^3.23.3", - "error-stack-parser": "^2.0.6", - "find-up": "^5.0.0", - "html-entities": "^2.1.0", - "loader-utils": "^2.0.4", - "schema-utils": "^3.0.0", - "source-map": "^0.7.3" - }, - "dependencies": { - "loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - } - } - }, - "@polka/url": { - "version": "1.0.0-next.23", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.23.tgz", - "integrity": "sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==", - "dev": true - }, - "@prisma/client": { - "version": "4.16.2", - "resolved": "https://registry.npmjs.org/@prisma/client/-/client-4.16.2.tgz", - "integrity": "sha512-qCoEyxv1ZrQ4bKy39GnylE8Zq31IRmm8bNhNbZx7bF2cU5aiCCnSa93J2imF88MBjn7J9eUQneNxUQVJdl/rPQ==", - "requires": { - "@prisma/engines-version": "4.16.1-1.4bc8b6e1b66cb932731fb1bdbbc550d1e010de81" - } - }, - "@prisma/engines": { - "version": "4.16.2", - "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-4.16.2.tgz", - "integrity": "sha512-vx1nxVvN4QeT/cepQce68deh/Turxy5Mr+4L4zClFuK1GlxN3+ivxfuv+ej/gvidWn1cE1uAhW7ALLNlYbRUAw==", - "devOptional": true - }, - "@prisma/engines-version": { - "version": "4.16.1-1.4bc8b6e1b66cb932731fb1bdbbc550d1e010de81", - "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-4.16.1-1.4bc8b6e1b66cb932731fb1bdbbc550d1e010de81.tgz", - "integrity": "sha512-q617EUWfRIDTriWADZ4YiWRZXCa/WuhNgLTVd+HqWLffjMSPzyM5uOWoauX91wvQClSKZU4pzI4JJLQ9Kl62Qg==" - }, - "@prisma/prisma-fmt-wasm": { - "version": "4.13.0-52.integration-mobc-upstream-d100a9299fcb9cffb064301998e9a94ce2722c49", - "resolved": "https://registry.npmjs.org/@prisma/prisma-fmt-wasm/-/prisma-fmt-wasm-4.13.0-52.integration-mobc-upstream-d100a9299fcb9cffb064301998e9a94ce2722c49.tgz", - "integrity": "sha512-12dZRXW36s3hRHLeD8c4S3o1ZZcnFt1NxhBrSlYepnMxatfkj5S8aIDP/G+zzUqucB//kGZZWNX3eUcmxMsEqw==", - "dev": true - }, - "@react-aria/focus": { - "version": "3.16.0", - "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.16.0.tgz", - "integrity": "sha512-GP6EYI07E8NKQQcXHjpIocEU0vh0oi0Vcsd+/71fKS0NnTR0TUOEeil0JuuQ9ymkmPDTu51Aaaa4FxVsuN/23A==", - "requires": { - "@react-aria/interactions": "^3.20.1", - "@react-aria/utils": "^3.23.0", - "@react-types/shared": "^3.22.0", - "@swc/helpers": "^0.5.0", - "clsx": "^2.0.0" - }, - "dependencies": { - "@swc/helpers": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.6.tgz", - "integrity": "sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA==", - "requires": { - "tslib": "^2.4.0" - } - }, - "clsx": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz", - "integrity": "sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==" - } - } - }, - "@react-aria/i18n": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/@react-aria/i18n/-/i18n-3.10.0.tgz", - "integrity": "sha512-sviD5Y1pLPG49HHRmVjR+5nONrp0HK219+nu9Y7cDfUhXu2EjyhMS9t/n9/VZ69hHChZ2PnHYLEE2visu9CuCg==", - "requires": { - "@internationalized/date": "^3.5.1", - "@internationalized/message": "^3.1.1", - "@internationalized/number": "^3.5.0", - "@internationalized/string": "^3.2.0", - "@react-aria/ssr": "^3.9.1", - "@react-aria/utils": "^3.23.0", - "@react-types/shared": "^3.22.0", - "@swc/helpers": "^0.5.0" - }, - "dependencies": { - "@swc/helpers": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.6.tgz", - "integrity": "sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA==", - "requires": { - "tslib": "^2.4.0" - } - } - } - }, - "@react-aria/interactions": { - "version": "3.20.1", - "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.20.1.tgz", - "integrity": "sha512-PLNBr87+SzRhe9PvvF9qvzYeP4ofTwfKSorwmO+hjr3qoczrSXf4LRQlb27wB6hF10C7ZE/XVbUI1lj4QQrZ/g==", - "requires": { - "@react-aria/ssr": "^3.9.1", - "@react-aria/utils": "^3.23.0", - "@react-types/shared": "^3.22.0", - "@swc/helpers": "^0.5.0" - }, - "dependencies": { - "@swc/helpers": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.6.tgz", - "integrity": "sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA==", - "requires": { - "tslib": "^2.4.0" - } - } - } - }, - "@react-aria/overlays": { - "version": "3.20.0", - "resolved": "https://registry.npmjs.org/@react-aria/overlays/-/overlays-3.20.0.tgz", - "integrity": "sha512-2m7MpRJL5UucbEuu08lMHsiFJoDowkJV4JAIFBZYK1NzVH0vF/A+w9HRNM7jRwx2DUxE+iIsZnl8yKV/7KY8OQ==", - "requires": { - "@react-aria/focus": "^3.16.0", - "@react-aria/i18n": "^3.10.0", - "@react-aria/interactions": "^3.20.1", - "@react-aria/ssr": "^3.9.1", - "@react-aria/utils": "^3.23.0", - "@react-aria/visually-hidden": "^3.8.8", - "@react-stately/overlays": "^3.6.4", - "@react-types/button": "^3.9.1", - "@react-types/overlays": "^3.8.4", - "@react-types/shared": "^3.22.0", - "@swc/helpers": "^0.5.0" - }, - "dependencies": { - "@swc/helpers": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.6.tgz", - "integrity": "sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA==", - "requires": { - "tslib": "^2.4.0" - } - } - } - }, - "@react-aria/ssr": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.1.tgz", - "integrity": "sha512-NqzkLFP8ZVI4GSorS0AYljC13QW2sc8bDqJOkBvkAt3M8gbcAXJWVRGtZBCRscki9RZF+rNlnPdg0G0jYkhJcg==", - "requires": { - "@swc/helpers": "^0.5.0" - }, - "dependencies": { - "@swc/helpers": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.6.tgz", - "integrity": "sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA==", - "requires": { - "tslib": "^2.4.0" - } - } - } - }, - "@react-aria/tooltip": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@react-aria/tooltip/-/tooltip-3.7.0.tgz", - "integrity": "sha512-+u9Sftkfe09IDyPEnbbreFKS50vh9X/WTa7n1u2y3PenI9VreLpUR6czyzda4BlvQ95e9jQz1cVxUjxTNaZmBw==", - "requires": { - "@react-aria/focus": "^3.16.0", - "@react-aria/interactions": "^3.20.1", - "@react-aria/utils": "^3.23.0", - "@react-stately/tooltip": "^3.4.6", - "@react-types/shared": "^3.22.0", - "@react-types/tooltip": "^3.4.6", - "@swc/helpers": "^0.5.0" - }, - "dependencies": { - "@swc/helpers": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.6.tgz", - "integrity": "sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA==", - "requires": { - "tslib": "^2.4.0" - } - } - } - }, - "@react-aria/utils": { - "version": "3.23.0", - "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.23.0.tgz", - "integrity": "sha512-fJA63/VU4iQNT8WUvrmll3kvToqMurD69CcgVmbQ56V7ZbvlzFi44E7BpnoaofScYLLtFWRjVdaHsohT6O/big==", - "requires": { - "@react-aria/ssr": "^3.9.1", - "@react-stately/utils": "^3.9.0", - "@react-types/shared": "^3.22.0", - "@swc/helpers": "^0.5.0", - "clsx": "^2.0.0" - }, - "dependencies": { - "@swc/helpers": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.6.tgz", - "integrity": "sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA==", - "requires": { - "tslib": "^2.4.0" - } - }, - "clsx": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz", - "integrity": "sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==" - } - } - }, - "@react-aria/visually-hidden": { - "version": "3.8.8", - "resolved": "https://registry.npmjs.org/@react-aria/visually-hidden/-/visually-hidden-3.8.8.tgz", - "integrity": "sha512-Cn2PYKD4ijGDtF0+dvsh8qa4y7KTNAlkTG6h20r8Q+6UTyRNmtE2/26QEaApRF8CBiNy9/BZC/ZC4FK2OjvCoA==", - "requires": { - "@react-aria/interactions": "^3.20.1", - "@react-aria/utils": "^3.23.0", - "@react-types/shared": "^3.22.0", - "@swc/helpers": "^0.5.0" - }, - "dependencies": { - "@swc/helpers": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.6.tgz", - "integrity": "sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA==", - "requires": { - "tslib": "^2.4.0" - } - } - } - }, - "@react-stately/overlays": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/@react-stately/overlays/-/overlays-3.6.4.tgz", - "integrity": "sha512-tHEaoAGpE9dSnsskqLPVKum59yGteoSqsniTopodM+miQozbpPlSjdiQnzGLroy5Afx5OZYClE616muNHUILXA==", - "requires": { - "@react-stately/utils": "^3.9.0", - "@react-types/overlays": "^3.8.4", - "@swc/helpers": "^0.5.0" - }, - "dependencies": { - "@swc/helpers": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.6.tgz", - "integrity": "sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA==", - "requires": { - "tslib": "^2.4.0" - } - } - } - }, - "@react-stately/tooltip": { - "version": "3.4.6", - "resolved": "https://registry.npmjs.org/@react-stately/tooltip/-/tooltip-3.4.6.tgz", - "integrity": "sha512-uL93bmsXf+OOgpKLPEKfpDH4z+MK2CuqlqVxx7rshN0vjWOSoezE5nzwgee90+RpDrLNNNWTNa7n+NkDRpI1jA==", - "requires": { - "@react-stately/overlays": "^3.6.4", - "@react-types/tooltip": "^3.4.6", - "@swc/helpers": "^0.5.0" - }, - "dependencies": { - "@swc/helpers": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.6.tgz", - "integrity": "sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA==", - "requires": { - "tslib": "^2.4.0" - } - } - } - }, - "@react-stately/utils": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.9.0.tgz", - "integrity": "sha512-yPKFY1F88HxuZ15BG2qwAYxtpE4HnIU0Ofi4CuBE0xC6I8mwo4OQjDzi+DZjxQngM9D6AeTTD6F1V8gkozA0Gw==", - "requires": { - "@swc/helpers": "^0.5.0" - }, - "dependencies": { - "@swc/helpers": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.6.tgz", - "integrity": "sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA==", - "requires": { - "tslib": "^2.4.0" - } - } - } - }, - "@react-types/button": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/@react-types/button/-/button-3.9.1.tgz", - "integrity": "sha512-bf9iTar3PtqnyV9rA+wyFyrskZKhwmOuOd/ifYIjPs56YNVXWH5Wfqj6Dx3xdFBgtKx8mEVQxVhoX+WkHX+rtw==", - "requires": { - "@react-types/shared": "^3.22.0" - } - }, - "@react-types/overlays": { - "version": "3.8.4", - "resolved": "https://registry.npmjs.org/@react-types/overlays/-/overlays-3.8.4.tgz", - "integrity": "sha512-pfgNlQnbF6RB/R2oSxyqAP3Uzz0xE/k5q4n5gUeCDNLjY5qxFHGE8xniZZ503nZYw6VBa9XMN1efDOKQyeiO0w==", - "requires": { - "@react-types/shared": "^3.22.0" - } - }, - "@react-types/shared": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.22.0.tgz", - "integrity": "sha512-yVOekZWbtSmmiThGEIARbBpnmUIuePFlLyctjvCbgJgGhz8JnEJOipLQ/a4anaWfzAgzSceQP8j/K+VOOePleA==", - "requires": {} - }, - "@react-types/tooltip": { - "version": "3.4.6", - "resolved": "https://registry.npmjs.org/@react-types/tooltip/-/tooltip-3.4.6.tgz", - "integrity": "sha512-RaZewdER7ZcsNL99RhVHs8kSLyzIBkwc0W6eFZrxST2MD9J5GzkVWRhIiqtFOd5U1aYnxdJ6woq72Ef+le6Vfw==", - "requires": { - "@react-types/overlays": "^3.8.4", - "@react-types/shared": "^3.22.0" - } - }, - "@sideway/address": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", - "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", - "requires": { - "@hapi/hoek": "^9.0.0" - } - }, - "@sideway/formula": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", - "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==" - }, - "@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" - }, - "@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==" - }, - "@sindresorhus/slugify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-1.1.2.tgz", - "integrity": "sha512-V9nR/W0Xd9TSGXpZ4iFUcFGhuOJtZX82Fzxj1YISlbSgKvIiNa7eLEZrT0vAraPOt++KHauIVNYgGRgjc13dXA==", - "requires": { - "@sindresorhus/transliterate": "^0.1.1", - "escape-string-regexp": "^4.0.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" - } - } - }, - "@sindresorhus/transliterate": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@sindresorhus/transliterate/-/transliterate-0.1.2.tgz", - "integrity": "sha512-5/kmIOY9FF32nicXH+5yLNTX4NJ4atl7jRgqAJuIn/iyDFXBktOKDxCvyGE/EzmF4ngSUvjXxQUQlQiZ5lfw+w==", - "requires": { - "escape-string-regexp": "^2.0.0", - "lodash.deburr": "^4.1.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" - } - } - }, - "@swc/helpers": { - "version": "0.4.36", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.36.tgz", - "integrity": "sha512-5lxnyLEYFskErRPenYItLRSge5DjrJngYKdVjRSrWfza9G6KkgHEXi0vUZiyUeMU5JfXH1YnvXZzSp8ul88o2Q==", - "requires": { - "legacy-swc-helpers": "npm:@swc/helpers@=0.4.14", - "tslib": "^2.4.0" - } - }, - "@szmarczak/http-timer": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", - "requires": { - "defer-to-connect": "^2.0.0" - } - }, - "@tokenizer/token": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" - }, - "@trysound/sax": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==" - }, - "@turist/fetch": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turist/fetch/-/fetch-7.2.0.tgz", - "integrity": "sha512-2x7EGw+6OJ29phunsbGvtxlNmSfcuPcyYudkMbi8gARCP9eJ1CtuMvnVUHL//O9Ixi9SJiug8wNt6lj86pN8XQ==", - "requires": { - "@types/node-fetch": "2" - } - }, - "@turist/time": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/@turist/time/-/time-0.0.2.tgz", - "integrity": "sha512-qLOvfmlG2vCVw5fo/oz8WAZYlpe5a5OurgTj3diIxJCdjRHpapC+vQCz3er9LV79Vcat+DifBjeAhOAdmndtDQ==" - }, - "@types/cacheable-request": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", - "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", - "requires": { - "@types/http-cache-semantics": "*", - "@types/keyv": "^3.1.4", - "@types/node": "*", - "@types/responselike": "^1.0.0" - } - }, - "@types/common-tags": { - "version": "1.8.4", - "resolved": "https://registry.npmjs.org/@types/common-tags/-/common-tags-1.8.4.tgz", - "integrity": "sha512-S+1hLDJPjWNDhcGxsxEbepzaxWqURP/o+3cP4aa2w7yBXgdcmKGQtZzP8JbyfOd0m+33nh+8+kvxYE2UJtBDkg==" - }, - "@types/component-emitter": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.14.tgz", - "integrity": "sha512-lmPil1g82wwWg/qHSxMWkSKyJGQOK+ejXeMAAWyxNtVUD0/Ycj2maL63RAqpxVfdtvTfZkRnqzB0A9ft59y69g==" - }, - "@types/configstore": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@types/configstore/-/configstore-2.1.1.tgz", - "integrity": "sha512-YY+hm3afkDHeSM2rsFXxeZtu0garnusBWNG1+7MknmDWQHqcH2w21/xOU9arJUi8ch4qyFklidANLCu3ihhVwQ==" - }, - "@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" - }, - "@types/cors": { - "version": "2.8.17", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", - "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", - "requires": { - "@types/node": "*" - } - }, - "@types/debug": { - "version": "0.0.30", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-0.0.30.tgz", - "integrity": "sha512-orGL5LXERPYsLov6CWs3Fh6203+dXzJkR7OnddIr2514Hsecwc8xRpzCapshBbKFImCsvS/mk6+FWiN5LyZJAQ==" - }, - "@types/eslint": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.29.0.tgz", - "integrity": "sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==", - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", - "requires": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" - }, - "@types/get-port": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@types/get-port/-/get-port-3.2.0.tgz", - "integrity": "sha512-TiNg8R1kjDde5Pub9F9vCwZA/BNW9HeXP5b9j7Qucqncy/McfPZ6xze/EyBdXS5FhMIGN6Fx3vg75l5KHy3V1Q==" - }, - "@types/glob": { - "version": "5.0.38", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-5.0.38.tgz", - "integrity": "sha512-rTtf75rwyP9G2qO5yRpYtdJ6aU1QqEhWbtW55qEgquEDa6bXW0s2TWZfDm02GuppjEozOWG/F2UnPq5hAQb+gw==", - "requires": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "@types/hast": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.8.tgz", - "integrity": "sha512-aMIqAlFd2wTIDZuvLbhUT+TGvMxrNC8ECUIVtH6xxy0sQLs3iu6NO8Kp/VT5je7i5ufnebXzdV1dNDMnvaH6IQ==", - "requires": { - "@types/unist": "^2" - } - }, - "@types/hoist-non-react-statics": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz", - "integrity": "sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==", - "dev": true, - "requires": { - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0" - } - }, - "@types/http-cache-semantics": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", - "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==" - }, - "@types/http-proxy": { - "version": "1.17.14", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", - "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", - "requires": { - "@types/node": "*" - } - }, - "@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" - }, - "@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" - }, - "@types/keyv": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", - "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", - "requires": { - "@types/node": "*" - } - }, - "@types/lodash": { - "version": "4.14.202", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz", - "integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==" - }, - "@types/mdast": { - "version": "3.0.15", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", - "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", - "requires": { - "@types/unist": "^2" - } - }, - "@types/minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==" - }, - "@types/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==" - }, - "@types/mkdirp": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@types/mkdirp/-/mkdirp-0.5.2.tgz", - "integrity": "sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg==", - "requires": { - "@types/node": "*" - } - }, - "@types/node": { - "version": "17.0.45", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", - "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==" - }, - "@types/node-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-bQVlnMLFJ2d35DkPNjEPmd9ueO/rh5EiaZt2bhqiSarPjZIuIV6bPQVqcrEyvNo+AfTrRGVazle1tl597w3gfA==", - "requires": { - "@types/node": "*", - "form-data": "^4.0.0" - } - }, - "@types/normalize-package-data": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", - "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==" - }, - "@types/parse-json": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", - "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==" - }, - "@types/parse5": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz", - "integrity": "sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==" - }, - "@types/prop-types": { - "version": "15.7.11", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", - "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==" - }, - "@types/q": { - "version": "1.5.8", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.8.tgz", - "integrity": "sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw==" - }, - "@types/reach__router": { - "version": "1.3.14", - "resolved": "https://registry.npmjs.org/@types/reach__router/-/reach__router-1.3.14.tgz", - "integrity": "sha512-2iOQZbwfw1ZYwYK+dRp7D1b8kU6GlFPJ/iEt33zDYxfId5CAKT7vX3lN/XmJ+FaMZ3FyB99tPgfajcmZnTqdtg==", - "requires": { - "@types/react": "*" - } - }, - "@types/react": { - "version": "18.2.28", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.28.tgz", - "integrity": "sha512-ad4aa/RaaJS3hyGz0BGegdnSRXQBkd1CCYDCdNjBPg90UUpLgo+WlJqb9fMYUxtehmzF3PJaTWqRZjko6BRzBg==", - "requires": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "@types/react-dom": { - "version": "18.2.13", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.13.tgz", - "integrity": "sha512-eJIUv7rPP+EC45uNYp/ThhSpE16k22VJUknt5OLoH9tbXoi8bMhwLf5xRuWMywamNbWzhrSmU7IBJfPup1+3fw==", - "dev": true, - "requires": { - "@types/react": "*" - } - }, - "@types/react-instantsearch-core": { - "version": "6.26.8", - "resolved": "https://registry.npmjs.org/@types/react-instantsearch-core/-/react-instantsearch-core-6.26.8.tgz", - "integrity": "sha512-XjsnIaafuT3AnnpFhriv3vt9rGytIVv7+1bHEu185VRjbF0pN5znM4ggRCY8JmTDRPvGWe01qSV48oUW37apGQ==", - "dev": true, - "requires": { - "@types/react": "*", - "algoliasearch": ">=4", - "algoliasearch-helper": ">=3" - } - }, - "@types/react-instantsearch-dom": { - "version": "6.12.4", - "resolved": "https://registry.npmjs.org/@types/react-instantsearch-dom/-/react-instantsearch-dom-6.12.4.tgz", - "integrity": "sha512-J5CeXqg5Iq7KWVeVnLBO8Yk52+joJRknipC2RHiTVzEM+c5xa58EqJH3Y9Whrjbz/USZd62XlL852lt0T8zxUA==", - "dev": true, - "requires": { - "@types/react": "*", - "@types/react-instantsearch-core": "*" - } - }, - "@types/react-transition-group": { - "version": "4.4.9", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.9.tgz", - "integrity": "sha512-ZVNmWumUIh5NhH8aMD9CR2hdW0fNuYInlocZHaZ+dgk/1K49j1w/HoAuK1ki+pgscQrOFRTlXeoURtuzEkV3dg==", - "requires": { - "@types/react": "*" - } - }, - "@types/responselike": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", - "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", - "requires": { - "@types/node": "*" - } - }, - "@types/rimraf": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@types/rimraf/-/rimraf-2.0.5.tgz", - "integrity": "sha512-YyP+VfeaqAyFmXoTh3HChxOQMyjByRMsHU7kc5KOJkSlXudhMhQIALbYV7rHh/l8d2lX3VUQzprrcAgWdRuU8g==", - "requires": { - "@types/glob": "*", - "@types/node": "*" - } - }, - "@types/sax": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.7.tgz", - "integrity": "sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==", - "requires": { - "@types/node": "*" - } - }, - "@types/scheduler": { - "version": "0.16.8", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", - "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==" - }, - "@types/sharp": { - "version": "0.30.5", - "resolved": "https://registry.npmjs.org/@types/sharp/-/sharp-0.30.5.tgz", - "integrity": "sha512-EhO29617AIBqxoVtpd1qdBanWpspk/kD2B6qTFRJ31Q23Rdf+DNU1xlHSwtqvwq1vgOqBwq1i38SX+HGCymIQg==", - "requires": { - "@types/node": "*" - } - }, - "@types/styled-components": { - "version": "5.1.28", - "resolved": "https://registry.npmjs.org/@types/styled-components/-/styled-components-5.1.28.tgz", - "integrity": "sha512-nu0VKNybkjvUqJAXWtRqKd7j3iRUl8GbYSTvZNuIBJcw/HUp1Y4QUXNLlj7gcnRV/t784JnHAlvRnSnE3nPbJA==", - "dev": true, - "requires": { - "@types/hoist-non-react-statics": "*", - "@types/react": "*", - "csstype": "^3.0.2" - } - }, - "@types/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-gVC1InwyVrO326wbBZw+AO3u2vRXz/iRWq9jYhpG4W8LXyIgDv3ZmcLQ5Q4Gs+gFMyqx+viFoFT+l3p61QFCmQ==" - }, - "@types/unist": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", - "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" - }, - "@types/vfile": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/vfile/-/vfile-3.0.2.tgz", - "integrity": "sha512-b3nLFGaGkJ9rzOcuXRfHkZMdjsawuDD0ENL9fzTophtBg8FJHSGbH7daXkEpcwy3v7Xol3pAvsmlYyFhR4pqJw==", - "requires": { - "@types/node": "*", - "@types/unist": "*", - "@types/vfile-message": "*" - } - }, - "@types/vfile-message": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/vfile-message/-/vfile-message-2.0.0.tgz", - "integrity": "sha512-GpTIuDpb9u4zIO165fUy9+fXcULdD8HFRNli04GehoMVbeNq7D6OBnqSmg3lxZnC+UvgUhEWKxdKiwYUkGltIw==", - "requires": { - "vfile-message": "*" - } - }, - "@types/yauzl": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", - "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", - "dev": true, - "optional": true, - "requires": { - "@types/node": "*" - } - }, - "@types/yoga-layout": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@types/yoga-layout/-/yoga-layout-1.9.2.tgz", - "integrity": "sha512-S9q47ByT2pPvD65IvrWp7qppVMpk9WGMbVq9wbWZOHg6tnXSD4vyhao6nOSBwwfDdV2p3Kx9evA9vI+XWTfDvw==" - }, - "@typescript-eslint/eslint-plugin": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", - "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", - "requires": { - "@typescript-eslint/experimental-utils": "4.33.0", - "@typescript-eslint/scope-manager": "4.33.0", - "debug": "^4.3.1", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.1.0", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - } - }, - "@typescript-eslint/experimental-utils": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", - "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", - "requires": { - "@types/json-schema": "^7.0.7", - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - } - }, - "@typescript-eslint/parser": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", - "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", - "requires": { - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "debug": "^4.3.1" - } - }, - "@typescript-eslint/scope-manager": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", - "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", - "requires": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0" - } - }, - "@typescript-eslint/types": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", - "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==" - }, - "@typescript-eslint/typescript-estree": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", - "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", - "requires": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - } - }, - "@typescript-eslint/visitor-keys": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", - "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", - "requires": { - "@typescript-eslint/types": "4.33.0", - "eslint-visitor-keys": "^2.0.0" - } - }, - "@vercel/webpack-asset-relocator-loader": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/@vercel/webpack-asset-relocator-loader/-/webpack-asset-relocator-loader-1.7.3.tgz", - "integrity": "sha512-vizrI18v8Lcb1PmNNUBz7yxPxxXoOeuaVEjTG9MjvDrphjiSxFZrRJ5tIghk+qdLFRCXI5HBCshgobftbmrC5g==", - "requires": { - "resolve": "^1.10.0" - } - }, - "@webassemblyjs/ast": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", - "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", - "requires": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==" - }, - "@webassemblyjs/helper-api-error": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" - }, - "@webassemblyjs/helper-buffer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", - "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==" - }, - "@webassemblyjs/helper-numbers": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", - "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", - "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", - "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", - "requires": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", - "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", - "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" - }, - "@webassemblyjs/wasm-edit": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", - "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", - "requires": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-opt": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6", - "@webassemblyjs/wast-printer": "1.11.6" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", - "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", - "requires": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", - "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", - "requires": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", - "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", - "requires": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", - "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", - "requires": { - "@webassemblyjs/ast": "1.11.6", - "@xtuc/long": "4.2.2" - } - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" - }, - "abortcontroller-polyfill": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz", - "integrity": "sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==" - }, - "accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, - "acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" - }, - "acorn-class-fields": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/acorn-class-fields/-/acorn-class-fields-0.2.1.tgz", - "integrity": "sha512-US/kqTe0H8M4LN9izoL+eykVAitE68YMuYZ3sHn3i1fjniqR7oQ3SPvuMK/VT1kjOQHrx5Q88b90TtOKgAv2hQ==", - "requires": {} - }, - "acorn-dynamic-import": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", - "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", - "requires": {} - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "requires": {} - }, - "acorn-walk": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.0.tgz", - "integrity": "sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==", - "dev": true - }, - "add-filename-increment": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/add-filename-increment/-/add-filename-increment-1.0.0.tgz", - "integrity": "sha512-pFV8VZX8jxuVMIycKvGZkWF/ihnUubu9lbQVnOnZWp7noVxbKQTNj7zG2y9fXdPcuZ6lAN3Drr517HaivGCjdQ==", - "requires": { - "strip-filename-increment": "^2.0.1" - } - }, - "address": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", - "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==" - }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "algoliasearch": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.14.2.tgz", - "integrity": "sha512-ngbEQonGEmf8dyEh5f+uOIihv4176dgbuOZspiuhmTTBRBuzWu3KCGHre6uHj5YyuC7pNvQGzB6ZNJyZi0z+Sg==", - "requires": { - "@algolia/cache-browser-local-storage": "4.14.2", - "@algolia/cache-common": "4.14.2", - "@algolia/cache-in-memory": "4.14.2", - "@algolia/client-account": "4.14.2", - "@algolia/client-analytics": "4.14.2", - "@algolia/client-common": "4.14.2", - "@algolia/client-personalization": "4.14.2", - "@algolia/client-search": "4.14.2", - "@algolia/logger-common": "4.14.2", - "@algolia/logger-console": "4.14.2", - "@algolia/requester-browser-xhr": "4.14.2", - "@algolia/requester-common": "4.14.2", - "@algolia/requester-node-http": "4.14.2", - "@algolia/transporter": "4.14.2" - } - }, - "algoliasearch-helper": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.15.0.tgz", - "integrity": "sha512-DGUnK3TGtDQsaUE4ayF/LjSN0DGsuYThB8WBgnnDY0Wq04K6lNVruO3LfqJOgSfDiezp+Iyt8Tj4YKHi+/ivSA==", - "requires": { - "@algolia/events": "^4.0.1" - } - }, - "anser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/anser/-/anser-2.1.1.tgz", - "integrity": "sha512-nqLm4HxOTpeLOxcmB3QWmV5TcDFhW9y/fyQ+hivtDFcK4OQ+pQ5fzPnXHM1Mfcm0VkLtvVi1TCPr++Qy0Q/3EQ==" - }, - "ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", - "requires": { - "string-width": "^4.1.0" - } - }, - "ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==" - }, - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "requires": { - "type-fest": "^0.21.3" - }, - "dependencies": { - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" - } - } - }, - "ansi-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==" - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "append-field": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", - "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==" - }, - "application-config-path": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/application-config-path/-/application-config-path-0.1.1.tgz", - "integrity": "sha512-zy9cHePtMP0YhwG+CfHm0bgwdnga2X3gZexpdCwEj//dpb+TKajtiC8REEUJUSq6Ab4f9cgNy2l8ObXzCXFkEw==" - }, - "arch": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==" - }, - "arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "aria-query": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", - "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", - "requires": { - "dequal": "^2.0.3" - } - }, - "array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", - "requires": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" - } - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, - "array-includes": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", - "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-string": "^1.0.7" - } - }, - "array-iterate": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-1.1.4.tgz", - "integrity": "sha512-sNRaPGh9nnmdC8Zf+pT3UqP8rnWj5Hf9wiFGsX3wUQ2yVSIhO2ShFwCoceIPpB41QF6i2OEmrHmCo36xronCVA==" - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" - }, - "array.prototype.findlastindex": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", - "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.2.1" - } - }, - "array.prototype.flat": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - } - }, - "array.prototype.flatmap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - } - }, - "array.prototype.reduce": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.6.tgz", - "integrity": "sha512-UW+Mz8LG/sPSU8jRDCjVr6J/ZKAGpHfwrZ6kWTG5qCxIEiXdVshqGnu5vEZA8S1y6X4aCSbQZ0/EEsfvEvBiSg==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.7" - } - }, - "array.prototype.tosorted": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz", - "integrity": "sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.2.1" - } - }, - "arraybuffer.prototype.slice": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", - "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", - "requires": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", - "is-shared-array-buffer": "^1.0.2" - } - }, - "arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==" - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" - }, - "ast-types-flow": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", - "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==" - }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" - }, - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==" - }, - "async-cache": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/async-cache/-/async-cache-1.1.0.tgz", - "integrity": "sha512-YDQc4vBn5NFhY6g6HhVshyi3Fy9+SQ5ePnE7JLDJn1DoL+i7ER+vMwtTNOYk9leZkYMnOwpBCWqyLDPw8Aig8g==", - "requires": { - "lru-cache": "^4.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" - } - } - }, - "asynciterator.prototype": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", - "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", - "requires": { - "has-symbols": "^1.0.3" - } - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" - }, - "auto-bind": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-4.0.0.tgz", - "integrity": "sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==" - }, - "autoprefixer": { - "version": "10.4.16", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", - "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==", - "requires": { - "browserslist": "^4.21.10", - "caniuse-lite": "^1.0.30001538", - "fraction.js": "^4.3.6", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - } - }, - "available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" - }, - "axe-core": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz", - "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==" - }, - "axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "requires": { - "follow-redirects": "^1.14.0" - } - }, - "axobject-query": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", - "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", - "requires": { - "dequal": "^2.0.3" - } - }, - "babel-eslint": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", - "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", - "peer": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0", - "eslint-visitor-keys": "^1.0.0", - "resolve": "^1.12.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "peer": true - } - } - }, - "babel-jsx-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/babel-jsx-utils/-/babel-jsx-utils-1.1.0.tgz", - "integrity": "sha512-Mh1j/rw4xM9T3YICkw22aBQ78FhsHdsmlb9NEk4uVAFBOg+Ez9ZgXXHugoBPCZui3XLomk/7/JBBH4daJqTkQQ==" - }, - "babel-loader": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", - "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", - "requires": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "requires": {} - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "requires": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "babel-plugin-add-module-exports": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-1.0.4.tgz", - "integrity": "sha512-g+8yxHUZ60RcyaUpfNzy56OtWW+x9cyEe9j+CranqLiqbju2yf/Cy6ZtYK40EZxtrdHllzlVZgLmcOUCTlJ7Jg==" - }, - "babel-plugin-apply-mdx-type-prop": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.22.tgz", - "integrity": "sha512-VefL+8o+F/DfK24lPZMtJctrCVOfgbqLAGZSkxwhazQv4VxPg3Za/i40fu22KR2m8eEda+IfSOlPLUSIiLcnCQ==", - "requires": { - "@babel/helper-plugin-utils": "7.10.4", - "@mdx-js/util": "1.6.22" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", - "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" - } - } - }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "requires": { - "object.assign": "^4.1.0" - } - }, - "babel-plugin-extract-import-names": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.22.tgz", - "integrity": "sha512-yJ9BsJaISua7d8zNT7oRG1ZLBJCIdZ4PZqmH8qa9N5AK01ifk3fnkc98AXhtzE7UkfCsEumvoQWgoYLhOnJ7jQ==", - "requires": { - "@babel/helper-plugin-utils": "7.10.4" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", - "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" - } - } - }, - "babel-plugin-lodash": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/babel-plugin-lodash/-/babel-plugin-lodash-3.3.4.tgz", - "integrity": "sha512-yDZLjK7TCkWl1gpBeBGmuaDIFhZKmkoL+Cu2MUUjv5VxUZx/z7tBGBCBcQs5RI1Bkz5LLmNdjx7paOyQtMovyg==", - "requires": { - "@babel/helper-module-imports": "^7.0.0-beta.49", - "@babel/types": "^7.0.0-beta.49", - "glob": "^7.1.1", - "lodash": "^4.17.10", - "require-package-name": "^2.0.1" - } - }, - "babel-plugin-macros": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", - "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", - "requires": { - "@babel/runtime": "^7.12.5", - "cosmiconfig": "^7.0.0", - "resolve": "^1.19.0" - }, - "dependencies": { - "cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" - } - } - }, - "babel-plugin-polyfill-corejs2": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz", - "integrity": "sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==", - "requires": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.3", - "semver": "^6.3.1" - } - }, - "babel-plugin-polyfill-corejs3": { - "version": "0.8.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz", - "integrity": "sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==", - "requires": { - "@babel/helper-define-polyfill-provider": "^0.4.3", - "core-js-compat": "^3.33.1" - } - }, - "babel-plugin-polyfill-regenerator": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz", - "integrity": "sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==", - "requires": { - "@babel/helper-define-polyfill-provider": "^0.4.3" - } - }, - "babel-plugin-remove-graphql-queries": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/babel-plugin-remove-graphql-queries/-/babel-plugin-remove-graphql-queries-4.25.0.tgz", - "integrity": "sha512-enyqRNRrn7vTG3nwg1V+XhoAJIyUv3ZukQCs5KbHOK+WNDDiGZQzIG+FCiZFACScdZBJWyx7TYRYbOFJZ/KEGg==", - "requires": { - "@babel/runtime": "^7.15.4", - "@babel/types": "^7.15.4", - "gatsby-core-utils": "^3.25.0" - } - }, - "babel-plugin-styled-components": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.7.tgz", - "integrity": "sha512-i7YhvPgVqRKfoQ66toiZ06jPNA3p6ierpfUuEWxNF+fV27Uv5gxBkf8KZLHUCc1nFA9j6+80pYoIpqCeyW3/bA==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-module-imports": "^7.16.0", - "babel-plugin-syntax-jsx": "^6.18.0", - "lodash": "^4.17.11", - "picomatch": "^2.3.0" - } - }, - "babel-plugin-syntax-jsx": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", - "integrity": "sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==" - }, - "babel-plugin-syntax-trailing-function-commas": { - "version": "7.0.0-beta.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz", - "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==" - }, - "babel-plugin-transform-react-remove-prop-types": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", - "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==" - }, - "babel-preset-fbjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz", - "integrity": "sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==", - "requires": { - "@babel/plugin-proposal-class-properties": "^7.0.0", - "@babel/plugin-proposal-object-rest-spread": "^7.0.0", - "@babel/plugin-syntax-class-properties": "^7.0.0", - "@babel/plugin-syntax-flow": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.0.0", - "@babel/plugin-syntax-object-rest-spread": "^7.0.0", - "@babel/plugin-transform-arrow-functions": "^7.0.0", - "@babel/plugin-transform-block-scoped-functions": "^7.0.0", - "@babel/plugin-transform-block-scoping": "^7.0.0", - "@babel/plugin-transform-classes": "^7.0.0", - "@babel/plugin-transform-computed-properties": "^7.0.0", - "@babel/plugin-transform-destructuring": "^7.0.0", - "@babel/plugin-transform-flow-strip-types": "^7.0.0", - "@babel/plugin-transform-for-of": "^7.0.0", - "@babel/plugin-transform-function-name": "^7.0.0", - "@babel/plugin-transform-literals": "^7.0.0", - "@babel/plugin-transform-member-expression-literals": "^7.0.0", - "@babel/plugin-transform-modules-commonjs": "^7.0.0", - "@babel/plugin-transform-object-super": "^7.0.0", - "@babel/plugin-transform-parameters": "^7.0.0", - "@babel/plugin-transform-property-literals": "^7.0.0", - "@babel/plugin-transform-react-display-name": "^7.0.0", - "@babel/plugin-transform-react-jsx": "^7.0.0", - "@babel/plugin-transform-shorthand-properties": "^7.0.0", - "@babel/plugin-transform-spread": "^7.0.0", - "@babel/plugin-transform-template-literals": "^7.0.0", - "babel-plugin-syntax-trailing-function-commas": "^7.0.0-beta.0" - } - }, - "babel-preset-gatsby": { - "version": "2.25.0", - "resolved": "https://registry.npmjs.org/babel-preset-gatsby/-/babel-preset-gatsby-2.25.0.tgz", - "integrity": "sha512-KFfSTDAkY87/Myq1KIUk9cVphWZem/08U7ps9Hiotbo6Mge/lL6ggh3xKP9SdR5Le4DLLyIUI7a4ILrAVacYDg==", - "requires": { - "@babel/plugin-proposal-class-properties": "^7.14.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5", - "@babel/plugin-proposal-optional-chaining": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-transform-classes": "^7.15.4", - "@babel/plugin-transform-runtime": "^7.15.0", - "@babel/plugin-transform-spread": "^7.14.6", - "@babel/preset-env": "^7.15.4", - "@babel/preset-react": "^7.14.0", - "@babel/runtime": "^7.15.4", - "babel-plugin-dynamic-import-node": "^2.3.3", - "babel-plugin-macros": "^3.1.0", - "babel-plugin-transform-react-remove-prop-types": "^0.4.24", - "gatsby-core-utils": "^3.25.0", - "gatsby-legacy-polyfills": "^2.25.0" - } - }, - "backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==" - }, - "bail": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", - "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==" - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "base-x": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", - "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "base64-arraybuffer": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", - "integrity": "sha512-a1eIFi4R9ySrbiMuyTGx5e92uRH5tQY6kArNcFaKBUleIoLjdjBg7Zxm3Mqm3Kmkf27HLR/1fnxX9q8GQ7Iavg==" - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, - "base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==" - }, - "better-opn": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-2.1.1.tgz", - "integrity": "sha512-kIPXZS5qwyKiX/HcRvDYfmBQUa8XP17I0mYZZ0y4UhpYOSvtsLHDYqmomS+Mj20aDvD3knEiQ0ecQy2nhio3yA==", - "requires": { - "open": "^7.0.3" - } - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" - }, - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, - "body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "requires": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "dependencies": { - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "requires": { - "side-channel": "^1.0.4" - } - } - } - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" - }, - "boxen": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", - "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", - "requires": { - "ansi-align": "^3.0.0", - "camelcase": "^6.2.0", - "chalk": "^4.1.0", - "cli-boxes": "^2.2.1", - "string-width": "^4.2.2", - "type-fest": "^0.20.2", - "widest-line": "^3.1.0", - "wrap-ansi": "^7.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "requires": { - "fill-range": "^7.0.1" - } - }, - "browserslist": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", - "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", - "requires": { - "caniuse-lite": "^1.0.30001541", - "electron-to-chromium": "^1.4.535", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.13" - } - }, - "bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "requires": { - "node-int64": "^0.4.0" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==", - "dev": true - }, - "busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "requires": { - "streamsearch": "^1.1.0" - } - }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==" - }, - "cache-manager": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/cache-manager/-/cache-manager-2.11.1.tgz", - "integrity": "sha512-XhUuc9eYwkzpK89iNewFwtvcDYMUsvtwzHeyEOPJna/WsVsXcrzsA1ft2M0QqPNunEzLhNCYPo05tEfG+YuNow==", - "requires": { - "async": "1.5.2", - "lodash.clonedeep": "4.5.0", - "lru-cache": "4.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.0.tgz", - "integrity": "sha512-WKhDkjlLwzE8jAQdQlsxLUQTPXLCKX/4cJk6s5AlRtJkDBk0IKH5O51bVDH61K9N4bhbbyvLM6EiOuE8ovApPA==", - "requires": { - "pseudomap": "^1.0.1", - "yallist": "^2.0.0" - } - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" - } - } - }, - "cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==" - }, - "cacheable-request": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", - "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^6.0.1", - "responselike": "^2.0.0" - } - }, - "call-bind": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", - "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", - "requires": { - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.1", - "set-function-length": "^1.1.1" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - }, - "camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "requires": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" - }, - "camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==" - }, - "camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", - "requires": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - }, - "quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==" - } - } - }, - "camelize": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz", - "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==" - }, - "caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "requires": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "caniuse-lite": { - "version": "1.0.30001565", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001565.tgz", - "integrity": "sha512-xrE//a3O7TP0vaJ8ikzkD2c2NgcVUvsEe2IvFTntV4Yd1Z9FVzh+gW+enX96L0psrbaFMcVcH2l90xNuGDWc8w==" - }, - "capital-case": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", - "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case-first": "^2.0.2" - } - }, - "ccount": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", - "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==" - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "change-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", - "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", - "requires": { - "camel-case": "^4.1.2", - "capital-case": "^1.0.4", - "constant-case": "^3.0.4", - "dot-case": "^3.0.4", - "header-case": "^2.0.4", - "no-case": "^3.0.4", - "param-case": "^3.0.4", - "pascal-case": "^3.1.2", - "path-case": "^3.0.4", - "sentence-case": "^3.0.4", - "snake-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "change-case-all": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/change-case-all/-/change-case-all-1.0.14.tgz", - "integrity": "sha512-CWVm2uT7dmSHdO/z1CXT/n47mWonyypzBbuCy5tN7uMg22BsfkhwT6oHmFCAk+gL1LOOxhdbB9SZz3J1KTY3gA==", - "requires": { - "change-case": "^4.1.2", - "is-lower-case": "^2.0.2", - "is-upper-case": "^2.0.2", - "lower-case": "^2.0.2", - "lower-case-first": "^2.0.2", - "sponge-case": "^1.0.1", - "swap-case": "^2.0.2", - "title-case": "^3.0.3", - "upper-case": "^2.0.2", - "upper-case-first": "^2.0.2" - } - }, - "character-entities": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", - "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==" - }, - "character-entities-html4": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.4.tgz", - "integrity": "sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g==" - }, - "character-entities-legacy": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", - "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==" - }, - "character-reference-invalid": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", - "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==" - }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" - }, - "cheerio": { - "version": "1.0.0-rc.12", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", - "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", - "requires": { - "cheerio-select": "^2.1.0", - "dom-serializer": "^2.0.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "htmlparser2": "^8.0.1", - "parse5": "^7.0.0", - "parse5-htmlparser2-tree-adapter": "^7.0.0" - } - }, - "cheerio-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", - "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", - "requires": { - "boolbase": "^1.0.0", - "css-select": "^5.1.0", - "css-what": "^6.1.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1" - } - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" - }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" - }, - "classnames": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", - "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" - }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true - }, - "cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==" - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", - "dev": true, - "requires": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" - } - }, - "cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==" - }, - "clipboardy": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz", - "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==", - "requires": { - "arch": "^2.1.1", - "execa": "^1.0.0", - "is-wsl": "^2.1.1" - }, - "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "requires": { - "pump": "^3.0.0" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==" - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "requires": { - "path-key": "^2.0.0" - } - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==" - }, - "semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==" - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - } - } - }, - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==" - }, - "clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "dependencies": { - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "requires": { - "isobject": "^3.0.1" - } - } - } - }, - "clone-response": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", - "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", - "requires": { - "mimic-response": "^1.0.0" - } - }, - "clsx": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", - "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==" - }, - "coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", - "requires": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - } - }, - "collapse-white-space": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz", - "integrity": "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==" - }, - "color": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", - "requires": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" - }, - "dependencies": { - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - } - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "colord": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" - }, - "colorette": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", - "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==" - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "comma-separated-tokens": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", - "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==" - }, - "command-exists": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", - "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==" - }, - "commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true - }, - "common-path-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", - "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==" - }, - "common-tags": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", - "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==" - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" - }, - "component-emitter": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", - "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==" - }, - "compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "requires": { - "mime-db": ">= 1.43.0 < 2" - } - }, - "compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "requires": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "configstore": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", - "requires": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" - } - }, - "confusing-browser-globals": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", - "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==" - }, - "constant-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", - "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case": "^2.0.2" - } - }, - "content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "requires": { - "safe-buffer": "5.2.1" - } - }, - "content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" - }, - "convert-hrtime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/convert-hrtime/-/convert-hrtime-3.0.0.tgz", - "integrity": "sha512-7V+KqSvMiHp8yWDuwfww06XleMWVVB9b9tURBx+G7UTADuo5hYPuowKloz4OzOqbPezxgo+fdQ1522WzPG4OeA==" - }, - "convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" - }, - "cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - }, - "copy-to-clipboard": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz", - "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==", - "requires": { - "toggle-selection": "^1.0.6" - } - }, - "core-js": { - "version": "3.33.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.33.3.tgz", - "integrity": "sha512-lo0kOocUlLKmm6kv/FswQL8zbkH7mVsLJ/FULClOhv8WRVmKLVcs6XPNQAzstfeJTCHMyButEwG+z1kHxHoDZw==" - }, - "core-js-compat": { - "version": "3.33.3", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.3.tgz", - "integrity": "sha512-cNzGqFsh3Ot+529GIXacjTJ7kegdt5fPXxCBVS1G0iaZpuo/tBz399ymceLJveQhFFZ8qThHiP3fzuoQjKN2ow==", - "requires": { - "browserslist": "^4.22.1" - } - }, - "core-js-pure": { - "version": "3.33.3", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.33.3.tgz", - "integrity": "sha512-taJ00IDOP+XYQEA2dAe4ESkmHt1fL8wzYDo3mRWQey8uO9UojlBFMneA65kMyxfYP7106c6LzWaq7/haDT6BCQ==" - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "requires": { - "object-assign": "^4", - "vary": "^1" - } - }, - "cosmiconfig": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", - "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", - "dev": true, - "requires": { - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0", - "path-type": "^4.0.0" - } - }, - "create-gatsby": { - "version": "2.25.0", - "resolved": "https://registry.npmjs.org/create-gatsby/-/create-gatsby-2.25.0.tgz", - "integrity": "sha512-96Kl/6Far2j65/vFv/6Mb9+T+/4oW8hlC3UmdfjgBgUIzTPFmezY1ygPu2dfCKjprWkArB8DpE7EsAaJoRKB1Q==", - "requires": { - "@babel/runtime": "^7.15.4" - } - }, - "cross-fetch": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", - "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", - "requires": { - "node-fetch": "^2.6.12" - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" - }, - "css-color-keywords": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", - "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==" - }, - "css-declaration-sorter": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz", - "integrity": "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==", - "requires": {} - }, - "css-loader": { - "version": "5.2.7", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.2.7.tgz", - "integrity": "sha512-Q7mOvpBNBG7YrVGMxRxcBJZFL75o+cH2abNASdibkj/fffYD8qWbInZrD0S9ccI6vZclF3DsHE7njGlLtaHbhg==", - "requires": { - "icss-utils": "^5.1.0", - "loader-utils": "^2.0.0", - "postcss": "^8.2.15", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.1.0", - "schema-utils": "^3.0.0", - "semver": "^7.3.5" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - } - }, - "css-minimizer-webpack-plugin": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-2.0.0.tgz", - "integrity": "sha512-cG/uc94727tx5pBNtb1Sd7gvUPzwmcQi1lkpfqTpdkuNq75hJCw7bIVsCNijLm4dhDcr1atvuysl2rZqOG8Txw==", - "requires": { - "cssnano": "^5.0.0", - "jest-worker": "^26.3.0", - "p-limit": "^3.0.2", - "postcss": "^8.2.9", - "schema-utils": "^3.0.0", - "serialize-javascript": "^5.0.1", - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "css-select": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", - "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", - "requires": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" - } - }, - "css-select-base-adapter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" - }, - "css-selector-parser": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-1.4.1.tgz", - "integrity": "sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g==" - }, - "css-to-react-native": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz", - "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==", - "requires": { - "camelize": "^1.0.0", - "css-color-keywords": "^1.0.0", - "postcss-value-parser": "^4.0.2" - } - }, - "css-tree": { - "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", - "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", - "requires": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" - }, - "css.escape": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", - "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==" - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" - }, - "cssfilter": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", - "integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==" - }, - "cssnano": { - "version": "5.1.15", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz", - "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==", - "requires": { - "cssnano-preset-default": "^5.2.14", - "lilconfig": "^2.0.3", - "yaml": "^1.10.2" - }, - "dependencies": { - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" - } - } - }, - "cssnano-preset-default": { - "version": "5.2.14", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz", - "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==", - "requires": { - "css-declaration-sorter": "^6.3.1", - "cssnano-utils": "^3.1.0", - "postcss-calc": "^8.2.3", - "postcss-colormin": "^5.3.1", - "postcss-convert-values": "^5.1.3", - "postcss-discard-comments": "^5.1.2", - "postcss-discard-duplicates": "^5.1.0", - "postcss-discard-empty": "^5.1.1", - "postcss-discard-overridden": "^5.1.0", - "postcss-merge-longhand": "^5.1.7", - "postcss-merge-rules": "^5.1.4", - "postcss-minify-font-values": "^5.1.0", - "postcss-minify-gradients": "^5.1.1", - "postcss-minify-params": "^5.1.4", - "postcss-minify-selectors": "^5.2.1", - "postcss-normalize-charset": "^5.1.0", - "postcss-normalize-display-values": "^5.1.0", - "postcss-normalize-positions": "^5.1.1", - "postcss-normalize-repeat-style": "^5.1.1", - "postcss-normalize-string": "^5.1.0", - "postcss-normalize-timing-functions": "^5.1.0", - "postcss-normalize-unicode": "^5.1.1", - "postcss-normalize-url": "^5.1.0", - "postcss-normalize-whitespace": "^5.1.1", - "postcss-ordered-values": "^5.1.3", - "postcss-reduce-initial": "^5.1.2", - "postcss-reduce-transforms": "^5.1.0", - "postcss-svgo": "^5.1.0", - "postcss-unique-selectors": "^5.1.1" - } - }, - "cssnano-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", - "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", - "requires": {} - }, - "csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "requires": { - "css-tree": "^1.1.2" - }, - "dependencies": { - "css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "requires": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - } - }, - "mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" - }, - "d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "requires": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "damerau-levenshtein": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", - "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==" - }, - "dataloader": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-1.4.0.tgz", - "integrity": "sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==" - }, - "date-fns": { - "version": "2.30.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", - "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", - "requires": { - "@babel/runtime": "^7.21.0" - } - }, - "debounce": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", - "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", - "dev": true - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" - }, - "decamelize-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", - "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", - "requires": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "dependencies": { - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==" - } - } - }, - "decode-uri-component": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==" - }, - "decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "requires": { - "mimic-response": "^3.1.0" - }, - "dependencies": { - "mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" - } - } - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" - }, - "deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==" - }, - "defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==" - }, - "define-data-property": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", - "requires": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - } - }, - "define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==" - }, - "define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "requires": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" - }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" - }, - "dependency-graph": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", - "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==" - }, - "dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==" - }, - "destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" - }, - "detab": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detab/-/detab-2.0.4.tgz", - "integrity": "sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g==", - "requires": { - "repeat-string": "^1.5.4" - } - }, - "detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==" - }, - "detect-port": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz", - "integrity": "sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==", - "requires": { - "address": "^1.0.1", - "debug": "4" - } - }, - "detect-port-alt": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", - "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", - "requires": { - "address": "^1.0.1", - "debug": "^2.6.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "devcert": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/devcert/-/devcert-1.2.2.tgz", - "integrity": "sha512-UsLqvtJGPiGwsIZnJINUnFYaWgK7CroreGRndWHZkRD58tPFr3pVbbSyHR8lbh41+azR4jKvuNZ+eCoBZGA5kA==", - "requires": { - "@types/configstore": "^2.1.1", - "@types/debug": "^0.0.30", - "@types/get-port": "^3.2.0", - "@types/glob": "^5.0.34", - "@types/lodash": "^4.14.92", - "@types/mkdirp": "^0.5.2", - "@types/node": "^8.5.7", - "@types/rimraf": "^2.0.2", - "@types/tmp": "^0.0.33", - "application-config-path": "^0.1.0", - "command-exists": "^1.2.4", - "debug": "^3.1.0", - "eol": "^0.9.1", - "get-port": "^3.2.0", - "glob": "^7.1.2", - "is-valid-domain": "^0.1.6", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "password-prompt": "^1.0.4", - "rimraf": "^2.6.2", - "sudo-prompt": "^8.2.0", - "tmp": "^0.0.33", - "tslib": "^1.10.0" - }, - "dependencies": { - "@types/node": { - "version": "8.10.66", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz", - "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==" - }, - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "requires": { - "glob": "^7.1.3" - } - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "requires": { - "path-type": "^4.0.0" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "requires": { - "esutils": "^2.0.2" - } - }, - "dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", - "requires": { - "utila": "~0.4" - } - }, - "dom-helpers": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", - "requires": { - "@babel/runtime": "^7.8.7", - "csstype": "^3.0.2" - } - }, - "dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "requires": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - } - }, - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" - }, - "domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "requires": { - "domelementtype": "^2.3.0" - } - }, - "domutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", - "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", - "requires": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" - } - }, - "dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "requires": { - "is-obj": "^2.0.0" - } - }, - "dotenv": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", - "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==" - }, - "dotenv-expand": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", - "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==" - }, - "duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" - }, - "duplexer3": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", - "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==" - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "electron-to-chromium": { - "version": "1.4.594", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.594.tgz", - "integrity": "sha512-xT1HVAu5xFn7bDfkjGQi9dNpMqGchUkebwf1GL7cZN32NSwwlHRPMSDJ1KN6HkS0bWUtndbSQZqvpQftKG2uFQ==" - }, - "emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" - }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "requires": { - "once": "^1.4.0" - } - }, - "engine.io": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-4.1.2.tgz", - "integrity": "sha512-t5z6zjXuVLhXDMiFJPYsPOWEER8B0tIsD3ETgw19S1yg9zryvUfY3Vhtk3Gf4sihw/bQGIqQ//gjvVlu+Ca0bQ==", - "requires": { - "accepts": "~1.3.4", - "base64id": "2.0.0", - "cookie": "~0.4.1", - "cors": "~2.8.5", - "debug": "~4.3.1", - "engine.io-parser": "~4.0.0", - "ws": "~7.4.2" - }, - "dependencies": { - "ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "requires": {} - } - } - }, - "engine.io-client": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-4.1.4.tgz", - "integrity": "sha512-843fqAdKeUMFqKi1sSjnR11tJ4wi8sIefu6+JC1OzkkJBmjtc/gM/rZ53tJfu5Iae/3gApm5veoS+v+gtT0+Fg==", - "requires": { - "base64-arraybuffer": "0.1.4", - "component-emitter": "~1.3.0", - "debug": "~4.3.1", - "engine.io-parser": "~4.0.1", - "has-cors": "1.1.0", - "parseqs": "0.0.6", - "parseuri": "0.0.6", - "ws": "~7.4.2", - "xmlhttprequest-ssl": "~1.6.2", - "yeast": "0.1.2" - }, - "dependencies": { - "ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "requires": {} - } - } - }, - "engine.io-parser": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.3.tgz", - "integrity": "sha512-xEAAY0msNnESNPc00e19y5heTPX4y/TJ36gr8t1voOaNmTojP9b3oK3BbJLFufW2XFPQaaijpFewm2g2Um3uqA==", - "requires": { - "base64-arraybuffer": "0.1.4" - } - }, - "enhanced-resolve": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", - "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "enquirer": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", - "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", - "requires": { - "ansi-colors": "^4.1.1", - "strip-ansi": "^6.0.1" - } - }, - "entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" - }, - "envinfo": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.0.tgz", - "integrity": "sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg==" - }, - "eol": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/eol/-/eol-0.9.1.tgz", - "integrity": "sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg==" - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "error-stack-parser": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", - "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", - "requires": { - "stackframe": "^1.3.4" - } - }, - "es-abstract": { - "version": "1.22.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", - "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", - "requires": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.2", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.5", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.2", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.12", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "safe-array-concat": "^1.0.1", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", - "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.13" - } - }, - "es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" - }, - "es-iterator-helpers": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", - "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==", - "requires": { - "asynciterator.prototype": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.1", - "es-set-tostringtag": "^2.0.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.2.1", - "globalthis": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "iterator.prototype": "^1.1.2", - "safe-array-concat": "^1.0.1" - } - }, - "es-module-lexer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", - "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==" - }, - "es-set-tostringtag": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", - "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", - "requires": { - "get-intrinsic": "^1.2.2", - "has-tostringtag": "^1.0.0", - "hasown": "^2.0.0" - } - }, - "es-shim-unscopables": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", - "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", - "requires": { - "hasown": "^2.0.0" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "es5-ext": { - "version": "0.10.62", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", - "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", - "requires": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "next-tick": "^1.1.0" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" - }, - "es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "requires": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", - "requires": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - }, - "escape-goat": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", - "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==" - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" - }, - "eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", - "requires": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" - }, - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "requires": { - "eslint-visitor-keys": "^1.1.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" - } - } - }, - "globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", - "requires": { - "type-fest": "^0.20.2" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - } - }, - "eslint-config-react-app": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-6.0.0.tgz", - "integrity": "sha512-bpoAAC+YRfzq0dsTk+6v9aHm/uqnDwayNAXleMypGl6CpxI9oXXscVHo4fk3eJPIn+rsbtNetB4r/ZIidFIE8A==", - "requires": { - "confusing-browser-globals": "^1.0.10" - } - }, - "eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "requires": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "eslint-module-utils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", - "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", - "requires": { - "debug": "^3.2.7" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "eslint-plugin-flowtype": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-5.10.0.tgz", - "integrity": "sha512-vcz32f+7TP+kvTUyMXZmCnNujBQZDNmcqPImw8b9PZ+16w1Qdm6ryRuYZYVaG9xRqqmAPr2Cs9FAX5gN+x/bjw==", - "requires": { - "lodash": "^4.17.15", - "string-natural-compare": "^3.0.1" - } - }, - "eslint-plugin-import": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.0.tgz", - "integrity": "sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==", - "requires": { - "array-includes": "^3.1.7", - "array.prototype.findlastindex": "^1.2.3", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.8.0", - "hasown": "^2.0.0", - "is-core-module": "^2.13.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.7", - "object.groupby": "^1.0.1", - "object.values": "^1.1.7", - "semver": "^6.3.1", - "tsconfig-paths": "^3.14.2" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "requires": { - "esutils": "^2.0.2" - } - } - } - }, - "eslint-plugin-jsx-a11y": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz", - "integrity": "sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==", - "requires": { - "@babel/runtime": "^7.23.2", - "aria-query": "^5.3.0", - "array-includes": "^3.1.7", - "array.prototype.flatmap": "^1.3.2", - "ast-types-flow": "^0.0.8", - "axe-core": "=4.7.0", - "axobject-query": "^3.2.1", - "damerau-levenshtein": "^1.0.8", - "emoji-regex": "^9.2.2", - "es-iterator-helpers": "^1.0.15", - "hasown": "^2.0.0", - "jsx-ast-utils": "^3.3.5", - "language-tags": "^1.0.9", - "minimatch": "^3.1.2", - "object.entries": "^1.1.7", - "object.fromentries": "^2.0.7" - } - }, - "eslint-plugin-react": { - "version": "7.33.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", - "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", - "requires": { - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "array.prototype.tosorted": "^1.1.1", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.12", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "object.hasown": "^1.1.2", - "object.values": "^1.1.6", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.4", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.8" - }, - "dependencies": { - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "requires": { - "esutils": "^2.0.2" - } - }, - "prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", - "requires": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - } - } - }, - "eslint-plugin-react-hooks": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", - "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", - "requires": {} - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "dependencies": { - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - } - } - }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "requires": { - "eslint-visitor-keys": "^2.0.0" - } - }, - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" - }, - "eslint-webpack-plugin": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-2.7.0.tgz", - "integrity": "sha512-bNaVVUvU4srexGhVcayn/F4pJAz19CWBkKoMx7aSQ4wtTbZQCnG5O9LHCE42mM+JSKOUp7n6vd5CIwzj7lOVGA==", - "requires": { - "@types/eslint": "^7.29.0", - "arrify": "^2.0.1", - "jest-worker": "^27.5.1", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "schema-utils": "^3.1.1" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - } - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" - }, - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" - } - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - }, - "esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "requires": { - "estraverse": "^5.1.0" - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "requires": { - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" - }, - "eval": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/eval/-/eval-0.1.8.tgz", - "integrity": "sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==", - "requires": { - "@types/node": "*", - "require-like": ">= 0.1.1" - } - }, - "event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", - "requires": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "event-source-polyfill": { - "version": "1.0.25", - "resolved": "https://registry.npmjs.org/event-source-polyfill/-/event-source-polyfill-1.0.25.tgz", - "integrity": "sha512-hQxu6sN1Eq4JjoI7ITdQeGGUN193A2ra83qC0Ltm9I2UJVAten3OFVN6k5RX4YWeCS0BoC8xg/5czOCIHVosQg==" - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "dependencies": { - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" - } - } - }, - "expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==" - }, - "express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", - "requires": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - }, - "qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "requires": { - "side-channel": "^1.0.4" - } - } - } - }, - "express-graphql": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/express-graphql/-/express-graphql-0.12.0.tgz", - "integrity": "sha512-DwYaJQy0amdy3pgNtiTDuGGM2BLdj+YO2SgbKoLliCfuHv3VVTt7vNG/ZqK2hRYjtYHE2t2KB705EU94mE64zg==", - "requires": { - "accepts": "^1.3.7", - "content-type": "^1.0.4", - "http-errors": "1.8.0", - "raw-body": "^2.4.1" - }, - "dependencies": { - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==" - }, - "http-errors": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.0.tgz", - "integrity": "sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A==", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==" - }, - "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" - } - } - }, - "express-http-proxy": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/express-http-proxy/-/express-http-proxy-1.6.3.tgz", - "integrity": "sha512-/l77JHcOUrDUX8V67E287VEUQT0lbm71gdGVoodnlWBziarYKgMcpqT7xvh/HM8Jv52phw8Bd8tY+a7QjOr7Yg==", - "requires": { - "debug": "^3.0.1", - "es6-promise": "^4.1.1", - "raw-body": "^2.3.0" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "ext": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", - "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", - "requires": { - "type": "^2.7.2" - }, - "dependencies": { - "type": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "dependencies": { - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "requires": { - "os-tmpdir": "~1.0.2" - } - } - } - }, - "extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dev": true, - "requires": { - "@types/yauzl": "^2.9.1", - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" - }, - "fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==" - }, - "fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "requires": { - "reusify": "^1.0.4" - } - }, - "fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "requires": { - "bser": "2.1.1" - } - }, - "fbjs": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.5.tgz", - "integrity": "sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==", - "requires": { - "cross-fetch": "^3.1.5", - "fbjs-css-vars": "^1.0.0", - "loose-envify": "^1.0.0", - "object-assign": "^4.1.0", - "promise": "^7.1.1", - "setimmediate": "^1.0.5", - "ua-parser-js": "^1.0.35" - } - }, - "fbjs-css-vars": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", - "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" - }, - "fd": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/fd/-/fd-0.0.3.tgz", - "integrity": "sha512-iAHrIslQb3U68OcMSP0kkNWabp7sSN6d2TBSb2JO3gcLJVDd4owr/hKM4SFJovFOUeeXeItjYgouEDTMWiVAnA==" - }, - "fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "dev": true, - "requires": { - "pend": "~1.2.0" - } - }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "requires": { - "flat-cache": "^3.0.4" - } - }, - "file-loader": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", - "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - } - }, - "file-type": { - "version": "16.5.4", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz", - "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==", - "requires": { - "readable-web-to-node-stream": "^3.0.0", - "strtok3": "^6.2.4", - "token-types": "^4.1.1" - } - }, - "filename-reserved-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", - "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==" - }, - "filenamify": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", - "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", - "requires": { - "filename-reserved-regex": "^2.0.0", - "strip-outer": "^1.0.1", - "trim-repeated": "^1.0.0" - } - }, - "filesize": { - "version": "8.0.7", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", - "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==" - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "filter-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", - "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==" - }, - "finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-root": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==" - }, - "flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "requires": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==" - }, - "follow-redirects": { - "version": "1.15.3", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", - "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==" - }, - "for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "requires": { - "is-callable": "^1.1.3" - } - }, - "fork-ts-checker-webpack-plugin": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz", - "integrity": "sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==", - "requires": { - "@babel/code-frame": "^7.8.3", - "@types/json-schema": "^7.0.5", - "chalk": "^4.1.0", - "chokidar": "^3.4.2", - "cosmiconfig": "^6.0.0", - "deepmerge": "^4.2.2", - "fs-extra": "^9.0.0", - "glob": "^7.1.6", - "memfs": "^3.1.2", - "minimatch": "^3.0.4", - "schema-utils": "2.7.0", - "semver": "^7.3.2", - "tapable": "^1.0.0" - }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "requires": {} - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" - } - }, - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "schema-utils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", - "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", - "requires": { - "@types/json-schema": "^7.0.4", - "ajv": "^6.12.2", - "ajv-keywords": "^3.4.1" - } - }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - }, - "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" - } - } - }, - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" - }, - "fraction.js": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==" - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" - }, - "fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, - "fs-exists-cached": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-exists-cached/-/fs-exists-cached-1.0.0.tgz", - "integrity": "sha512-kSxoARUDn4F2RPXX48UXnaFKwVU7Ivd/6qpzZL29MCDmr9sTvybv4gFCp+qaI4fM9m0z9fgz/yJvi56GAz+BZg==" - }, - "fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "fs-monkey": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", - "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==" - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "optional": true - }, - "function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" - }, - "function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" - } - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==" - }, - "functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" - }, - "gatsby": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/gatsby/-/gatsby-4.22.1.tgz", - "integrity": "sha512-5alRl+7RlK9kVTX4wwECx8XD181Ti5HTgCK5IL0uFBJlqeA6UDLOY+S9noOQgvoFgzwApPOGoiV5sKlSTxPnfw==", - "requires": { - "@babel/code-frame": "^7.14.0", - "@babel/core": "^7.15.5", - "@babel/eslint-parser": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/parser": "^7.15.5", - "@babel/runtime": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4", - "@builder.io/partytown": "^0.5.2", - "@gatsbyjs/reach-router": "^1.3.9", - "@gatsbyjs/webpack-hot-middleware": "^2.25.2", - "@graphql-codegen/add": "^3.1.1", - "@graphql-codegen/core": "^2.5.1", - "@graphql-codegen/plugin-helpers": "^2.4.2", - "@graphql-codegen/typescript": "^2.4.8", - "@graphql-codegen/typescript-operations": "^2.3.5", - "@graphql-tools/code-file-loader": "^7.2.14", - "@graphql-tools/load": "^7.5.10", - "@jridgewell/trace-mapping": "^0.3.13", - "@nodelib/fs.walk": "^1.2.8", - "@parcel/cache": "2.6.2", - "@parcel/core": "2.6.2", - "@pmmmwh/react-refresh-webpack-plugin": "^0.5.7", - "@types/http-proxy": "^1.17.7", - "@typescript-eslint/eslint-plugin": "^4.33.0", - "@typescript-eslint/parser": "^4.33.0", - "@vercel/webpack-asset-relocator-loader": "^1.7.0", - "address": "1.1.2", - "anser": "^2.1.0", - "autoprefixer": "^10.4.0", - "axios": "^0.21.1", - "babel-loader": "^8.2.3", - "babel-plugin-add-module-exports": "^1.0.4", - "babel-plugin-dynamic-import-node": "^2.3.3", - "babel-plugin-lodash": "^3.3.4", - "babel-plugin-remove-graphql-queries": "^4.22.0", - "babel-preset-gatsby": "^2.22.1", - "better-opn": "^2.1.1", - "bluebird": "^3.7.2", - "browserslist": "^4.17.5", - "cache-manager": "^2.11.1", - "chalk": "^4.1.2", - "chokidar": "^3.5.3", - "common-tags": "^1.8.0", - "compression": "^1.7.4", - "cookie": "^0.4.1", - "core-js": "^3.22.3", - "cors": "^2.8.5", - "css-loader": "^5.2.7", - "css-minimizer-webpack-plugin": "^2.0.0", - "css.escape": "^1.5.1", - "date-fns": "^2.25.0", - "debug": "^3.2.7", - "deepmerge": "^4.2.2", - "detect-port": "^1.3.0", - "devcert": "^1.2.0", - "dotenv": "^8.6.0", - "enhanced-resolve": "^5.8.3", - "error-stack-parser": "^2.1.4", - "eslint": "^7.32.0", - "eslint-config-react-app": "^6.0.0", - "eslint-plugin-flowtype": "^5.10.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jsx-a11y": "^6.5.1", - "eslint-plugin-react": "^7.30.1", - "eslint-plugin-react-hooks": "^4.5.0", - "eslint-webpack-plugin": "^2.7.0", - "event-source-polyfill": "1.0.25", - "execa": "^5.1.1", - "express": "^4.17.1", - "express-graphql": "^0.12.0", - "express-http-proxy": "^1.6.3", - "fastest-levenshtein": "^1.0.12", - "fastq": "^1.13.0", - "file-loader": "^6.2.0", - "find-cache-dir": "^3.3.2", - "fs-exists-cached": "1.0.0", - "fs-extra": "^10.1.0", - "gatsby-cli": "^4.22.1", - "gatsby-core-utils": "^3.22.0", - "gatsby-graphiql-explorer": "^2.22.0", - "gatsby-legacy-polyfills": "^2.22.0", - "gatsby-link": "^4.22.0", - "gatsby-page-utils": "^2.22.0", - "gatsby-parcel-config": "0.13.0", - "gatsby-plugin-page-creator": "^4.22.0", - "gatsby-plugin-typescript": "^4.22.0", - "gatsby-plugin-utils": "^3.16.0", - "gatsby-react-router-scroll": "^5.22.0", - "gatsby-script": "^1.7.0", - "gatsby-sharp": "^0.16.0", - "gatsby-telemetry": "^3.22.0", - "gatsby-worker": "^1.22.0", - "glob": "^7.2.3", - "globby": "^11.1.0", - "got": "^11.8.5", - "graphql": "^15.7.2", - "graphql-compose": "^9.0.7", - "graphql-playground-middleware-express": "^1.7.22", - "hasha": "^5.2.2", - "invariant": "^2.2.4", - "is-relative": "^1.0.0", - "is-relative-url": "^3.0.0", - "joi": "^17.4.2", - "json-loader": "^0.5.7", - "latest-version": "5.1.0", - "lmdb": "2.5.3", - "lodash": "^4.17.21", - "md5-file": "^5.0.0", - "meant": "^1.0.3", - "memoizee": "^0.4.15", - "micromatch": "^4.0.4", - "mime": "^2.5.2", - "mini-css-extract-plugin": "1.6.2", - "mitt": "^1.2.0", - "moment": "^2.29.1", - "multer": "^1.4.5-lts.1", - "node-fetch": "^2.6.6", - "node-html-parser": "^5.3.3", - "normalize-path": "^3.0.0", - "null-loader": "^4.0.1", - "opentracing": "^0.14.5", - "p-defer": "^3.0.0", - "parseurl": "^1.3.3", - "physical-cpu-count": "^2.0.0", - "platform": "^1.3.6", - "postcss": "^8.3.11", - "postcss-flexbugs-fixes": "^5.0.2", - "postcss-loader": "^5.3.0", - "prompts": "^2.4.2", - "prop-types": "^15.7.2", - "query-string": "^6.14.1", - "raw-loader": "^4.0.2", - "react-dev-utils": "^12.0.1", - "react-refresh": "^0.9.0", - "redux": "4.1.2", - "redux-thunk": "^2.4.0", - "resolve-from": "^5.0.0", - "semver": "^7.3.7", - "shallow-compare": "^1.2.2", - "signal-exit": "^3.0.5", - "slugify": "^1.6.1", - "socket.io": "3.1.2", - "socket.io-client": "3.1.3", - "st": "^2.0.0", - "stack-trace": "^0.0.10", - "string-similarity": "^1.2.2", - "strip-ansi": "^6.0.1", - "style-loader": "^2.0.0", - "terser-webpack-plugin": "^5.2.4", - "tmp": "^0.2.1", - "true-case-path": "^2.2.1", - "type-of": "^2.0.1", - "url-loader": "^4.1.1", - "uuid": "^8.3.2", - "webpack": "^5.61.0", - "webpack-dev-middleware": "^4.3.0", - "webpack-merge": "^5.8.0", - "webpack-stats-plugin": "^1.0.3", - "webpack-virtual-modules": "^0.3.2", - "xstate": "4.32.1", - "yaml-loader": "^0.6.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "react-refresh": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.9.0.tgz", - "integrity": "sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==" - }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - } - }, - "gatsby-cli": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/gatsby-cli/-/gatsby-cli-4.25.0.tgz", - "integrity": "sha512-CJ2PCsfFmn9Xqc/jg9MFMU1BG5oQGiej1TFFx8GhChJ+kGhi9ANnNM+qo1K4vOmoMnsT4SSGiPAFD10AWFqpAQ==", - "requires": { - "@babel/code-frame": "^7.14.0", - "@babel/core": "^7.15.5", - "@babel/generator": "^7.16.8", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/preset-typescript": "^7.16.7", - "@babel/runtime": "^7.15.4", - "@babel/template": "^7.16.7", - "@babel/types": "^7.16.8", - "@jridgewell/trace-mapping": "^0.3.13", - "@types/common-tags": "^1.8.1", - "better-opn": "^2.1.1", - "boxen": "^5.1.2", - "chalk": "^4.1.2", - "clipboardy": "^2.3.0", - "common-tags": "^1.8.2", - "convert-hrtime": "^3.0.0", - "create-gatsby": "^2.25.0", - "envinfo": "^7.8.1", - "execa": "^5.1.1", - "fs-exists-cached": "^1.0.0", - "fs-extra": "^10.1.0", - "gatsby-core-utils": "^3.25.0", - "gatsby-telemetry": "^3.25.0", - "hosted-git-info": "^3.0.8", - "is-valid-path": "^0.1.1", - "joi": "^17.4.2", - "lodash": "^4.17.21", - "node-fetch": "^2.6.6", - "opentracing": "^0.14.5", - "pretty-error": "^2.1.2", - "progress": "^2.0.3", - "prompts": "^2.4.2", - "redux": "4.1.2", - "resolve-cwd": "^3.0.0", - "semver": "^7.3.7", - "signal-exit": "^3.0.6", - "stack-trace": "^0.0.10", - "strip-ansi": "^6.0.1", - "update-notifier": "^5.1.0", - "yargs": "^15.4.1", - "yoga-layout-prebuilt": "^1.10.0", - "yurnalist": "^2.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - } - }, - "gatsby-core-utils": { - "version": "3.25.0", - "resolved": "https://registry.npmjs.org/gatsby-core-utils/-/gatsby-core-utils-3.25.0.tgz", - "integrity": "sha512-lmMDwbnKpqAi+8WWd7MvCTCx3E0u7j8sbVgydERNCYVxKVpzD/aLCH4WPb4EE9m1H1rSm76w0Z+MaentyB/c/Q==", - "requires": { - "@babel/runtime": "^7.15.4", - "ci-info": "2.0.0", - "configstore": "^5.0.1", - "fastq": "^1.13.0", - "file-type": "^16.5.3", - "fs-extra": "^10.1.0", - "got": "^11.8.5", - "import-from": "^4.0.0", - "lmdb": "2.5.3", - "lock": "^1.1.0", - "node-object-hash": "^2.3.10", - "proper-lockfile": "^4.1.2", - "resolve-from": "^5.0.0", - "tmp": "^0.2.1", - "xdg-basedir": "^4.0.0" - } - }, - "gatsby-graphiql-explorer": { - "version": "2.25.0", - "resolved": "https://registry.npmjs.org/gatsby-graphiql-explorer/-/gatsby-graphiql-explorer-2.25.0.tgz", - "integrity": "sha512-/NDsaW4x3/KtvzmxYvedhDwUW1kb7gQO6iOhCkillVJSYBd6mPB8aOSulM49fyCT76UXGYFtRaUI8fyOkmpWhg==", - "requires": { - "@babel/runtime": "^7.15.4" - } - }, - "gatsby-legacy-polyfills": { - "version": "2.25.0", - "resolved": "https://registry.npmjs.org/gatsby-legacy-polyfills/-/gatsby-legacy-polyfills-2.25.0.tgz", - "integrity": "sha512-cMeFwMH1FGENo2gNpyTyMYc/CJ7uBGE26n89OGrVVvBMaQegK+CMNZBOh09sLrXUcOp8hSOX2IwzvOlo6CdWpg==", - "requires": { - "@babel/runtime": "^7.15.4", - "core-js-compat": "3.9.0" - }, - "dependencies": { - "core-js-compat": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.9.0.tgz", - "integrity": "sha512-YK6fwFjCOKWwGnjFUR3c544YsnA/7DoLL0ysncuOJ4pwbriAtOpvM2bygdlcXbvQCQZ7bBU9CL4t7tGl7ETRpQ==", - "requires": { - "browserslist": "^4.16.3", - "semver": "7.0.0" - } - }, - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" - } - } - }, - "gatsby-link": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/gatsby-link/-/gatsby-link-4.25.0.tgz", - "integrity": "sha512-Fpwk45sUMPvFUAZehNE8SLb3vQyVSxt9YxU++ZZECyukK4A/3Wxk3eIzoNvwfpMfWu6pnAkqcBhIO6KAfvbPGQ==", - "requires": { - "@types/reach__router": "^1.3.10", - "gatsby-page-utils": "^2.25.0", - "prop-types": "^15.8.1" - }, - "dependencies": { - "prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - } - } - }, - "gatsby-page-utils": { - "version": "2.25.0", - "resolved": "https://registry.npmjs.org/gatsby-page-utils/-/gatsby-page-utils-2.25.0.tgz", - "integrity": "sha512-TlwS149JCeb3xGANeV8HdcQi9Q8J9hYwlO9jdxLGVIXVGbWIMWFrDuwx382jOOsISGQ3jfByToNulUzO6fiqig==", - "requires": { - "@babel/runtime": "^7.15.4", - "bluebird": "^3.7.2", - "chokidar": "^3.5.3", - "fs-exists-cached": "^1.0.0", - "gatsby-core-utils": "^3.25.0", - "glob": "^7.2.3", - "lodash": "^4.17.21", - "micromatch": "^4.0.5" - } - }, - "gatsby-parcel-config": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/gatsby-parcel-config/-/gatsby-parcel-config-0.13.0.tgz", - "integrity": "sha512-RJdrI8ioVXpwoCu9XjhQu/xidIshI+Vvjn07WlGV4IRNW77Xt9t2iXk12LdTHKmvKxXmGIA0CeC0eEg79V/2EQ==", - "requires": { - "@gatsbyjs/parcel-namer-relative-to-cwd": "1.7.0", - "@parcel/bundler-default": "2.6.2", - "@parcel/compressor-raw": "2.6.2", - "@parcel/namer-default": "2.6.2", - "@parcel/optimizer-terser": "2.6.2", - "@parcel/packager-js": "2.6.2", - "@parcel/packager-raw": "2.6.2", - "@parcel/reporter-dev-server": "2.6.2", - "@parcel/resolver-default": "2.6.2", - "@parcel/runtime-browser-hmr": "2.6.2", - "@parcel/runtime-js": "2.6.2", - "@parcel/runtime-react-refresh": "2.6.2", - "@parcel/runtime-service-worker": "2.6.2", - "@parcel/transformer-js": "2.6.2", - "@parcel/transformer-json": "2.6.2", - "@parcel/transformer-raw": "2.6.2", - "@parcel/transformer-react-refresh-wrap": "2.6.2" - } - }, - "gatsby-plugin-algolia": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/gatsby-plugin-algolia/-/gatsby-plugin-algolia-1.0.3.tgz", - "integrity": "sha512-fM+Kmk0O5/m8/40I2AiILdTkn8YYRsKACpgdS5z/AwE9zXZ2uCKDadWljLZ5iynmFn84f/gNNvZsuyKlOtjOtw==", - "requires": { - "algoliasearch": "^4.9.1", - "lodash.chunk": "^4.2.0" - } - }, - "gatsby-plugin-catch-links": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/gatsby-plugin-catch-links/-/gatsby-plugin-catch-links-4.22.0.tgz", - "integrity": "sha512-uBJMvNGEfk10WRfsUXw0OWhuP2BgamjbfDTh54emNb2MtmN3cz91G5ZDQWxFe24+3BSagJ3WN3lwDra9r1UjuQ==", - "requires": { - "@babel/runtime": "^7.15.4", - "escape-string-regexp": "^1.0.5" - } - }, - "gatsby-plugin-google-tagmanager": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/gatsby-plugin-google-tagmanager/-/gatsby-plugin-google-tagmanager-4.22.0.tgz", - "integrity": "sha512-TNQLz7E3TypzXTfH/MIX1R+n8JclWfbHEK+4TnTEqjbUeTbLAkUCBlzqOCm/gWABWszpI2VYDN+UkOnfiZ3hVw==", - "requires": { - "@babel/runtime": "^7.15.4", - "web-vitals": "^1.1.2" - } - }, - "gatsby-plugin-image": { - "version": "2.22.0", - "resolved": "https://registry.npmjs.org/gatsby-plugin-image/-/gatsby-plugin-image-2.22.0.tgz", - "integrity": "sha512-39XbPtUv/rtB/PffkTiEYjGGAFkqivWHGLil1aqiDo42RhPhhgHQ5Y2mn9B3ZiK86foUhSjQMRX6XSgTw2CGDA==", - "requires": { - "@babel/code-frame": "^7.14.0", - "@babel/parser": "^7.15.5", - "@babel/runtime": "^7.15.4", - "@babel/traverse": "^7.15.4", - "babel-jsx-utils": "^1.1.0", - "babel-plugin-remove-graphql-queries": "^4.22.0", - "camelcase": "^5.3.1", - "chokidar": "^3.5.3", - "common-tags": "^1.8.2", - "fs-extra": "^10.1.0", - "gatsby-core-utils": "^3.22.0", - "gatsby-plugin-utils": "^3.16.0", - "objectFitPolyfill": "^2.3.5", - "prop-types": "^15.8.1" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - }, - "prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - } - } - }, - "gatsby-plugin-mdx": { - "version": "3.15.2", - "resolved": "https://registry.npmjs.org/gatsby-plugin-mdx/-/gatsby-plugin-mdx-3.15.2.tgz", - "integrity": "sha512-TsEgeAq40x7IwABXZkZcGStltr6gr3DnGjmhq4QZKapjtsPeTzWKp9HhB93t0OCDD9AfWUCH/teQq0rFTvsaEw==", - "requires": { - "@babel/core": "^7.15.5", - "@babel/generator": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.0", - "@babel/plugin-proposal-object-rest-spread": "^7.14.7", - "@babel/preset-env": "^7.15.4", - "@babel/preset-react": "^7.14.0", - "@babel/runtime": "^7.15.4", - "@babel/types": "^7.15.4", - "camelcase-css": "^2.0.1", - "change-case": "^3.1.0", - "core-js": "^3.22.3", - "dataloader": "^1.4.0", - "debug": "^4.3.1", - "escape-string-regexp": "^1.0.5", - "eval": "^0.1.4", - "fs-extra": "^10.1.0", - "gatsby-core-utils": "^3.15.0", - "gray-matter": "^4.0.2", - "json5": "^2.1.3", - "loader-utils": "^1.4.0", - "lodash": "^4.17.21", - "mdast-util-to-string": "^1.1.0", - "mdast-util-toc": "^3.1.0", - "mime": "^2.4.6", - "mkdirp": "^1.0.4", - "p-queue": "^6.6.2", - "pretty-bytes": "^5.3.0", - "remark": "^10.0.1", - "remark-retext": "^3.1.3", - "retext-english": "^3.0.4", - "slugify": "^1.4.4", - "static-site-generator-webpack-plugin": "^3.4.2", - "style-to-object": "^0.3.0", - "underscore.string": "^3.3.5", - "unified": "^8.4.2", - "unist-util-map": "^1.0.5", - "unist-util-remove": "^1.0.3", - "unist-util-visit": "^1.4.1" - }, - "dependencies": { - "camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==", - "requires": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" - } - }, - "change-case": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/change-case/-/change-case-3.1.0.tgz", - "integrity": "sha512-2AZp7uJZbYEzRPsFoa+ijKdvp9zsrnnt6+yFokfwEpeJm0xuJDVoxiRCAaTzyJND8GJkofo2IcKWaUZ/OECVzw==", - "requires": { - "camel-case": "^3.0.0", - "constant-case": "^2.0.0", - "dot-case": "^2.1.0", - "header-case": "^1.0.0", - "is-lower-case": "^1.1.0", - "is-upper-case": "^1.1.0", - "lower-case": "^1.1.1", - "lower-case-first": "^1.0.0", - "no-case": "^2.3.2", - "param-case": "^2.1.0", - "pascal-case": "^2.0.0", - "path-case": "^2.1.0", - "sentence-case": "^2.1.0", - "snake-case": "^2.1.0", - "swap-case": "^1.1.0", - "title-case": "^2.1.0", - "upper-case": "^1.1.1", - "upper-case-first": "^1.1.0" - } - }, - "constant-case": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-2.0.0.tgz", - "integrity": "sha512-eS0N9WwmjTqrOmR3o83F5vW8Z+9R1HnVz3xmzT2PMFug9ly+Au/fxRWlEBSb6LcZwspSsEn9Xs1uw9YgzAg1EQ==", - "requires": { - "snake-case": "^2.1.0", - "upper-case": "^1.1.1" - } - }, - "dot-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-2.1.1.tgz", - "integrity": "sha512-HnM6ZlFqcajLsyudHq7LeeLDr2rFAVYtDv/hV5qchQEidSck8j9OPUsXY9KwJv/lHMtYlX4DjRQqwFYa+0r8Ug==", - "requires": { - "no-case": "^2.2.0" - } - }, - "header-case": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/header-case/-/header-case-1.0.1.tgz", - "integrity": "sha512-i0q9mkOeSuhXw6bGgiQCCBgY/jlZuV/7dZXyZ9c6LcBrqwvT8eT719E9uxE5LiZftdl+z81Ugbg/VvXV4OJOeQ==", - "requires": { - "no-case": "^2.2.0", - "upper-case": "^1.1.3" - } - }, - "is-lower-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-lower-case/-/is-lower-case-1.1.3.tgz", - "integrity": "sha512-+5A1e/WJpLLXZEDlgz4G//WYSHyQBD32qa4Jd3Lw06qQlv3fJHnp3YIHjTQSGzHMgzmVKz2ZP3rBxTHkPw/lxA==", - "requires": { - "lower-case": "^1.1.0" - } - }, - "is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==" - }, - "is-upper-case": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-upper-case/-/is-upper-case-1.1.2.tgz", - "integrity": "sha512-GQYSJMgfeAmVwh9ixyk888l7OIhNAGKtY6QA+IrWlu9MDTCaXmeozOZ2S9Knj7bQwBO/H6J2kb+pbyTUiMNbsw==", - "requires": { - "upper-case": "^1.1.0" - } - }, - "loader-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", - "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "dependencies": { - "json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "requires": { - "minimist": "^1.2.0" - } - } - } - }, - "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==" - }, - "lower-case-first": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/lower-case-first/-/lower-case-first-1.0.2.tgz", - "integrity": "sha512-UuxaYakO7XeONbKrZf5FEgkantPf5DUqDayzP5VXZrtRPdH86s4kN47I8B3TW10S4QKiE3ziHNf3kRN//okHjA==", - "requires": { - "lower-case": "^1.1.2" - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - }, - "no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", - "requires": { - "lower-case": "^1.1.1" - } - }, - "param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==", - "requires": { - "no-case": "^2.2.0" - } - }, - "pascal-case": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-2.0.1.tgz", - "integrity": "sha512-qjS4s8rBOJa2Xm0jmxXiyh1+OFf6ekCWOvUaRgAQSktzlTbMotS0nmG9gyYAybCWBcuP4fsBeRCKNwGBnMe2OQ==", - "requires": { - "camel-case": "^3.0.0", - "upper-case-first": "^1.1.0" - } - }, - "path-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/path-case/-/path-case-2.1.1.tgz", - "integrity": "sha512-Ou0N05MioItesaLr9q8TtHVWmJ6fxWdqKB2RohFmNWVyJ+2zeKIeDNWAN6B/Pe7wpzWChhZX6nONYmOnMeJQ/Q==", - "requires": { - "no-case": "^2.2.0" - } - }, - "sentence-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-2.1.1.tgz", - "integrity": "sha512-ENl7cYHaK/Ktwk5OTD+aDbQ3uC8IByu/6Bkg+HDv8Mm+XnBnppVNalcfJTNsp1ibstKh030/JKQQWglDvtKwEQ==", - "requires": { - "no-case": "^2.2.0", - "upper-case-first": "^1.1.2" - } - }, - "snake-case": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-2.1.0.tgz", - "integrity": "sha512-FMR5YoPFwOLuh4rRz92dywJjyKYZNLpMn1R5ujVpIYkbA9p01fq8RMg0FkO4M+Yobt4MjHeLTJVm5xFFBHSV2Q==", - "requires": { - "no-case": "^2.2.0" - } - }, - "swap-case": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/swap-case/-/swap-case-1.1.2.tgz", - "integrity": "sha512-BAmWG6/bx8syfc6qXPprof3Mn5vQgf5dwdUNJhsNqU9WdPt5P+ES/wQ5bxfijy8zwZgZZHslC3iAsxsuQMCzJQ==", - "requires": { - "lower-case": "^1.1.1", - "upper-case": "^1.1.1" - } - }, - "title-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/title-case/-/title-case-2.1.1.tgz", - "integrity": "sha512-EkJoZ2O3zdCz3zJsYCsxyq2OC5hrxR9mfdd5I+w8h/tmFfeOxJ+vvkxsKxdmN0WtS9zLdHEgfgVOiMVgv+Po4Q==", - "requires": { - "no-case": "^2.2.0", - "upper-case": "^1.0.3" - } - }, - "unified": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-8.4.2.tgz", - "integrity": "sha512-JCrmN13jI4+h9UAyKEoGcDZV+i1E7BLFuG7OsaDvTXI5P0qhHX+vZO/kOhz9jn8HGENDKbwSeB0nVOg4gVStGA==", - "requires": { - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" - } - }, - "unist-util-is": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", - "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==" - }, - "unist-util-visit": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", - "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", - "requires": { - "unist-util-visit-parents": "^2.0.0" - } - }, - "unist-util-visit-parents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", - "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", - "requires": { - "unist-util-is": "^3.0.0" - } - }, - "upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==" - }, - "upper-case-first": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-1.1.2.tgz", - "integrity": "sha512-wINKYvI3Db8dtjikdAqoBbZoP6Q+PZUyfMR7pmwHzjC2quzSkUq5DmPrTtPEqHaz8AGtmsB4TqwapMTM1QAQOQ==", - "requires": { - "upper-case": "^1.1.1" - } - } - } - }, - "gatsby-plugin-meta-redirect": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/gatsby-plugin-meta-redirect/-/gatsby-plugin-meta-redirect-1.1.1.tgz", - "integrity": "sha512-Oc4qgU3SlDUM9qoxIMKO+re2bdMs3/a2KXrfL65gb8XMLsHylBbveWtXZRhgjd2QDL/49RX4S9SEykuadRju2w==", - "requires": { - "fs-extra": "^7.0.0" - }, - "dependencies": { - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" - } - } - }, - "gatsby-plugin-page-creator": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/gatsby-plugin-page-creator/-/gatsby-plugin-page-creator-4.25.0.tgz", - "integrity": "sha512-plHek7xHSV9l1bLPa1JAnxzBqP7j2ihCPRwpBk/wIJAR8cG65wjAT+Nu8DKpW0+2/MYill84ns1r2m8g0L/7bg==", - "requires": { - "@babel/runtime": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@sindresorhus/slugify": "^1.1.2", - "chokidar": "^3.5.3", - "fs-exists-cached": "^1.0.0", - "fs-extra": "^10.1.0", - "gatsby-core-utils": "^3.25.0", - "gatsby-page-utils": "^2.25.0", - "gatsby-plugin-utils": "^3.19.0", - "gatsby-telemetry": "^3.25.0", - "globby": "^11.1.0", - "lodash": "^4.17.21" - } - }, - "gatsby-plugin-robots-txt": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/gatsby-plugin-robots-txt/-/gatsby-plugin-robots-txt-1.7.1.tgz", - "integrity": "sha512-ZdZm8/4b7Whf+W5kf+DqjZwz/+DY+IB7xp227+m2f2rgGUsz8yVCz4RitiN5+EInGFZFry0v+IbrUKCXTpIZYg==", - "requires": { - "@babel/runtime": "^7.16.7", - "generate-robotstxt": "^8.0.3" - } - }, - "gatsby-plugin-sharp": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/gatsby-plugin-sharp/-/gatsby-plugin-sharp-4.22.0.tgz", - "integrity": "sha512-LL9M6aa5lXXRg1CrjIs10v2gMyjnVWBwWNXZCQzhP2OHdfxPhL4YapYIWPIJXqQSZG85bOP09fEnFfOpttfgUQ==", - "requires": { - "@babel/runtime": "^7.15.4", - "@gatsbyjs/potrace": "^2.3.0", - "async": "^3.2.4", - "bluebird": "^3.7.2", - "debug": "^4.3.4", - "filenamify": "^4.3.0", - "fs-extra": "^10.1.0", - "gatsby-core-utils": "^3.22.0", - "gatsby-plugin-utils": "^3.16.0", - "lodash": "^4.17.21", - "mini-svg-data-uri": "^1.4.4", - "probe-image-size": "^7.2.3", - "semver": "^7.3.7", - "sharp": "^0.30.7", - "svgo": "1.3.2" - }, - "dependencies": { - "async": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", - "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - } - }, - "gatsby-plugin-sitemap": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/gatsby-plugin-sitemap/-/gatsby-plugin-sitemap-5.22.0.tgz", - "integrity": "sha512-51iJqCT+bCJ37akJnSvmCTjqVBIFLe/oE0sBLyjkCbMgmCFRW67eLRMsQeLRcm4KkIex3fbpGaAOxvXvP+FFUQ==", - "requires": { - "@babel/runtime": "^7.15.4", - "common-tags": "^1.8.2", - "minimatch": "^3.1.2", - "sitemap": "^7.0.0" - } - }, - "gatsby-plugin-smoothscroll": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gatsby-plugin-smoothscroll/-/gatsby-plugin-smoothscroll-1.2.0.tgz", - "integrity": "sha512-wfIK06xwbNx91nHVg1YJwlLUJc0EmfWqV8KgvlNr6gFa9pqMx5Mprdp5jDRloAi3+9K0dVCybPO8FfaZ0i4HgA==", - "requires": { - "smoothscroll-polyfill": "^0.4.4" - } - }, - "gatsby-plugin-styled-components": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/gatsby-plugin-styled-components/-/gatsby-plugin-styled-components-5.22.0.tgz", - "integrity": "sha512-L/+W8abTBTCpGpyC6efKwUcrGzE6Rk6Kgc8eTn+Nx/w+Vuxk3y4W7Ed7kuLb+MeRBfIR1PBFTJOfwum5j+Or7Q==", - "requires": { - "@babel/runtime": "^7.15.4" - } - }, - "gatsby-plugin-typescript": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/gatsby-plugin-typescript/-/gatsby-plugin-typescript-4.25.0.tgz", - "integrity": "sha512-8BTtiVWuIqIEGx/PBBMWd6FYPgel16hT3js7SMo5oI9K4EPsSxRItgRf41MTJGxRR20EhL4e99g2S8x0v1+odA==", - "requires": { - "@babel/core": "^7.15.5", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5", - "@babel/plugin-proposal-numeric-separator": "^7.14.5", - "@babel/plugin-proposal-optional-chaining": "^7.14.5", - "@babel/preset-typescript": "^7.15.0", - "@babel/runtime": "^7.15.4", - "babel-plugin-remove-graphql-queries": "^4.25.0" - } - }, - "gatsby-plugin-utils": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/gatsby-plugin-utils/-/gatsby-plugin-utils-3.19.0.tgz", - "integrity": "sha512-EZtvgHSU5NPbEn6a4cfSpEGCQ09SfwbhoybHTJKj1clop86HSwOCV2iH8RbCc+X6jbdgHaSZsfsl7zG1h7DBUw==", - "requires": { - "@babel/runtime": "^7.15.4", - "fastq": "^1.13.0", - "fs-extra": "^10.1.0", - "gatsby-core-utils": "^3.25.0", - "gatsby-sharp": "^0.19.0", - "graphql-compose": "^9.0.7", - "import-from": "^4.0.0", - "joi": "^17.4.2", - "mime": "^3.0.0" - }, - "dependencies": { - "gatsby-sharp": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/gatsby-sharp/-/gatsby-sharp-0.19.0.tgz", - "integrity": "sha512-EbI3RNBu2+aaxuMUP/INmoj8vcNAG6BgpFvi1tLeU7/gVTNVQ+7pC/ZYtlVCzSw+faaw7r1ZBMi6F66mNIIz5A==", - "requires": { - "@types/sharp": "^0.30.5", - "sharp": "^0.30.7" - } - }, - "mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==" - } - } - }, - "gatsby-plugin-webpack-bundle-analyser-v2": { - "version": "1.1.32", - "resolved": "https://registry.npmjs.org/gatsby-plugin-webpack-bundle-analyser-v2/-/gatsby-plugin-webpack-bundle-analyser-v2-1.1.32.tgz", - "integrity": "sha512-w6OJAR3CTyiKEKKD5tYu3J56YiQOW/8Sl2GPWmoiwzHIhZGjTOG+NbgkhboAK3+g2vgBlGTUmqgTAiJZWN7E/g==", - "dev": true, - "requires": { - "@babel/runtime": "^7.23.2", - "webpack-bundle-analyzer": "^4.10.1" - } - }, - "gatsby-react-router-scroll": { - "version": "5.25.0", - "resolved": "https://registry.npmjs.org/gatsby-react-router-scroll/-/gatsby-react-router-scroll-5.25.0.tgz", - "integrity": "sha512-SFSdezIa5lahCE8ieCLrtLA5tztemGco/rN8si9rI9KHu1h1jPvDhsNqs2g+Z50JrUb1RPfsmxJTmLa5i6MIgQ==", - "requires": { - "@babel/runtime": "^7.15.4", - "prop-types": "^15.8.1" - }, - "dependencies": { - "prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - } - } - }, - "gatsby-remark-autolink-headers": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/gatsby-remark-autolink-headers/-/gatsby-remark-autolink-headers-5.22.0.tgz", - "integrity": "sha512-Eyom72XpN2x2BLCKdgWYnseeqXIcN9kVZmaXECGzc/IrE6RBHTMjzCMZJx9Ii39OAOhILaumOEfYhnAIw6SWXg==", - "requires": { - "@babel/runtime": "^7.15.4", - "github-slugger": "^1.3.0", - "lodash": "^4.17.21", - "mdast-util-to-string": "^2.0.0", - "unist-util-visit": "^2.0.3" - }, - "dependencies": { - "mdast-util-to-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", - "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==" - } - } - }, - "gatsby-remark-copy-linked-files": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/gatsby-remark-copy-linked-files/-/gatsby-remark-copy-linked-files-5.22.0.tgz", - "integrity": "sha512-n+HNVZDtog7o4LX0yS0uQbcPectfcf1VuOou/rhkzeGR1vKXTcTHpfc4A+n9MfvoBoV8N4FyZCGjSzxF9nqS2g==", - "requires": { - "@babel/runtime": "^7.15.4", - "cheerio": "^1.0.0-rc.10", - "fs-extra": "^10.1.0", - "is-relative-url": "^3.0.0", - "lodash": "^4.17.21", - "path-is-inside": "^1.0.2", - "probe-image-size": "^7.2.3", - "unist-util-visit": "^2.0.3" - } - }, - "gatsby-remark-normalize-paths": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/gatsby-remark-normalize-paths/-/gatsby-remark-normalize-paths-1.1.0.tgz", - "integrity": "sha512-/0mueJUohhuHHUe7N40Gn3b68DCVQWp6QDgsxpyBiykWvS0L6Aiv/SbmqX0oh0ubg47m4P6iakJUN/V2KKir4g==", - "requires": { - "is-valid-path": "^0.1.1", - "path": "^0.12.7", - "unist-util-visit": "^2.0.3" - } - }, - "gatsby-remark-rewrite-relative-links": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/gatsby-remark-rewrite-relative-links/-/gatsby-remark-rewrite-relative-links-1.0.8.tgz", - "integrity": "sha512-7jCyMM+AWdp8mFLUWuJ5RGPQIKFzpLqf253QR6Aq8xrhlV0Bcz2k1+03MxPnGP0R5XetIoRm2W864KrbIZdk9Q==", - "requires": { - "unist-util-visit": "^2.0.0" - } - }, - "gatsby-remark-sectionize": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gatsby-remark-sectionize/-/gatsby-remark-sectionize-1.0.0.tgz", - "integrity": "sha512-S6FefaA1KlBDRNw/RaH8iRUzdcFgB8nBYox3hraXqLsfRETRkY668ay6xo8iSNyl/XG+L6fjaNBss0KcmAqBSg==", - "requires": { - "remark-sectionize": "^1.0.1" - } - }, - "gatsby-script": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/gatsby-script/-/gatsby-script-1.10.0.tgz", - "integrity": "sha512-8jAtQR0mw3G8sCy6i2D1jfGvUF5d9AIboEQuo9ZEChT4Ep5f+PSRxiWZqSjhKvintAOIeS4QXCJP5Rtp3xZKLg==", - "requires": {} - }, - "gatsby-sharp": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/gatsby-sharp/-/gatsby-sharp-0.16.0.tgz", - "integrity": "sha512-ApkxUe04waBzqyTE1x9OcP/ZzIbFBYxkjsrBoK+Fl2CZrQgBk7433kVVufy7FVW4o69StQmztrwaNEh2t5miTQ==", - "optional": true, - "requires": { - "@types/sharp": "^0.30.5", - "sharp": "^0.30.7" - } - }, - "gatsby-source-filesystem": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/gatsby-source-filesystem/-/gatsby-source-filesystem-4.22.0.tgz", - "integrity": "sha512-fcL3M+bQgI8DxD+XfB5XAnMvXp6czfqRZs8J2RStw9p02ekLaR/8R9ZYrn8OoQYLB9y9CHid+pdA78Dy3h73cg==", - "requires": { - "@babel/runtime": "^7.15.4", - "chokidar": "^3.5.3", - "file-type": "^16.5.4", - "fs-extra": "^10.1.0", - "gatsby-core-utils": "^3.22.0", - "md5-file": "^5.0.0", - "mime": "^2.5.2", - "pretty-bytes": "^5.4.1", - "valid-url": "^1.0.9", - "xstate": "4.32.1" - } - }, - "gatsby-telemetry": { - "version": "3.25.0", - "resolved": "https://registry.npmjs.org/gatsby-telemetry/-/gatsby-telemetry-3.25.0.tgz", - "integrity": "sha512-FGC1yS2evJxTN/Ku9XonCBiqhH6uO6aPjjps65BbL+Xbpct/qfirIFxYG6DhHPrksR0fKOhstJGnQqay74hWdQ==", - "requires": { - "@babel/code-frame": "^7.14.0", - "@babel/runtime": "^7.15.4", - "@turist/fetch": "^7.2.0", - "@turist/time": "^0.0.2", - "boxen": "^4.2.0", - "configstore": "^5.0.1", - "fs-extra": "^10.1.0", - "gatsby-core-utils": "^3.25.0", - "git-up": "^7.0.0", - "is-docker": "^2.2.1", - "lodash": "^4.17.21", - "node-fetch": "^2.6.7" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "boxen": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", - "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", - "requires": { - "ansi-align": "^3.0.0", - "camelcase": "^5.3.1", - "chalk": "^3.0.0", - "cli-boxes": "^2.2.0", - "string-width": "^4.1.0", - "term-size": "^2.1.0", - "type-fest": "^0.8.1", - "widest-line": "^3.1.0" - } - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" - } - } - }, - "gatsby-transformer-remark": { - "version": "5.25.1", - "resolved": "https://registry.npmjs.org/gatsby-transformer-remark/-/gatsby-transformer-remark-5.25.1.tgz", - "integrity": "sha512-6k3uOnZYsJSgmZIWq9Y+Cqb6pysusCUBYpQY1+V9ofpSRbrZGGfuoCeFKd27x/c0jI5jneuL3NXnxwn/JJK1Ig==", - "requires": { - "@babel/runtime": "^7.15.4", - "gatsby-core-utils": "^3.25.0", - "gray-matter": "^4.0.3", - "hast-util-raw": "^6.0.2", - "hast-util-to-html": "^7.1.3", - "lodash": "^4.17.21", - "mdast-util-to-hast": "^10.2.0", - "mdast-util-to-string": "^2.0.0", - "mdast-util-toc": "^5.1.0", - "remark": "^13.0.0", - "remark-footnotes": "^3.0.0", - "remark-gfm": "^1.0.0", - "remark-parse": "^9.0.0", - "remark-retext": "^4.0.0", - "remark-stringify": "^9.0.1", - "retext-english": "^3.0.4", - "sanitize-html": "^1.27.5", - "underscore.string": "^3.3.6", - "unified": "^9.2.2", - "unist-util-remove-position": "^3.0.0", - "unist-util-select": "^3.0.4", - "unist-util-visit": "^2.0.3" - }, - "dependencies": { - "hast-util-raw": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-6.1.0.tgz", - "integrity": "sha512-5FoZLDHBpka20OlZZ4I/+RBw5piVQ8iI1doEvffQhx5CbCyTtP8UCq8Tw6NmTAMtXgsQxmhW7Ly8OdFre5/YMQ==", - "requires": { - "@types/hast": "^2.0.0", - "hast-util-from-parse5": "^6.0.0", - "hast-util-to-parse5": "^6.0.0", - "html-void-elements": "^1.0.0", - "parse5": "^6.0.0", - "unist-util-position": "^3.0.0", - "unist-util-visit": "^2.0.0", - "vfile": "^4.0.0", - "web-namespaces": "^1.0.0", - "xtend": "^4.0.0", - "zwitch": "^1.0.0" - } - }, - "is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==" - }, - "mdast-util-to-hast": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.2.0.tgz", - "integrity": "sha512-JoPBfJ3gBnHZ18icCwHR50orC9kNH81tiR1gs01D8Q5YpV6adHNO9nKNuFBCJQ941/32PT1a63UF/DitmS3amQ==", - "requires": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "mdast-util-definitions": "^4.0.0", - "mdurl": "^1.0.0", - "unist-builder": "^2.0.0", - "unist-util-generated": "^1.0.0", - "unist-util-position": "^3.0.0", - "unist-util-visit": "^2.0.0" - } - }, - "mdast-util-to-nlcst": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-to-nlcst/-/mdast-util-to-nlcst-4.0.1.tgz", - "integrity": "sha512-Y4ffygj85MTt70STKnEquw6k73jYWJBaYcb4ITAKgSNokZF7fH8rEHZ1GsRY/JaxqUevMaEnsDmkVv5Z9uVRdg==", - "requires": { - "nlcst-to-string": "^2.0.0", - "repeat-string": "^1.0.0", - "unist-util-position": "^3.0.0", - "vfile-location": "^3.1.0" - } - }, - "mdast-util-to-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", - "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==" - }, - "mdast-util-toc": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-toc/-/mdast-util-toc-5.1.0.tgz", - "integrity": "sha512-csimbRIVkiqc+PpFeKDGQ/Ck2N4f9FYH3zzBMMJzcxoKL8m+cM0n94xXm0I9eaxHnKdY9n145SGTdyJC7i273g==", - "requires": { - "@types/mdast": "^3.0.3", - "@types/unist": "^2.0.3", - "extend": "^3.0.2", - "github-slugger": "^1.2.1", - "mdast-util-to-string": "^2.0.0", - "unist-util-is": "^4.0.0", - "unist-util-visit": "^2.0.0" - } - }, - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" - }, - "remark": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz", - "integrity": "sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA==", - "requires": { - "remark-parse": "^9.0.0", - "remark-stringify": "^9.0.0", - "unified": "^9.1.0" - } - }, - "remark-footnotes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-3.0.0.tgz", - "integrity": "sha512-ZssAvH9FjGYlJ/PBVKdSmfyPc3Cz4rTWgZLI4iE/SX8Nt5l3o3oEjv3wwG5VD7xOjktzdwp5coac+kJV9l4jgg==", - "requires": { - "mdast-util-footnote": "^0.1.0", - "micromark-extension-footnote": "^0.3.0" - } - }, - "remark-parse": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", - "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==", - "requires": { - "mdast-util-from-markdown": "^0.8.0" - } - }, - "remark-retext": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-retext/-/remark-retext-4.0.0.tgz", - "integrity": "sha512-cYCchalpf25bTtfXF24ribYvqytPKq0TiEhqQDBHvVEEsApebwruPWP1cTcvTFBidmpXyqzycm+y8ng7Kmvc8Q==", - "requires": { - "mdast-util-to-nlcst": "^4.0.0" - } - }, - "unified": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", - "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", - "requires": { - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" - } - } - } - }, - "gatsby-transformer-sharp": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/gatsby-transformer-sharp/-/gatsby-transformer-sharp-4.22.0.tgz", - "integrity": "sha512-gTZ9pXwxsdmGEBV6yANnZFvsw921r6FChzuD43r+7JTs7uhmBsSGPPSF3EQnOKClP9co3IE0kztYSLoUHQe/cQ==", - "requires": { - "@babel/runtime": "^7.15.4", - "@gatsbyjs/potrace": "^2.3.0", - "bluebird": "^3.7.2", - "common-tags": "^1.8.2", - "fs-extra": "^10.1.0", - "gatsby-plugin-utils": "^3.16.0", - "probe-image-size": "^7.2.3", - "semver": "^7.3.7", - "sharp": "^0.30.7" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - } - }, - "gatsby-worker": { - "version": "1.25.0", - "resolved": "https://registry.npmjs.org/gatsby-worker/-/gatsby-worker-1.25.0.tgz", - "integrity": "sha512-gjp28irgHASihwvMyF5aZMALWGax9mEmcD8VYGo2osRe7p6BZuWi4cSuP9XM9EvytDvIugpnSadmTP01B7LtWg==", - "requires": { - "@babel/core": "^7.15.5", - "@babel/runtime": "^7.15.4" - } - }, - "generate-robotstxt": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/generate-robotstxt/-/generate-robotstxt-8.0.3.tgz", - "integrity": "sha512-iD//oAVKcHOCz9M0IiT3pyUiF2uN1qvL3qaTA8RGLz7NU7l0XVwyzd3rN+tzhB657DNUgrygXt9w8+0zkTMFrg==", - "requires": { - "cosmiconfig": "^6.0.0", - "fs-extra": "^9.0.0", - "ip-regex": "^4.1.0", - "is-absolute-url": "^3.0.3", - "meow": "^7.0.1", - "resolve-from": "^5.0.0" - }, - "dependencies": { - "cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" - } - }, - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "is-absolute-url": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", - "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==" - }, - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" - } - } - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" - }, - "get-intrinsic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", - "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", - "requires": { - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - } - }, - "get-own-enumerable-property-symbols": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", - "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", - "dev": true - }, - "get-port": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", - "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==" - }, - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "requires": { - "pump": "^3.0.0" - } - }, - "get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - } - }, - "git-up": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/git-up/-/git-up-7.0.0.tgz", - "integrity": "sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==", - "requires": { - "is-ssh": "^1.4.0", - "parse-url": "^8.1.0" - } - }, - "github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" - }, - "github-slugger": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.5.0.tgz", - "integrity": "sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==" - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "requires": { - "is-glob": "^4.0.1" - } - }, - "glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" - }, - "global-dirs": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", - "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", - "requires": { - "ini": "2.0.0" - }, - "dependencies": { - "ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==" - } - } - }, - "global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "requires": { - "global-prefix": "^3.0.0" - } - }, - "global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "requires": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - }, - "dependencies": { - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" - }, - "globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "requires": { - "define-properties": "^1.1.3" - } - }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, - "gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "requires": { - "get-intrinsic": "^1.1.3" - } - }, - "got": { - "version": "11.8.6", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", - "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", - "requires": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" - } - }, - "graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, - "graphql": { - "version": "15.8.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz", - "integrity": "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==" - }, - "graphql-compose": { - "version": "9.0.10", - "resolved": "https://registry.npmjs.org/graphql-compose/-/graphql-compose-9.0.10.tgz", - "integrity": "sha512-UsVoxfi2+c8WbHl2pEB+teoRRZoY4mbWBoijeLDGpAZBSPChnqtSRjp+T9UcouLCwGr5ooNyOQLoI3OVzU1bPQ==", - "requires": { - "graphql-type-json": "0.3.2" - } - }, - "graphql-playground-html": { - "version": "1.6.30", - "resolved": "https://registry.npmjs.org/graphql-playground-html/-/graphql-playground-html-1.6.30.tgz", - "integrity": "sha512-tpCujhsJMva4aqE8ULnF7/l3xw4sNRZcSHu+R00VV+W0mfp+Q20Plvcrp+5UXD+2yS6oyCXncA+zoQJQqhGCEw==", - "requires": { - "xss": "^1.0.6" - } - }, - "graphql-playground-middleware-express": { - "version": "1.7.23", - "resolved": "https://registry.npmjs.org/graphql-playground-middleware-express/-/graphql-playground-middleware-express-1.7.23.tgz", - "integrity": "sha512-M/zbTyC1rkgiQjFSgmzAv6umMHOphYLNWZp6Ye5QrD77WfGOOoSqDsVmGUczc2pDkEPEzzGB/bvBO5rdzaTRgw==", - "requires": { - "graphql-playground-html": "^1.6.30" - } - }, - "graphql-tag": { - "version": "2.12.6", - "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", - "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", - "requires": { - "tslib": "^2.1.0" - } - }, - "graphql-type-json": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/graphql-type-json/-/graphql-type-json-0.3.2.tgz", - "integrity": "sha512-J+vjof74oMlCWXSvt0DOf2APEdZOCdubEvGDUAlqH//VBYcOYsGgRW7Xzorr44LvkjiuvecWc8fChxuZZbChtg==", - "requires": {} - }, - "gray-matter": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", - "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", - "requires": { - "js-yaml": "^3.13.1", - "kind-of": "^6.0.2", - "section-matter": "^1.0.0", - "strip-bom-string": "^1.0.0" - }, - "dependencies": { - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" - } - } - }, - "gzip-size": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", - "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", - "requires": { - "duplexer": "^0.1.2" - } - }, - "hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==" - }, - "has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" - }, - "has-cors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha512-g5VNKdkFuUuVCP9gYfDJHjK2nqdQJ7aDLTnycnc2+RvsOQbuLdF5pm7vuE5J76SEBIQjs4kQY/BWq74JUmjbXA==" - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - }, - "has-property-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", - "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", - "requires": { - "get-intrinsic": "^1.2.2" - } - }, - "has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" - }, - "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "requires": { - "has-symbols": "^1.0.2" - } - }, - "has-yarn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==" - }, - "hasha": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", - "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", - "requires": { - "is-stream": "^2.0.0", - "type-fest": "^0.8.0" - }, - "dependencies": { - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" - } - } - }, - "hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", - "requires": { - "function-bind": "^1.1.2" - } - }, - "hast-to-hyperscript": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz", - "integrity": "sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA==", - "requires": { - "@types/unist": "^2.0.3", - "comma-separated-tokens": "^1.0.0", - "property-information": "^5.3.0", - "space-separated-tokens": "^1.0.0", - "style-to-object": "^0.3.0", - "unist-util-is": "^4.0.0", - "web-namespaces": "^1.0.0" - } - }, - "hast-util-from-parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz", - "integrity": "sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==", - "requires": { - "@types/parse5": "^5.0.0", - "hastscript": "^6.0.0", - "property-information": "^5.0.0", - "vfile": "^4.0.0", - "vfile-location": "^3.2.0", - "web-namespaces": "^1.0.0" - } - }, - "hast-util-is-element": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-1.1.0.tgz", - "integrity": "sha512-oUmNua0bFbdrD/ELDSSEadRVtWZOf3iF6Lbv81naqsIV99RnSCieTbWuWCY8BAeEfKJTKl0gRdokv+dELutHGQ==" - }, - "hast-util-parse-selector": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz", - "integrity": "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==" - }, - "hast-util-raw": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-6.0.1.tgz", - "integrity": "sha512-ZMuiYA+UF7BXBtsTBNcLBF5HzXzkyE6MLzJnL605LKE8GJylNjGc4jjxazAHUtcwT5/CEt6afRKViYB4X66dig==", - "requires": { - "@types/hast": "^2.0.0", - "hast-util-from-parse5": "^6.0.0", - "hast-util-to-parse5": "^6.0.0", - "html-void-elements": "^1.0.0", - "parse5": "^6.0.0", - "unist-util-position": "^3.0.0", - "vfile": "^4.0.0", - "web-namespaces": "^1.0.0", - "xtend": "^4.0.0", - "zwitch": "^1.0.0" - }, - "dependencies": { - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" - } - } - }, - "hast-util-to-html": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-7.1.3.tgz", - "integrity": "sha512-yk2+1p3EJTEE9ZEUkgHsUSVhIpCsL/bvT8E5GzmWc+N1Po5gBw+0F8bo7dpxXR0nu0bQVxVZGX2lBGF21CmeDw==", - "requires": { - "ccount": "^1.0.0", - "comma-separated-tokens": "^1.0.0", - "hast-util-is-element": "^1.0.0", - "hast-util-whitespace": "^1.0.0", - "html-void-elements": "^1.0.0", - "property-information": "^5.0.0", - "space-separated-tokens": "^1.0.0", - "stringify-entities": "^3.0.1", - "unist-util-is": "^4.0.0", - "xtend": "^4.0.0" - } - }, - "hast-util-to-parse5": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz", - "integrity": "sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ==", - "requires": { - "hast-to-hyperscript": "^9.0.0", - "property-information": "^5.0.0", - "web-namespaces": "^1.0.0", - "xtend": "^4.0.0", - "zwitch": "^1.0.0" - } - }, - "hast-util-whitespace": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-1.0.4.tgz", - "integrity": "sha512-I5GTdSfhYfAPNztx2xJRQpG8cuDSNt599/7YUn7Gx/WxNMsG+a835k97TDkFgk123cwjfwINaZknkKkphx/f2A==" - }, - "hastscript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz", - "integrity": "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==", - "requires": { - "@types/hast": "^2.0.0", - "comma-separated-tokens": "^1.0.0", - "hast-util-parse-selector": "^2.0.0", - "property-information": "^5.0.0", - "space-separated-tokens": "^1.0.0" - } - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" - }, - "header-case": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", - "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", - "requires": { - "capital-case": "^1.0.4", - "tslib": "^2.0.3" - } - }, - "hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "requires": { - "react-is": "^16.7.0" - }, - "dependencies": { - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - } - } - }, - "hosted-git-info": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", - "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", - "requires": { - "lru-cache": "^6.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - } - }, - "html-entities": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz", - "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==" - }, - "html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "html-void-elements": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.5.tgz", - "integrity": "sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==" - }, - "htmlparser2": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", - "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", - "requires": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "entities": "^4.4.0" - } - }, - "http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" - }, - "http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "requires": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - } - }, - "http2-wrapper": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", - "requires": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" - } - }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" - }, - "husky": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/husky/-/husky-7.0.4.tgz", - "integrity": "sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==", - "dev": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "requires": {} - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, - "ignore": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", - "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==" - }, - "image-size": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.2.tgz", - "integrity": "sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==", - "dev": true, - "requires": { - "queue": "6.0.2" - } - }, - "immer": { - "version": "9.0.21", - "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", - "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==" - }, - "immutable": { - "version": "3.7.6", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.7.6.tgz", - "integrity": "sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==" - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" - } - } - }, - "import-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-4.0.0.tgz", - "integrity": "sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ==" - }, - "import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==" - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" - }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "inline-style-parser": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", - "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" - }, - "inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.19", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "requires": { - "tslib": "^1.9.0" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "internal-slot": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", - "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", - "requires": { - "get-intrinsic": "^1.2.2", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" - } - }, - "intl-messageformat": { - "version": "10.5.11", - "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.5.11.tgz", - "integrity": "sha512-eYq5fkFBVxc7GIFDzpFQkDOZgNayNTQn4Oufe8jw6YY6OHVw70/4pA3FyCsQ0Gb2DnvEJEMmN2tOaXUGByM+kg==", - "requires": { - "@formatjs/ecma402-abstract": "1.18.2", - "@formatjs/fast-memoize": "2.2.0", - "@formatjs/icu-messageformat-parser": "2.7.6", - "tslib": "^2.4.0" - } - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "requires": { - "loose-envify": "^1.0.0" - } - }, - "ip-regex": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", - "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==" - }, - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" - }, - "is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", - "requires": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" - } - }, - "is-absolute-url": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-4.0.1.tgz", - "integrity": "sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==", - "dev": true - }, - "is-alphabetical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", - "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==" - }, - "is-alphanumeric": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz", - "integrity": "sha512-ZmRL7++ZkcMOfDuWZuMJyIVLr2keE1o/DeNWh1EmgqGhUcV+9BIVsx0BcSBOHTZqzjs4+dISzr2KAeBEWGgXeA==" - }, - "is-alphanumerical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", - "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", - "requires": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" - } - }, - "is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - }, - "is-async-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", - "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "requires": { - "has-bigints": "^1.0.1" - } - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==" - }, - "is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" - }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "requires": { - "ci-info": "^2.0.0" - } - }, - "is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "requires": { - "hasown": "^2.0.0" - } - }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-decimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", - "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==" - }, - "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" - }, - "is-finalizationregistry": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", - "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", - "requires": { - "call-bind": "^1.0.2" - } - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - }, - "is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-hexadecimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", - "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==" - }, - "is-installed-globally": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", - "requires": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" - } - }, - "is-invalid-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-invalid-path/-/is-invalid-path-0.1.0.tgz", - "integrity": "sha512-aZMG0T3F34mTg4eTdszcGXx54oiZ4NtHSft3hWNJMGJXUUqdIj3cOZuHcU0nCWWcY3jd7yRe/3AEm3vSNTpBGQ==", - "requires": { - "is-glob": "^2.0.0" - }, - "dependencies": { - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==" - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", - "requires": { - "is-extglob": "^1.0.0" - } - } - } - }, - "is-lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-lower-case/-/is-lower-case-2.0.2.tgz", - "integrity": "sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ==", - "requires": { - "tslib": "^2.0.3" - } - }, - "is-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", - "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==" - }, - "is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" - }, - "is-npm": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", - "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==" - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - }, - "is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==" - }, - "is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true - }, - "is-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" - }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", - "dev": true - }, - "is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", - "requires": { - "is-unc-path": "^1.0.0" - } - }, - "is-relative-url": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-relative-url/-/is-relative-url-3.0.0.tgz", - "integrity": "sha512-U1iSYRlY2GIMGuZx7gezlB5dp1Kheaym7zKzO1PV06mOihiWTXejLwm4poEJysPyXF+HtK/BEd0DVlcCh30pEA==", - "requires": { - "is-absolute-url": "^3.0.0" - }, - "dependencies": { - "is-absolute-url": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", - "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==" - } - } - }, - "is-root": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", - "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==" - }, - "is-set": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", - "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==" - }, - "is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "requires": { - "call-bind": "^1.0.2" - } - }, - "is-ssh": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz", - "integrity": "sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==", - "requires": { - "protocols": "^2.0.1" - } - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" - }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "requires": { - "has-symbols": "^1.0.2" - } - }, - "is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", - "requires": { - "which-typed-array": "^1.1.11" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" - }, - "is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", - "requires": { - "unc-path-regex": "^0.1.2" - } - }, - "is-upper-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-upper-case/-/is-upper-case-2.0.2.tgz", - "integrity": "sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ==", - "requires": { - "tslib": "^2.0.3" - } - }, - "is-valid-domain": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-valid-domain/-/is-valid-domain-0.1.6.tgz", - "integrity": "sha512-ZKtq737eFkZr71At8NxOFcP9O1K89gW3DkdrGMpp1upr/ueWjj+Weh4l9AI4rN0Gt8W2M1w7jrG2b/Yv83Ljpg==", - "requires": { - "punycode": "^2.1.1" - } - }, - "is-valid-path": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-valid-path/-/is-valid-path-0.1.1.tgz", - "integrity": "sha512-+kwPrVDu9Ms03L90Qaml+79+6DZHqHyRoANI6IsZJ/g8frhnfchDOBCa0RbQ6/kdHt5CS5OeIEyrYznNuVN+8A==", - "requires": { - "is-invalid-path": "^0.1.0" - } - }, - "is-weakmap": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", - "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==" - }, - "is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "requires": { - "call-bind": "^1.0.2" - } - }, - "is-weakset": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", - "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - } - }, - "is-whitespace-character": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", - "integrity": "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==" - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" - }, - "is-word-character": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz", - "integrity": "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==" - }, - "is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "requires": { - "is-docker": "^2.0.0" - } - }, - "is-yarn-global": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" - }, - "iterator.prototype": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", - "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", - "requires": { - "define-properties": "^1.2.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "reflect.getprototypeof": "^1.0.4", - "set-function-name": "^2.0.1" - } - }, - "jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jimp-compact": { - "version": "0.16.1-2", - "resolved": "https://registry.npmjs.org/jimp-compact/-/jimp-compact-0.16.1-2.tgz", - "integrity": "sha512-b2A3rRT1TITzqmaO70U2/uunCh43BQVq7BfRwGPkD5xj8/WZsR3sPTy9DENt+dNZGsel3zBEm1UtYegUxjZW7A==" - }, - "joi": { - "version": "17.11.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.11.0.tgz", - "integrity": "sha512-NgB+lZLNoqISVy1rZocE9PZI36bL/77ie924Ri43yEvi9GUUMPeyVIr8KdFTMUlby1p0PBYMk9spIxEUQYqrJQ==", - "requires": { - "@hapi/hoek": "^9.0.0", - "@hapi/topo": "^5.0.0", - "@sideway/address": "^4.1.3", - "@sideway/formula": "^3.0.1", - "@sideway/pinpoint": "^2.0.0" - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" - }, - "json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" - }, - "json-loader": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", - "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==" - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "jsx-ast-utils": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", - "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", - "requires": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "object.assign": "^4.1.4", - "object.values": "^1.1.6" - } - }, - "keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "requires": { - "json-buffer": "3.0.1" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - }, - "kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" - }, - "klona": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", - "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==" - }, - "language-subtag-registry": { - "version": "0.3.22", - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", - "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==" - }, - "language-tags": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", - "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", - "requires": { - "language-subtag-registry": "^0.3.20" - } - }, - "latest-version": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", - "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", - "requires": { - "package-json": "^6.3.0" - } - }, - "legacy-swc-helpers": { - "version": "npm:@swc/helpers@0.4.14", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz", - "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==", - "requires": { - "tslib": "^2.4.0" - } - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==" - }, - "lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - }, - "lint-staged": { - "version": "11.2.6", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-11.2.6.tgz", - "integrity": "sha512-Vti55pUnpvPE0J9936lKl0ngVeTdSZpEdTNhASbkaWX7J5R9OEifo1INBGQuGW4zmy6OG+TcWPJ3m5yuy5Q8Tg==", - "dev": true, - "requires": { - "cli-truncate": "2.1.0", - "colorette": "^1.4.0", - "commander": "^8.2.0", - "cosmiconfig": "^7.0.1", - "debug": "^4.3.2", - "enquirer": "^2.3.6", - "execa": "^5.1.1", - "listr2": "^3.12.2", - "micromatch": "^4.0.4", - "normalize-path": "^3.0.0", - "please-upgrade-node": "^3.2.0", - "string-argv": "0.3.1", - "stringify-object": "3.3.0", - "supports-color": "8.1.1" - }, - "dependencies": { - "cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" }, - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true - } - } - }, - "listr2": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", - "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", - "dev": true, - "requires": { - "cli-truncate": "^2.1.0", - "colorette": "^2.0.16", - "log-update": "^4.0.0", - "p-map": "^4.0.0", - "rfdc": "^1.3.0", - "rxjs": "^7.5.1", - "through": "^2.3.8", - "wrap-ansi": "^7.0.0" - }, - "dependencies": { - "colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true - } - } - }, - "lmdb": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-2.5.3.tgz", - "integrity": "sha512-iBA0cb13CobBSoGJLfZgnrykLlfJipDAnvtf+YwIqqzBEsTeQYsXrHaSBkaHd5wCWeabwrNvhjZoFMUrlo+eLw==", - "requires": { - "@lmdb/lmdb-darwin-arm64": "2.5.3", - "@lmdb/lmdb-darwin-x64": "2.5.3", - "@lmdb/lmdb-linux-arm": "2.5.3", - "@lmdb/lmdb-linux-arm64": "2.5.3", - "@lmdb/lmdb-linux-x64": "2.5.3", - "@lmdb/lmdb-win32-x64": "2.5.3", - "msgpackr": "^1.5.4", - "node-addon-api": "^4.3.0", - "node-gyp-build-optional-packages": "5.0.3", - "ordered-binary": "^1.2.4", - "weak-lru-cache": "^1.2.2" - }, - "dependencies": { - "node-addon-api": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" } - } - }, - "loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==" + ] }, - "loader-utils": { + "node_modules/micromark-util-decode-string": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "requires": { - "p-locate": "^5.0.0" - } - }, - "lock": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/lock/-/lock-1.1.0.tgz", - "integrity": "sha512-NZQIJJL5Rb9lMJ0Yl1JoVr9GSdo4HTPsUEWsSFzB8dE8DSoiLCVavWZPi7Rnlv/o73u6I24S/XYc/NmG4l8EKA==" - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "lodash.assignin": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", - "integrity": "sha512-yX/rx6d/UTVh7sSVWVSIMjfnz95evAgDFdb1ZozC35I9mSFCkmzptOzevxjgbQUsc78NR44LVHWjsoMQXy9FDg==" - }, - "lodash.bind": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz", - "integrity": "sha512-lxdsn7xxlCymgLYo1gGvVrfHmkjDiyqVv62FAeF2i5ta72BipE1SLxw8hPEPLhD4/247Ijw07UQH7Hq/chT5LA==" - }, - "lodash.chunk": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.chunk/-/lodash.chunk-4.2.0.tgz", - "integrity": "sha512-ZzydJKfUHJwHa+hF5X66zLFCBrWn5GeF28OHEr4WVWtNDXlQ/IjWKPBiikqKo2ne0+v6JgCgJ0GzJp8k8bHC7w==" - }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" - }, - "lodash.deburr": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/lodash.deburr/-/lodash.deburr-4.1.0.tgz", - "integrity": "sha512-m/M1U1f3ddMCs6Hq2tAsYThTBDaAKFDX3dwDo97GEYzamXi9SqUpjWi/Rrj/gf3X2n8ktwgZrlP1z6E3v/IExQ==" - }, - "lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" - }, - "lodash.every": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.every/-/lodash.every-4.6.0.tgz", - "integrity": "sha512-isF82d+65/sNvQ3aaQAW7LLHnnTxSN/2fm4rhYyuufLzA4VtHz6y6S5vFwe6PQVr2xdqUOyxBbTNKDpnmeu50w==" - }, - "lodash.filter": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", - "integrity": "sha512-pXYUy7PR8BCLwX5mgJ/aNtyOvuJTdZAo9EQFUvMIYugqmJxnrYaANvTbgndOzHSCSR0wnlBBfRXJL5SbWxo3FQ==" - }, - "lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==" - }, - "lodash.flattendeep": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==" - }, - "lodash.foreach": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", - "integrity": "sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==" - }, - "lodash.map": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", - "integrity": "sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==" - }, - "lodash.maxby": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.maxby/-/lodash.maxby-4.6.0.tgz", - "integrity": "sha512-QfTqQTwzmKxLy7VZlbx2M/ipWv8DCQ2F5BI/MRxLharOQ5V78yMSuB+JE+EuUM22txYfj09R2Q7hUlEYj7KdNg==" - }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" - }, - "lodash.pick": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", - "integrity": "sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==" - }, - "lodash.reduce": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", - "integrity": "sha512-6raRe2vxCYBhpBu+B+TtNGUzah+hQjVdu3E17wfusjyrXBka2nBS8OH/gjVZ5PvHOhWmIZTYri09Z6n/QfnNMw==" - }, - "lodash.reject": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz", - "integrity": "sha512-qkTuvgEzYdyhiJBx42YPzPo71R1aEr0z79kAv7Ixg8wPFEjgRgJdUsGMG3Hf3OYSF/kHI79XhNlt+5Ar6OzwxQ==" - }, - "lodash.some": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", - "integrity": "sha512-j7MJE+TuT51q9ggt4fSgVqro163BEFjAt3u97IqU+JA2DkWl80nFTrowzLpZ/BnpN7rrl0JA/593NAdd8p/scQ==" - }, - "lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==" - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" - }, - "log-update": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", - "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", - "dev": true, - "requires": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", + "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - } - } - }, - "longest-streak": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", - "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==" - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "requires": { - "tslib": "^2.0.3" - } - }, - "lower-case-first": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case-first/-/lower-case-first-2.0.2.tgz", - "integrity": "sha512-EVm/rR94FJTZi3zefZ82fLWab+GX14LJN4HrWBcuo6Evmsl9hEfnqxgcHCKb9q+mNf6EVdsjx/qucYFIIB84pg==", - "requires": { - "tslib": "^2.0.3" - } - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "requires": { - "yallist": "^3.0.2" - } - }, - "lru-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", - "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==", - "requires": { - "es5-ext": "~0.10.2" - } - }, - "magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "requires": { - "sourcemap-codec": "^1.4.8" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "requires": { - "semver": "^6.0.0" - } - }, - "map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "requires": { - "p-defer": "^1.0.0" - }, - "dependencies": { - "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==" - } - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==" - }, - "map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==" - }, - "markdown-escapes": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz", - "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==" - }, - "markdown-table": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", - "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==", - "requires": { - "repeat-string": "^1.0.0" - } - }, - "md5-file": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/md5-file/-/md5-file-5.0.0.tgz", - "integrity": "sha512-xbEFXCYVWrSx/gEKS1VPlg84h/4L20znVIulKw6kMfmBUAZNAnF00eczz9ICMl+/hjQGo5KSXRxbL/47X3rmMw==" - }, - "mdast-squeeze-paragraphs": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz", - "integrity": "sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ==", - "requires": { - "unist-util-remove": "^2.0.0" - }, - "dependencies": { - "unist-util-remove": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-2.1.0.tgz", - "integrity": "sha512-J8NYPyBm4baYLdCbjmf1bhPu45Cr1MWTm77qd9istEkzWpnN6O9tMsEbB2JhNnBCqGENRqEWomQ+He6au0B27Q==", - "requires": { - "unist-util-is": "^4.0.0" - } + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" } }, - "mdast-util-compact": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-1.0.4.tgz", - "integrity": "sha512-3YDMQHI5vRiS2uygEFYaqckibpJtKq5Sj2c8JioeOQBU6INpKbdWzfyLqFFnDwEcEnRFIdMsguzs5pC1Jp4Isg==", - "requires": { - "unist-util-visit": "^1.1.0" - }, - "dependencies": { - "unist-util-is": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", - "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==" - }, - "unist-util-visit": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", - "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", - "requires": { - "unist-util-visit-parents": "^2.0.0" - } + "node_modules/micromark-util-decode-string/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" }, - "unist-util-visit-parents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", - "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", - "requires": { - "unist-util-is": "^3.0.0" - } + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" } - } - }, - "mdast-util-definitions": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz", - "integrity": "sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==", - "requires": { - "unist-util-visit": "^2.0.0" - } - }, - "mdast-util-find-and-replace": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-1.1.1.tgz", - "integrity": "sha512-9cKl33Y21lyckGzpSmEQnIDjEfeeWelN5s1kUW1LwdB0Fkuq2u+4GdqcGEygYxJE8GVqCl0741bYXHgamfWAZA==", - "requires": { - "escape-string-regexp": "^4.0.0", - "unist-util-is": "^4.0.0", - "unist-util-visit-parents": "^3.0.0" - }, + ], "dependencies": { - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" - } - } - }, - "mdast-util-footnote": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/mdast-util-footnote/-/mdast-util-footnote-0.1.7.tgz", - "integrity": "sha512-QxNdO8qSxqbO2e3m09KwDKfWiLgqyCurdWTQ198NpbZ2hxntdc+VKS4fDJCmNWbAroUdYnSthu+XbZ8ovh8C3w==", - "requires": { - "mdast-util-to-markdown": "^0.6.0", - "micromark": "~2.11.0" + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "mdast-util-from-markdown": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", - "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", - "requires": { - "@types/mdast": "^3.0.0", - "mdast-util-to-string": "^2.0.0", - "micromark": "~2.11.0", - "parse-entities": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" - }, - "dependencies": { - "mdast-util-to-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", - "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==" + "node_modules/micromark-util-decode-string/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" } - } - }, - "mdast-util-gfm": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-0.1.2.tgz", - "integrity": "sha512-NNkhDx/qYcuOWB7xHUGWZYVXvjPFFd6afg6/e2g+SV4r9q5XUcCbV4Wfa3DLYIiD+xAEZc6K4MGaE/m0KDcPwQ==", - "requires": { - "mdast-util-gfm-autolink-literal": "^0.1.0", - "mdast-util-gfm-strikethrough": "^0.2.0", - "mdast-util-gfm-table": "^0.1.0", - "mdast-util-gfm-task-list-item": "^0.1.0", - "mdast-util-to-markdown": "^0.6.1" - } - }, - "mdast-util-gfm-autolink-literal": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-0.1.3.tgz", - "integrity": "sha512-GjmLjWrXg1wqMIO9+ZsRik/s7PLwTaeCHVB7vRxUwLntZc8mzmTsLVr6HW1yLokcnhfURsn5zmSVdi3/xWWu1A==", - "requires": { - "ccount": "^1.0.0", - "mdast-util-find-and-replace": "^1.1.0", - "micromark": "^2.11.3" - } - }, - "mdast-util-gfm-strikethrough": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-0.2.3.tgz", - "integrity": "sha512-5OQLXpt6qdbttcDG/UxYY7Yjj3e8P7X16LzvpX8pIQPYJ/C2Z1qFGMmcw+1PZMUM3Z8wt8NRfYTvCni93mgsgA==", - "requires": { - "mdast-util-to-markdown": "^0.6.0" - } - }, - "mdast-util-gfm-table": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-0.1.6.tgz", - "integrity": "sha512-j4yDxQ66AJSBwGkbpFEp9uG/LS1tZV3P33fN1gkyRB2LoRL+RR3f76m0HPHaby6F4Z5xr9Fv1URmATlRRUIpRQ==", - "requires": { - "markdown-table": "^2.0.0", - "mdast-util-to-markdown": "~0.6.0" - } - }, - "mdast-util-gfm-task-list-item": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-0.1.6.tgz", - "integrity": "sha512-/d51FFIfPsSmCIRNp7E6pozM9z1GYPIkSy1urQ8s/o4TC22BZ7DqfHFWiqBD23bc7J3vV1Fc9O4QIHBlfuit8A==", - "requires": { - "mdast-util-to-markdown": "~0.6.0" - } + ] }, - "mdast-util-to-hast": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.0.1.tgz", - "integrity": "sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA==", - "requires": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "mdast-util-definitions": "^4.0.0", - "mdurl": "^1.0.0", - "unist-builder": "^2.0.0", - "unist-util-generated": "^1.0.0", - "unist-util-position": "^3.0.0", - "unist-util-visit": "^2.0.0" - } - }, - "mdast-util-to-markdown": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", - "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", - "requires": { - "@types/unist": "^2.0.0", - "longest-streak": "^2.0.0", - "mdast-util-to-string": "^2.0.0", - "parse-entities": "^2.0.0", - "repeat-string": "^1.0.0", - "zwitch": "^1.0.0" - }, - "dependencies": { - "mdast-util-to-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", - "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==" + "node_modules/micromark-util-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" } - } + ] }, - "mdast-util-to-nlcst": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/mdast-util-to-nlcst/-/mdast-util-to-nlcst-3.2.3.tgz", - "integrity": "sha512-hPIsgEg7zCvdU6/qvjcR6lCmJeRuIEpZGY5xBV+pqzuMOvQajyyF8b6f24f8k3Rw8u40GwkI3aAxUXr3bB2xag==", - "requires": { - "nlcst-to-string": "^2.0.0", - "repeat-string": "^1.5.2", - "unist-util-position": "^3.0.0", - "vfile-location": "^2.0.0" - }, - "dependencies": { - "vfile-location": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.6.tgz", - "integrity": "sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA==" + "node_modules/micromark-util-events-to-acorn": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.2.tgz", + "integrity": "sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" } + ], + "dependencies": { + "@types/acorn": "^4.0.0", + "@types/estree": "^1.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" } }, - "mdast-util-to-string": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz", - "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==" + "node_modules/micromark-util-events-to-acorn/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] }, - "mdast-util-toc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-toc/-/mdast-util-toc-3.1.0.tgz", - "integrity": "sha512-Za0hqL1PqWrvxGtA/3NH9D5nhGAUS9grMM4obEAz5+zsk1RIw/vWUchkaoDLNdrwk05A0CSC5eEXng36/1qE5w==", - "requires": { - "github-slugger": "^1.2.1", - "mdast-util-to-string": "^1.0.5", - "unist-util-is": "^2.1.2", - "unist-util-visit": "^1.1.0" - }, - "dependencies": { - "unist-util-is": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-2.1.3.tgz", - "integrity": "sha512-4WbQX2iwfr/+PfM4U3zd2VNXY+dWtZsN1fLnWEi2QQXA4qyDYAZcDMfXUX0Cu6XZUHHAO9q4nyxxLT4Awk1qUA==" + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", + "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" }, - "unist-util-visit": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", - "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", - "requires": { - "unist-util-visit-parents": "^2.0.0" - } + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", + "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" }, - "unist-util-visit-parents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", - "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", - "requires": { - "unist-util-is": "^3.0.0" - }, - "dependencies": { - "unist-util-is": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", - "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==" - } - } + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" } }, - "mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" - }, - "mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==" - }, - "meant": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/meant/-/meant-1.0.3.tgz", - "integrity": "sha512-88ZRGcNxAq4EH38cQ4D85PM57pikCwS8Z99EWHODxN7KBY+UuPiqzRTtZzS8KTXO/ywSWbdjjJST2Hly/EQxLw==" - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" + "node_modules/micromark-util-normalize-identifier/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] }, - "mem": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/mem/-/mem-8.1.1.tgz", - "integrity": "sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==", - "requires": { - "map-age-cleaner": "^0.1.3", - "mimic-fn": "^3.1.0" - }, - "dependencies": { - "mimic-fn": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", - "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==" + "node_modules/micromark-util-resolve-all": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", + "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" } + ], + "dependencies": { + "micromark-util-types": "^2.0.0" } }, - "memfs": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", - "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", - "requires": { - "fs-monkey": "^1.0.4" + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" } }, - "memoize-one": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", - "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" - }, - "memoizee": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", - "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", - "requires": { - "d": "^1.0.1", - "es5-ext": "^0.10.53", - "es6-weak-map": "^2.0.3", - "event-emitter": "^0.3.5", - "is-promise": "^2.2.2", - "lru-queue": "^0.1.0", - "next-tick": "^1.1.0", - "timers-ext": "^0.1.7" - } - }, - "meow": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-7.1.1.tgz", - "integrity": "sha512-GWHvA5QOcS412WCo8vwKDlTelGLsCGBVevQB5Kva961rmNfun0PCbv5+xta2kUMFJyR8/oWnn7ddeKdosbAPbA==", - "requires": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^2.5.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.13.1", - "yargs-parser": "^18.1.3" - }, - "dependencies": { - "type-fest": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", - "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==" + "node_modules/micromark-util-sanitize-uri/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - }, - "merge-stream": { + "node_modules/micromark-util-sanitize-uri/node_modules/micromark-util-symbol": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] }, - "micromark": { - "version": "2.11.4", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", - "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", - "requires": { - "debug": "^4.0.0", - "parse-entities": "^2.0.0" + "node_modules/micromark-util-subtokenize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.0.tgz", + "integrity": "sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "micromark-extension-footnote": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/micromark-extension-footnote/-/micromark-extension-footnote-0.3.2.tgz", - "integrity": "sha512-gr/BeIxbIWQoUm02cIfK7mdMZ/fbroRpLsck4kvFtjbzP4yi+OPVbnukTc/zy0i7spC2xYE/dbX1Sur8BEDJsQ==", - "requires": { - "micromark": "~2.11.0" - } + "node_modules/micromark-util-subtokenize/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] }, - "micromark-extension-gfm": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-0.3.3.tgz", - "integrity": "sha512-oVN4zv5/tAIA+l3GbMi7lWeYpJ14oQyJ3uEim20ktYFAcfX1x3LNlFGGlmrZHt7u9YlKExmyJdDGaTt6cMSR/A==", - "requires": { - "micromark": "~2.11.0", - "micromark-extension-gfm-autolink-literal": "~0.5.0", - "micromark-extension-gfm-strikethrough": "~0.6.5", - "micromark-extension-gfm-table": "~0.4.0", - "micromark-extension-gfm-tagfilter": "~0.3.0", - "micromark-extension-gfm-task-list-item": "~0.3.0" - } + "node_modules/micromark-util-symbol": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz", + "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] }, - "micromark-extension-gfm-autolink-literal": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-0.5.7.tgz", - "integrity": "sha512-ePiDGH0/lhcngCe8FtH4ARFoxKTUelMp4L7Gg2pujYD5CSMb9PbblnyL+AAMud/SNMyusbS2XDSiPIRcQoNFAw==", - "requires": { - "micromark": "~2.11.3" - } + "node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] }, - "micromark-extension-gfm-strikethrough": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-0.6.5.tgz", - "integrity": "sha512-PpOKlgokpQRwUesRwWEp+fHjGGkZEejj83k9gU5iXCbDG+XBA92BqnRKYJdfqfkrRcZRgGuPuXb7DaK/DmxOhw==", - "requires": { - "micromark": "~2.11.0" + "node_modules/micromark/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "micromark-extension-gfm-table": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-0.4.3.tgz", - "integrity": "sha512-hVGvESPq0fk6ALWtomcwmgLvH8ZSVpcPjzi0AjPclB9FsVRgMtGZkUcpE0zgjOCFAznKepF4z3hX8z6e3HODdA==", - "requires": { - "micromark": "~2.11.0" + "node_modules/micromark/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "micromark-extension-gfm-tagfilter": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-0.3.0.tgz", - "integrity": "sha512-9GU0xBatryXifL//FJH+tAZ6i240xQuFrSL7mYi8f4oZSbc+NvXjkrHemeYP0+L4ZUT+Ptz3b95zhUZnMtoi/Q==" - }, - "micromark-extension-gfm-task-list-item": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-0.3.3.tgz", - "integrity": "sha512-0zvM5iSLKrc/NQl84pZSjGo66aTGd57C1idmlWmE87lkMcXrTxg1uXa/nXomxJytoje9trP0NDLvw4bZ/Z/XCQ==", - "requires": { - "micromark": "~2.11.0" - } + "node_modules/micromark/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] }, - "micromatch": { + "node_modules/micromatch": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "requires": { + "dependencies": { "braces": "^3.0.2", "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" } }, - "mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==" + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } }, - "mime-db": { + "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } }, - "mime-types": { + "node_modules/mime-types": { "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "requires": { + "dependencies": { "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" } }, - "mimic-fn": { + "node_modules/mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + "node_modules/mimic-response": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", + "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" - }, - "mini-css-extract-plugin": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-1.6.2.tgz", - "integrity": "sha512-WhDvO3SjGm40oV5y26GjMJYjd2UMqrLAGKy5YS2/3QKJy2F7jgynuHTir/tgUUOiNQu5saXHdc8reo7YuhhT4Q==", - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0", - "webpack-sources": "^1.1.0" + "node_modules/mini-css-extract-plugin": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.8.1.tgz", + "integrity": "sha512-/1HDlyFRxWIZPI1ZpgqlZ8jMw/1Dp/dl3P0L1jtZ+zVcHqwPhGwaJwKL00WVgfnBy6PWCde9W65or7IIETImuA==", + "dependencies": { + "schema-utils": "^4.0.0", + "tapable": "^2.2.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/miniflare": { + "version": "3.20240404.0", + "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-3.20240404.0.tgz", + "integrity": "sha512-+FOTcztPMW3akmucX4vE0PWMNvP4JBwl4s9ieA84fcOaDtTbtfU1rHXpcacj16klpUpvSnD6xd8Sjsn6SJXPfg==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "0.8.1", + "acorn": "^8.8.0", + "acorn-walk": "^8.2.0", + "capnp-ts": "^0.7.0", + "exit-hook": "^2.2.1", + "glob-to-regexp": "^0.4.1", + "stoppable": "^1.1.0", + "undici": "^5.28.2", + "workerd": "1.20240404.0", + "ws": "^8.11.0", + "youch": "^3.2.2", + "zod": "^3.20.6" + }, + "bin": { + "miniflare": "bootstrap.js" + }, + "engines": { + "node": ">=16.13" + } + }, + "node_modules/miniflare/node_modules/ws": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "mini-svg-data-uri": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz", - "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==" + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" }, - "minimatch": { + "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "requires": { + "dependencies": { "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, - "minimist": { + "node_modules/minimist": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" - }, - "minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "requires": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - }, - "dependencies": { - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==" - } + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "mitt": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz", - "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==" - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "requires": { - "minimist": "^1.2.6" + "node_modules/mrmime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", + "engines": { + "node": ">=10" } }, - "mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" - }, - "moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" - }, - "mrmime": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", - "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", - "dev": true - }, - "ms": { + "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "msgpackr": { - "version": "1.9.9", - "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.9.9.tgz", - "integrity": "sha512-sbn6mioS2w0lq1O6PpGtsv6Gy8roWM+o3o4Sqjd6DudrL/nOugY+KyJUimoWzHnf9OkO0T6broHFnYE/R05t9A==", - "requires": { - "msgpackr-extract": "^3.0.2" - } - }, - "msgpackr-extract": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.2.tgz", - "integrity": "sha512-SdzXp4kD/Qf8agZ9+iTu6eql0m3kWm1A2y1hkpTeVNENutaB0BwHlSvAIaMxwntmRUAUjon2V4L8Z/njd0Ct8A==", - "optional": true, - "requires": { - "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.2", - "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.2", - "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.2", - "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.2", - "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.2", - "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.2", - "node-gyp-build-optional-packages": "5.0.7" - }, - "dependencies": { - "node-gyp-build-optional-packages": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.7.tgz", - "integrity": "sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w==", - "optional": true - } + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" } }, - "multer": { - "version": "1.4.5-lts.1", - "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz", - "integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==", - "requires": { - "append-field": "^1.0.0", - "busboy": "^1.0.0", - "concat-stream": "^1.5.2", - "mkdirp": "^0.5.4", - "object-assign": "^4.1.1", - "type-is": "^1.6.4", - "xtend": "^4.0.0" + "node_modules/mustache": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", + "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", + "dev": true, + "bin": { + "mustache": "bin/mustache" } }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" - }, - "nanoid": { + "node_modules/nanoid": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==" - }, - "napi-build-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", - "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" - }, - "needle": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz", - "integrity": "sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==", - "requires": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "requires": { - "ms": "^2.1.1" - } + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "negotiator": { + "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } }, - "neo-async": { + "node_modules/neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, - "next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" - }, - "nlcst-to-string": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-2.0.4.tgz", - "integrity": "sha512-3x3jwTd6UPG7vi5k4GEzvxJ5rDA7hVUIRNHPblKuMVP9Z3xmlsd9cgLcpAMkc5uPOBna82EeshROFhsPkbnTZg==" - }, - "no-case": { + "node_modules/no-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "requires": { + "dependencies": { "lower-case": "^2.0.2", "tslib": "^2.0.3" } }, - "node-abi": { - "version": "3.51.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.51.0.tgz", - "integrity": "sha512-SQkEP4hmNWjlniS5zdnfIXTk1x7Ome85RDzHlTbBtzE97Gfwz/Ipw4v/Ryk20DWIy3yCNVLVlGKApCnmvYoJbA==", - "requires": { - "semver": "^7.3.5" - }, + "node_modules/node-emoji": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.1.3.tgz", + "integrity": "sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==", "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - } - }, - "node-addon-api": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.0.0.tgz", - "integrity": "sha512-vgbBJTS4m5/KkE16t5Ly0WW9hz46swAstv0hYYwMtbG7AznRhNyfLRe8HZAiWIpcHzoO7HxhLuBQj9rJ/Ho0ZA==" - }, - "node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "requires": { - "whatwg-url": "^5.0.0" + "@sindresorhus/is": "^4.6.0", + "char-regex": "^1.0.2", + "emojilib": "^2.4.0", + "skin-tone": "^2.0.0" + }, + "engines": { + "node": ">=18" } }, - "node-gyp-build-optional-packages": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.3.tgz", - "integrity": "sha512-k75jcVzk5wnnc/FMxsf4udAoTEUv2jY3ycfdSd3yWu6Cnd1oee6/CfZJApyscA4FJOmdoixWwiwOyf16RzD5JA==" - }, - "node-html-parser": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-5.4.2.tgz", - "integrity": "sha512-RaBPP3+51hPne/OolXxcz89iYvQvKOydaqoePpOgXcrOKZhjVIzmpKZz+Hd/RBO2/zN2q6CNJhQzucVz+u3Jyw==", - "requires": { - "css-select": "^4.2.1", - "he": "1.2.0" - }, - "dependencies": { - "css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "requires": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - } - }, - "dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "requires": { - "domelementtype": "^2.2.0" - } - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" - } + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "engines": { + "node": ">= 6.13.0" } }, - "node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==" - }, - "node-object-hash": { - "version": "2.3.10", - "resolved": "https://registry.npmjs.org/node-object-hash/-/node-object-hash-2.3.10.tgz", - "integrity": "sha512-jY5dPJzw6NHd/KPSfPKJ+IHoFS81/tJ43r34ZeNMXGzCOM8jwQDCD12HYayKIB6MuznrnqIYy2e891NA2g0ibA==" - }, - "node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - }, - "dependencies": { - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" - }, - "semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" - } - } + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" }, - "normalize-path": { + "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } }, - "normalize-range": { + "node_modules/normalize-range": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==" + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "engines": { + "node": ">=0.10.0" + } }, - "normalize-url": { + "node_modules/normalize-url": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" - }, - "normalize.css": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.1.tgz", - "integrity": "sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==" - }, - "not": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/not/-/not-0.1.0.tgz", - "integrity": "sha512-5PDmaAsVfnWUgTUbJ3ERwn7u79Z0dYxN9ErxCpVJJqe2RK0PJ3z+iFUxuqjwtlDDegXvtWoxD/3Fzxox7tFGWA==" + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "npm-run-path": { + "node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "requires": { + "dependencies": { "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "nth-check": { + "node_modules/nprogress": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", + "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==" + }, + "node_modules/nth-check": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "requires": { + "dependencies": { "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" } }, - "null-loader": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/null-loader/-/null-loader-4.0.1.tgz", - "integrity": "sha512-pxqVbi4U6N26lq+LmgIbB5XATP0VdZKOG25DhHi8btMmJJefGArFyDg1yc4U3hWCJbMqSrw0qyrz1UQX+qYXqg==", - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - } - }, - "nullthrows": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", - "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==" - }, - "object-assign": { + "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } }, - "object-inspect": { + "node_modules/object-inspect": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==" + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "object-keys": { + "node_modules/object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - }, - "object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - } - }, - "object.entries": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", - "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" } }, - "object.fromentries": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", - "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - } - }, - "object.getownpropertydescriptors": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.7.tgz", - "integrity": "sha512-PrJz0C2xJ58FNn11XV2lr4Jt5Gzl94qpy9Lu0JlfEj14z88sqbSBJCBEzdlNUCzY2gburhbrwOZ5BHCmuNUy0g==", - "requires": { - "array.prototype.reduce": "^1.0.6", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "safe-array-concat": "^1.0.0" - } - }, - "object.groupby": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", - "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1" + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "object.hasown": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", - "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", - "requires": { - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - } + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" }, - "object.values": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", - "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "node_modules/odiff-bin": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/odiff-bin/-/odiff-bin-2.6.1.tgz", + "integrity": "sha512-SeI3ehAqjQUMlUkGjvIFGKoHZIO3zG1N1wMRhf7ojM7Vb+HcyB2RKSSCu7kbvYVtSdZADEBSJ7nvP/d7iBLivA==", + "hasInstallScript": true, + "bin": { + "odiff": "bin/odiff" } }, - "objectFitPolyfill": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/objectFitPolyfill/-/objectFitPolyfill-2.3.5.tgz", - "integrity": "sha512-8Quz071ZmGi0QWEG4xB3Bv5Lpw6K0Uca87FLoLMKMWjB6qIq9IyBegP3b/VLNxv2WYvIMGoeUQ+c6ibUkNa8TA==" - }, - "on-finished": { + "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "requires": { + "dependencies": { "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" } }, - "on-headers": { + "node_modules/on-headers": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "engines": { + "node": ">= 0.8" + } }, - "once": { + "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "requires": { + "dependencies": { "wrappy": "1" } }, - "onetime": { + "node_modules/onetime": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "requires": { + "dependencies": { "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "open": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", - "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", - "requires": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "opener": { + "node_modules/opener": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", - "dev": true - }, - "opentracing": { - "version": "0.14.7", - "resolved": "https://registry.npmjs.org/opentracing/-/opentracing-0.14.7.tgz", - "integrity": "sha512-vz9iS7MJ5+Bp1URw8Khvdyw1H/hGvzHWlKQ7eRrQojSCDL1/SrWfrY9QebLw97n2deyRtzHRC3MkQfVNUCo91Q==" - }, - "optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "requires": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - } - }, - "ordered-binary": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.4.1.tgz", - "integrity": "sha512-9LtiGlPy982CsgxZvJGNNp2/NnrgEr6EAyN3iIEP3/8vd3YLgAZQHbQ75ZrkfBRGrNg37Dk3U6tuVb+B4Xfslg==" - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==" - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==" - }, - "p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==" + "bin": { + "opener": "bin/opener-bin.js" + } }, - "p-defer": { + "node_modules/p-cancelable": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-3.0.0.tgz", - "integrity": "sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw==" - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==" + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "engines": { + "node": ">=12.20" + } }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "requires": { - "yocto-queue": "^0.1.0" + "node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "requires": { - "p-limit": "^3.0.2" + "node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "p-map": { + "node_modules/p-map": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { + "dependencies": { "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "p-queue": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", - "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", - "requires": { - "eventemitter3": "^4.0.4", - "p-timeout": "^3.2.0" - } - }, - "p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", - "requires": { - "p-finally": "^1.0.0" + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" } }, - "p-try": { + "node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } }, - "package-json": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", - "requires": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.0" - }, - "dependencies": { - "@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" - }, - "@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "requires": { - "defer-to-connect": "^1.0.1" - } - }, - "cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - } - }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", - "requires": { - "mimic-response": "^1.0.0" - } - }, - "defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" - }, - "got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - }, - "dependencies": { - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "requires": { - "pump": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" - } - } - }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==" - }, - "keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "requires": { - "json-buffer": "3.0.0" - } - }, - "normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==" - }, - "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" - }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", - "requires": { - "lowercase-keys": "^1.0.0" - }, - "dependencies": { - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" - } - } - } + "node_modules/package-json": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.1.tgz", + "integrity": "sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==", + "dependencies": { + "got": "^12.1.0", + "registry-auth-token": "^5.0.1", + "registry-url": "^6.0.0", + "semver": "^7.3.7" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "param-case": { + "node_modules/param-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "requires": { + "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" } }, - "parent-module": { + "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "requires": { + "dependencies": { "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "parse-english": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/parse-english/-/parse-english-4.2.0.tgz", - "integrity": "sha512-jw5N6wZUZViIw3VLG/FUSeL3vDhfw5Q2g4E3nYC69Mm5ANbh9ZWd+eligQbeUoyObZM8neynTn3l14e09pjEWg==", - "requires": { - "nlcst-to-string": "^2.0.0", - "parse-latin": "^4.0.0", - "unist-util-modify-children": "^2.0.0", - "unist-util-visit-children": "^1.0.0" + "node_modules/parse-entities": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz", + "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "parse-entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", - "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", - "requires": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" - } - }, - "parse-filepath": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", - "requires": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" - } + "node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", + "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" }, - "parse-json": { + "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "requires": { + "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "parse-latin": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-4.3.0.tgz", - "integrity": "sha512-TYKL+K98dcAWoCw/Ac1yrPviU8Trk+/gmjQVaoWEFDZmVD4KRg6c/80xKqNNFQObo2mTONgF8trzAf2UTwKafw==", - "requires": { - "nlcst-to-string": "^2.0.0", - "unist-util-modify-children": "^2.0.0", - "unist-util-visit-children": "^1.0.0" - } - }, - "parse-numeric-range": { + "node_modules/parse-numeric-range": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz", "integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==" }, - "parse-path": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-7.0.0.tgz", - "integrity": "sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==", - "requires": { - "protocols": "^2.0.0" - } - }, - "parse-srcset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz", - "integrity": "sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==" - }, - "parse-url": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-8.1.0.tgz", - "integrity": "sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==", - "requires": { - "parse-path": "^7.0.0" - } - }, - "parse5": { + "node_modules/parse5": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", - "requires": { + "dependencies": { "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "parse5-htmlparser2-tree-adapter": { + "node_modules/parse5-htmlparser2-tree-adapter": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", - "requires": { + "dependencies": { "domhandler": "^5.0.2", "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "parseqs": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz", - "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==" - }, - "parseuri": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz", - "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==" - }, - "parseurl": { + "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } }, - "pascal-case": { + "node_modules/pascal-case": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "requires": { + "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" } }, - "password-prompt": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/password-prompt/-/password-prompt-1.1.3.tgz", - "integrity": "sha512-HkrjG2aJlvF0t2BMH0e2LB/EHf3Lcq3fNMzy4GYHcQblAvOl+QQji1Lx7WRBMqpVK8p+KR7bCg7oqAMXtdgqyw==", - "requires": { - "ansi-escapes": "^4.3.2", - "cross-spawn": "^7.0.3" - } - }, - "path": { - "version": "0.12.7", - "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", - "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==", - "requires": { - "process": "^0.11.1", - "util": "^0.10.3" - } - }, - "path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "dev": true - }, - "path-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", - "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", - "requires": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" + "node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" - }, - "path-is-absolute": { + "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } }, - "path-is-inside": { + "node_modules/path-is-inside": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==" }, - "path-key": { + "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } }, - "path-parse": { + "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, - "path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", - "requires": { - "path-root-regex": "^0.1.0" - } - }, - "path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==" - }, - "path-to-regexp": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", - "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==", - "dev": true + "node_modules/path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "dependencies": { + "isarray": "0.0.1" + } }, - "path-type": { + "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" - }, - "peek-readable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz", - "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==" - }, - "pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "dev": true + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" + } }, - "physical-cpu-count": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz", - "integrity": "sha512-rxJOljMuWtYlvREBmd6TZYanfcPhNUKtGDZBjBBS8WG1dpN2iwPsRJZgQqN/OtJuiQckdRFOfzogqJClTrsi7g==" + "node_modules/periscopic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", + "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^3.0.0", + "is-reference": "^3.0.0" + } }, - "picocolors": { + "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, - "picomatch": { + "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "requires": { - "find-up": "^4.0.0" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "requires": { - "p-limit": "^2.2.0" - } - } + "node_modules/pixelmatch": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-5.3.0.tgz", + "integrity": "sha512-o8mkY4E/+LNUf6LzX96ht6k6CEDi65k9G2rjMtBe9Oo+VPKSvl+0GKHuH/AlG+GA5LPG/i5hrekkxUc3s2HU+Q==", + "dependencies": { + "pngjs": "^6.0.0" + }, + "bin": { + "pixelmatch": "bin/pixelmatch" + } + }, + "node_modules/pixelmatch/node_modules/pngjs": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", + "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==", + "engines": { + "node": ">=12.13.0" + } + }, + "node_modules/pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "dependencies": { + "find-up": "^6.3.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "pkg-up": { + "node_modules/pkg-up": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", - "requires": { + "dependencies": { "find-up": "^3.0.0" }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-up/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==" - } + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "platform": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz", - "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==" + "node_modules/pkg-up/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } }, - "please-upgrade-node": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", - "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", - "dev": true, - "requires": { - "semver-compare": "^1.0.0" + "node_modules/pkg-up/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-up/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/playwright-core": { + "version": "1.40.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.40.1.tgz", + "integrity": "sha512-+hkOycxPiV534c4HhpfX6yrlawqVUzITRKwHAmYfmsVreltEl6fAZJ3DPfLMOODw0H3s1Itd6MDCWmP1fl/QvQ==", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/pngjs": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-7.0.0.tgz", + "integrity": "sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==", + "engines": { + "node": ">=14.19.0" } }, - "postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", - "requires": { - "nanoid": "^3.3.6", + "node_modules/postcss": { + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" } }, - "postcss-calc": { + "node_modules/postcss-calc": { "version": "8.2.4", "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", - "requires": { + "dependencies": { "postcss-selector-parser": "^6.0.9", "postcss-value-parser": "^4.2.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" } }, - "postcss-colormin": { + "node_modules/postcss-colormin": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz", "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==", - "requires": { + "dependencies": { "browserslist": "^4.21.4", "caniuse-api": "^3.0.0", "colord": "^2.9.1", "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "postcss-convert-values": { + "node_modules/postcss-convert-values": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz", "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==", - "requires": { + "dependencies": { "browserslist": "^4.21.4", "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "postcss-discard-comments": { + "node_modules/postcss-discard-comments": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", - "requires": {} + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } }, - "postcss-discard-duplicates": { + "node_modules/postcss-discard-duplicates": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", - "requires": {} + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } }, - "postcss-discard-empty": { + "node_modules/postcss-discard-empty": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", - "requires": {} + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } }, - "postcss-discard-overridden": { + "node_modules/postcss-discard-overridden": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", - "requires": {} + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } }, - "postcss-flexbugs-fixes": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz", - "integrity": "sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==", - "requires": {} + "node_modules/postcss-discard-unused": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-5.1.0.tgz", + "integrity": "sha512-KwLWymI9hbwXmJa0dkrzpRbSJEh0vVUd7r8t0yOGPcfKzyJJxFM8kLyC5Ev9avji6nY95pOp1W6HqIrfT+0VGw==", + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } }, - "postcss-loader": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-5.3.0.tgz", - "integrity": "sha512-/+Z1RAmssdiSLgIZwnJHwBMnlABPgF7giYzTN2NOfr9D21IJZ4mQC1R2miwp80zno9M4zMD/umGI8cR+2EL5zw==", - "requires": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.4", - "semver": "^7.3.4" - }, - "dependencies": { - "cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" + "node_modules/postcss-loader": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.4.tgz", + "integrity": "sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A==", + "dependencies": { + "cosmiconfig": "^8.3.5", + "jiti": "^1.20.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/postcss-loader/node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true } } }, - "postcss-merge-longhand": { + "node_modules/postcss-merge-idents": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-5.1.1.tgz", + "integrity": "sha512-pCijL1TREiCoog5nQp7wUe+TUonA2tC2sQ54UGeMmryK3UFGIYKqDyjnqd6RcuI4znFn9hWSLNN8xKE/vWcUQw==", + "dependencies": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-longhand": { "version": "5.1.7", "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==", - "requires": { + "dependencies": { "postcss-value-parser": "^4.2.0", "stylehacks": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "postcss-merge-rules": { + "node_modules/postcss-merge-rules": { "version": "5.1.4", "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz", "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==", - "requires": { + "dependencies": { "browserslist": "^4.21.4", "caniuse-api": "^3.0.0", "cssnano-utils": "^3.1.0", "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "postcss-minify-font-values": { + "node_modules/postcss-minify-font-values": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", - "requires": { + "dependencies": { "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "postcss-minify-gradients": { + "node_modules/postcss-minify-gradients": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", - "requires": { + "dependencies": { "colord": "^2.9.1", "cssnano-utils": "^3.1.0", "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "postcss-minify-params": { + "node_modules/postcss-minify-params": { "version": "5.1.4", "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz", "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==", - "requires": { + "dependencies": { "browserslist": "^4.21.4", "cssnano-utils": "^3.1.0", "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "postcss-minify-selectors": { + "node_modules/postcss-minify-selectors": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", - "requires": { + "dependencies": { "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "postcss-modules-extract-imports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "requires": {} + "node_modules/postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } }, - "postcss-modules-local-by-default": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", - "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", - "requires": { + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz", + "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==", + "dependencies": { "icss-utils": "^5.0.0", "postcss-selector-parser": "^6.0.2", "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", - "requires": { + "node_modules/postcss-modules-scope": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz", + "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==", + "dependencies": { "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "postcss-modules-values": { + "node_modules/postcss-modules-values": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", - "requires": { + "dependencies": { "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "postcss-normalize-charset": { + "node_modules/postcss-normalize-charset": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", - "requires": {} + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } }, - "postcss-normalize-display-values": { + "node_modules/postcss-normalize-display-values": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", - "requires": { + "dependencies": { "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "postcss-normalize-positions": { + "node_modules/postcss-normalize-positions": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", - "requires": { + "dependencies": { "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "postcss-normalize-repeat-style": { + "node_modules/postcss-normalize-repeat-style": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", - "requires": { + "dependencies": { "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "postcss-normalize-string": { + "node_modules/postcss-normalize-string": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", - "requires": { + "dependencies": { "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "postcss-normalize-timing-functions": { + "node_modules/postcss-normalize-timing-functions": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", - "requires": { + "dependencies": { "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "postcss-normalize-unicode": { + "node_modules/postcss-normalize-unicode": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==", - "requires": { + "dependencies": { "browserslist": "^4.21.4", "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "postcss-normalize-url": { + "node_modules/postcss-normalize-url": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", - "requires": { + "dependencies": { "normalize-url": "^6.0.1", "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "postcss-normalize-whitespace": { + "node_modules/postcss-normalize-whitespace": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", - "requires": { + "dependencies": { "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "postcss-ordered-values": { + "node_modules/postcss-ordered-values": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", - "requires": { + "dependencies": { "cssnano-utils": "^3.1.0", "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-idents": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-5.2.0.tgz", + "integrity": "sha512-BTrLjICoSB6gxbc58D5mdBK8OhXRDqud/zodYfdSi52qvDHdMwk+9kB9xsM8yJThH/sZU5A6QVSmMmaN001gIg==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "postcss-reduce-initial": { + "node_modules/postcss-reduce-initial": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz", "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==", - "requires": { + "dependencies": { "browserslist": "^4.21.4", "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "postcss-reduce-transforms": { + "node_modules/postcss-reduce-transforms": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", - "requires": { + "dependencies": { "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "postcss-selector-parser": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", - "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", - "requires": { + "node_modules/postcss-selector-parser": { + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz", + "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==", + "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-sort-media-queries": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/postcss-sort-media-queries/-/postcss-sort-media-queries-4.4.1.tgz", + "integrity": "sha512-QDESFzDDGKgpiIh4GYXsSy6sek2yAwQx1JASl5AxBtU1Lq2JfKBljIPNdil989NcSKRQX1ToiaKphImtBuhXWw==", + "dependencies": { + "sort-css-media-queries": "2.1.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.4.16" } }, - "postcss-svgo": { + "node_modules/postcss-svgo": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", - "requires": { + "dependencies": { "postcss-value-parser": "^4.2.0", "svgo": "^2.7.0" }, - "dependencies": { - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" - }, - "css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "requires": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - } - }, - "css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "requires": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - } - }, - "dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "requires": { - "domelementtype": "^2.2.0" - } - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" - }, - "mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", - "requires": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" - } - } + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "postcss-unique-selectors": { + "node_modules/postcss-unique-selectors": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", - "requires": { + "dependencies": { "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "postcss-value-parser": { + "node_modules/postcss-value-parser": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" }, - "prebuild-install": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", - "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", - "requires": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^3.3.0", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - }, - "dependencies": { - "detect-libc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", - "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==" - } + "node_modules/postcss-zindex": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-5.1.0.tgz", + "integrity": "sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" - }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==" - }, - "prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "dev": true - }, - "prettier-plugin-prisma": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/prettier-plugin-prisma/-/prettier-plugin-prisma-4.13.0.tgz", - "integrity": "sha512-bnOWoQTVXM9VWBErPGE6rVgI8kCQts+DMQolg7Sj/Q0/oAlpDYOhce4ljQKf5BhJW061yrB3+CRVps6tNcUkQg==", - "dev": true, - "requires": { - "@prisma/prisma-fmt-wasm": "4.13.0-52.integration-mobc-upstream-d100a9299fcb9cffb064301998e9a94ce2722c49" + "node_modules/posthog-node": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/posthog-node/-/posthog-node-3.5.0.tgz", + "integrity": "sha512-u1lzJiLiYH3ShBS5s+uy/FEiAnpkYfNuKs+GmkYo9Z6hO6UXWKPkib9mtTx3y2pbV7O/+Pjup1+/1Q3CA55Z2Q==", + "dependencies": { + "axios": "^1.6.2", + "rusha": "^0.8.14" + }, + "engines": { + "node": ">=15.0.0" } }, - "pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==" - }, - "pretty-error": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", - "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", - "requires": { + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dependencies": { "lodash": "^4.17.20", - "renderkid": "^2.0.4" + "renderkid": "^3.0.0" } }, - "prism-react-renderer": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-1.2.1.tgz", - "integrity": "sha512-w23ch4f75V1Tnz8DajsYKvY5lF7H1+WvzvLUcF0paFxkTHSp42RS0H5CttdN2Q8RR3DRGZ9v5xD/h3n8C8kGmg==", - "dev": true, - "requires": {} - }, - "prisma": { - "version": "4.16.2", - "resolved": "https://registry.npmjs.org/prisma/-/prisma-4.16.2.tgz", - "integrity": "sha512-SYCsBvDf0/7XSJyf2cHTLjLeTLVXYfqp7pG5eEVafFLeT0u/hLFz/9W196nDRGUOo1JfPatAEb+uEnTQImQC1g==", - "devOptional": true, - "requires": { - "@prisma/engines": "4.16.2" + "node_modules/pretty-time": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz", + "integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==", + "engines": { + "node": ">=4" } }, - "probe-image-size": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/probe-image-size/-/probe-image-size-7.2.3.tgz", - "integrity": "sha512-HubhG4Rb2UH8YtV4ba0Vp5bQ7L78RTONYu/ujmCu5nBI8wGv24s4E9xSKBi0N1MowRpxk76pFCpJtW0KPzOK0w==", - "requires": { - "lodash.merge": "^4.6.2", - "needle": "^2.5.2", - "stream-parser": "~0.3.1" + "node_modules/printable-characters": { + "version": "1.0.42", + "resolved": "https://registry.npmjs.org/printable-characters/-/printable-characters-1.0.42.tgz", + "integrity": "sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==", + "dev": true + }, + "node_modules/prism-react-renderer": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-2.3.1.tgz", + "integrity": "sha512-Rdf+HzBLR7KYjzpJ1rSoxT9ioO85nZngQEoFIhL07XhtJHlCU3SOz0GJ6+qvMyQe0Se+BV3qpe6Yd/NmQF5Juw==", + "dependencies": { + "@types/prismjs": "^1.26.0", + "clsx": "^2.0.0" + }, + "peerDependencies": { + "react": ">=16.0.0" } }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" + "node_modules/prismjs": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "engines": { + "node": ">=6" + } }, - "process-nextick-args": { + "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" - }, - "promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "requires": { - "asap": "~2.0.3" - } - }, - "prompts": { + "node_modules/prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "requires": { + "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" } }, - "prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", - "requires": { + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", - "react-is": "^16.8.1" - }, - "dependencies": { - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - } - } - }, - "proper-lockfile": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", - "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", - "requires": { - "graceful-fs": "^4.2.4", - "retry": "^0.12.0", - "signal-exit": "^3.0.2" + "react-is": "^16.13.1" } }, - "property-information": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", - "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", - "requires": { - "xtend": "^4.0.0" + "node_modules/property-information": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", + "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "protocols": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz", - "integrity": "sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==" + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==" }, - "proxy-addr": { + "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "requires": { + "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" } }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" } }, - "punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==" + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, - "pupa": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", - "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", - "requires": { - "escape-goat": "^2.0.0" - } + "node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==" - }, - "qs": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", - "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", - "requires": { - "side-channel": "^1.0.4" + "node_modules/pupa": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz", + "integrity": "sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==", + "dependencies": { + "escape-goat": "^4.0.0" + }, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "query-string": { - "version": "6.14.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz", - "integrity": "sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==", - "requires": { - "decode-uri-component": "^0.2.0", - "filter-obj": "^1.1.0", - "split-on-first": "^1.0.0", - "strict-uri-encode": "^2.0.0" + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "queue": { + "node_modules/queue": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", - "dev": true, - "requires": { + "dependencies": { "inherits": "~2.0.3" } }, - "queue-microtask": { + "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "quick-lru": { + "node_modules/quick-lru": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "randombytes": { + "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "requires": { + "dependencies": { "safe-buffer": "^5.1.0" } }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + "node_modules/range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==", + "engines": { + "node": ">= 0.6" + } }, - "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "requires": { + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", "iconv-lite": "0.4.24", "unpipe": "1.0.0" }, - "dependencies": { - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" - } + "engines": { + "node": ">= 0.8" } }, - "raw-loader": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz", - "integrity": "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==", - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" } }, - "rc": { + "node_modules/rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "requires": { + "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" }, - "dependencies": { - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==" - } + "bin": { + "rc": "cli.js" } }, - "react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "engines": { + "node": ">=0.10.0" } }, - "react-copy-to-clipboard": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/react-copy-to-clipboard/-/react-copy-to-clipboard-5.1.0.tgz", - "integrity": "sha512-k61RsNgAayIJNoy9yDsYzDe/yAZAzEbEgcz3DZMhF686LEyukcE1hzurxe85JandPUG+yTfGVFzuEw3xt8WP/A==", - "requires": { - "copy-to-clipboard": "^3.3.1", - "prop-types": "^15.8.1" - }, - "dependencies": { - "prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - } + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "react-dev-utils": { + "node_modules/react-dev-utils": { "version": "12.0.1", "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz", "integrity": "sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==", - "requires": { + "dependencies": { "@babel/code-frame": "^7.16.0", "address": "^1.1.2", "browserslist": "^4.18.1", @@ -38276,1225 +13222,1078 @@ "strip-ansi": "^6.0.1", "text-table": "^0.2.0" }, + "engines": { + "node": ">=14" + } + }, + "node_modules/react-dev-utils/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "loader-utils": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", - "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==" - }, - "open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", - "requires": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - } - }, - "react-error-overlay": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz", - "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==" - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - } + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dev-utils/node_modules/loader-utils": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", + "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/react-dev-utils/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dev-utils/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dev-utils/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dev-utils/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/react-dev-utils/node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "react-dom": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", - "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", - "requires": { + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.2" + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" } }, - "react-error-overlay": { - "version": "6.0.9", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz", - "integrity": "sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==" + "node_modules/react-error-overlay": { + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz", + "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==" }, - "react-fast-compare": { + "node_modules/react-fast-compare": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==" }, - "react-feather": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/react-feather/-/react-feather-2.0.10.tgz", - "integrity": "sha512-BLhukwJ+Z92Nmdcs+EMw6dy1Z/VLiJTzEQACDUEnWMClhYnFykJCGWQx+NmwP/qQHGX/5CzQ+TGi8ofg2+HzVQ==", - "requires": { - "prop-types": "^15.7.2" + "node_modules/react-helmet-async": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.3.0.tgz", + "integrity": "sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "invariant": "^2.2.4", + "prop-types": "^15.7.2", + "react-fast-compare": "^3.2.0", + "shallowequal": "^1.1.0" + }, + "peerDependencies": { + "react": "^16.6.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.6.0 || ^17.0.0 || ^18.0.0" } }, - "react-ga": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/react-ga/-/react-ga-3.3.1.tgz", - "integrity": "sha512-4Vc0W5EvXAXUN/wWyxvsAKDLLgtJ3oLmhYYssx+YzphJpejtOst6cbIHCIyF50Fdxuf5DDKqRYny24yJ2y7GFQ==", - "requires": {} - }, - "react-instantsearch-core": { - "version": "6.32.1", - "resolved": "https://registry.npmjs.org/react-instantsearch-core/-/react-instantsearch-core-6.32.1.tgz", - "integrity": "sha512-R8VivvJmFemsW6Urp5KGiqjVZ8XkgYNm8qt6t9WVHXOoo7B8Txi/7yOMNRwT8PWNWBMpYlYMEWZ9PClMuX0Zsg==", - "requires": { - "@babel/runtime": "^7.1.2", - "algoliasearch-helper": "^3.10.0", - "prop-types": "^15.6.2", - "react-fast-compare": "^3.0.0" + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/react-json-view-lite": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/react-json-view-lite/-/react-json-view-lite-1.3.0.tgz", + "integrity": "sha512-aN1biKC5v4DQkmQBlZjuMFR09MKZGMPtIg+cut8zEeg2HXd6gl2gRy0n4HMacHf0dznQgo0SVXN7eT8zV3hEuQ==", + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": "^16.13.1 || ^17.0.0 || ^18.0.0" } }, - "react-instantsearch-dom": { - "version": "6.32.1", - "resolved": "https://registry.npmjs.org/react-instantsearch-dom/-/react-instantsearch-dom-6.32.1.tgz", - "integrity": "sha512-oditYXY6zNbAY6txhGBLOPaEie95Eii+nCEgysuoo4fnOQDUxuHXMruiTkYJlfJJ5HAKBJyTdjtKoGeuJL6G1w==", - "requires": { - "@babel/runtime": "^7.1.2", - "algoliasearch-helper": "^3.10.0", - "classnames": "^2.2.5", + "node_modules/react-loadable": { + "name": "@docusaurus/react-loadable", + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz", + "integrity": "sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==", + "dependencies": { + "@types/react": "*", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": "*" + } + }, + "node_modules/react-loadable-ssr-addon-v5-slorber": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.1.tgz", + "integrity": "sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A==", + "dependencies": { + "@babel/runtime": "^7.10.3" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "react-loadable": "*", + "webpack": ">=4.41.1 || 5.x" + } + }, + "node_modules/react-router": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz", + "integrity": "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==", + "dependencies": { + "@babel/runtime": "^7.12.13", + "history": "^4.9.0", + "hoist-non-react-statics": "^3.1.0", + "loose-envify": "^1.3.1", + "path-to-regexp": "^1.7.0", "prop-types": "^15.6.2", - "react-fast-compare": "^3.0.0", - "react-instantsearch-core": "6.32.1" + "react-is": "^16.6.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "peerDependencies": { + "react": ">=15" } }, - "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + "node_modules/react-router-config": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/react-router-config/-/react-router-config-5.1.1.tgz", + "integrity": "sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==", + "dependencies": { + "@babel/runtime": "^7.1.2" + }, + "peerDependencies": { + "react": ">=15", + "react-router": ">=5" + } }, - "react-lifecycles-compat": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", - "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" - }, - "react-refresh": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", - "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==" - }, - "react-select": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.4.0.tgz", - "integrity": "sha512-CjE9RFLUvChd5SdlfG4vqxZd55AZJRrLrHzkQyTYeHlpOztqcgnyftYAolJ0SGsBev6zAs6qFrjm6KU3eo2hzg==", - "requires": { + "node_modules/react-router-dom": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz", + "integrity": "sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==", + "dependencies": { + "@babel/runtime": "^7.12.13", + "history": "^4.9.0", + "loose-envify": "^1.3.1", + "prop-types": "^15.6.2", + "react-router": "5.3.4", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "peerDependencies": { + "react": ">=15" + } + }, + "node_modules/react-select": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.8.0.tgz", + "integrity": "sha512-TfjLDo58XrhP6VG5M/Mi56Us0Yt8X7xD6cDybC7yoRMUNm7BGO7qk8J0TLQOua/prb8vUOtsfnXZwfm30HGsAA==", + "dependencies": { "@babel/runtime": "^7.12.0", "@emotion/cache": "^11.4.0", "@emotion/react": "^11.8.1", + "@floating-ui/dom": "^1.0.1", "@types/react-transition-group": "^4.4.0", - "memoize-one": "^5.0.0", + "memoize-one": "^6.0.0", "prop-types": "^15.6.0", - "react-transition-group": "^4.3.0" - } - }, - "react-sticky-box": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/react-sticky-box/-/react-sticky-box-1.0.2.tgz", - "integrity": "sha512-Kyvtppdtv1KqJyNU4DtrSMI0unyQRgtraZvVQ0GAazVbYiTsIVpyhpr+5R0Aavzu4uJNSe1awj2rk/qI7i6Zfw==", - "requires": { - "resize-observer-polyfill": "^1.5.1" - } - }, - "react-toastify": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-9.0.8.tgz", - "integrity": "sha512-EwM+teWt49HSHx+67qI08yLAW1zAsBxCXLCsUfxHYv1W7/R3ZLhrqKalh7j+kjgPna1h5LQMSMwns4tB4ww2yQ==", - "requires": { - "clsx": "^1.1.1" + "react-transition-group": "^4.3.0", + "use-isomorphic-layout-effect": "^1.1.2" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "react-transition-group": { + "node_modules/react-transition-group": { "version": "4.4.5", "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", - "requires": { + "dependencies": { "@babel/runtime": "^7.5.5", "dom-helpers": "^5.0.1", "loose-envify": "^1.4.0", "prop-types": "^15.6.2" - } - }, - "read": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", - "requires": { - "mute-stream": "~0.0.4" - } - }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" }, - "dependencies": { - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" - } - } - }, - "read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "requires": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "requires": { - "p-limit": "^2.2.0" - } - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" - } + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" } }, - "readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } - } - }, - "readable-web-to-node-stream": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", - "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", - "requires": { - "readable-stream": "^3.6.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, - "readdirp": { + "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "requires": { + "dependencies": { "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/reading-time": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/reading-time/-/reading-time-1.5.0.tgz", + "integrity": "sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==" + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" } }, - "recursive-readdir": { + "node_modules/recursive-readdir": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", - "requires": { + "dependencies": { "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=6.0.0" } }, - "redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "requires": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - } - }, - "redux": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/redux/-/redux-4.1.2.tgz", - "integrity": "sha512-SH8PglcebESbd/shgf6mii6EIoRM0zrQyjcuQ+ojmfxjTtE0z9Y8pa62iA/OJ58qjP6j27uyW4kUF4jl/jd6sw==", - "requires": { - "@babel/runtime": "^7.9.2" - } - }, - "redux-thunk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.2.tgz", - "integrity": "sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q==", - "requires": {} - }, - "reflect.getprototypeof": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz", - "integrity": "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "globalthis": "^1.0.3", - "which-builtin-type": "^1.1.3" - } - }, - "regenerate": { + "node_modules/regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" }, - "regenerate-unicode-properties": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", - "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", - "requires": { + "node_modules/regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "dependencies": { "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" } }, - "regenerator-runtime": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", - "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" }, - "regenerator-transform": { + "node_modules/regenerator-transform": { "version": "0.15.2", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", - "requires": { + "dependencies": { "@babel/runtime": "^7.8.4" } }, - "regexp.prototype.flags": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", - "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "set-function-name": "^2.0.0" - } - }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==" - }, - "regexpu-core": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", - "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", - "requires": { + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dependencies": { + "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^9.0.0", - "regjsgen": "^0.5.2", - "regjsparser": "^0.7.0", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" } }, - "registry-auth-token": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz", - "integrity": "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==", - "requires": { - "rc": "1.2.8" + "node_modules/registry-auth-token": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz", + "integrity": "sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==", + "dependencies": { + "@pnpm/npm-conf": "^2.1.0" + }, + "engines": { + "node": ">=14" } }, - "registry-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", - "requires": { - "rc": "^1.2.8" + "node_modules/registry-url": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz", + "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==", + "dependencies": { + "rc": "1.2.8" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "regjsgen": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==" - }, - "regjsparser": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", - "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", - "requires": { + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dependencies": { "jsesc": "~0.5.0" }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==" - } + "bin": { + "regjsparser": "bin/parser" } }, - "relay-runtime": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/relay-runtime/-/relay-runtime-12.0.0.tgz", - "integrity": "sha512-QU6JKr1tMsry22DXNy9Whsq5rmvwr3LSZiiWV/9+DFpuTWvp+WFhobWMc8TC4OjKFfNhEZy7mOiqUAn5atQtug==", - "requires": { - "@babel/runtime": "^7.0.0", - "fbjs": "^3.0.0", - "invariant": "^2.2.4" + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "bin": { + "jsesc": "bin/jsesc" } }, - "remark": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/remark/-/remark-10.0.1.tgz", - "integrity": "sha512-E6lMuoLIy2TyiokHprMjcWNJ5UxfGQjaMSMhV+f4idM625UjjK4j798+gPs5mfjzDE6vL0oFKVeZM6gZVSVrzQ==", - "requires": { - "remark-parse": "^6.0.0", - "remark-stringify": "^6.0.0", - "unified": "^7.0.0" - }, - "dependencies": { - "markdown-table": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz", - "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==" - }, - "parse-entities": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.2.tgz", - "integrity": "sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==", - "requires": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" - } - }, - "remark-parse": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-6.0.3.tgz", - "integrity": "sha512-QbDXWN4HfKTUC0hHa4teU463KclLAnwpn/FBn87j9cKYJWWawbiLgMfP2Q4XwhxxuuuOxHlw+pSN0OKuJwyVvg==", - "requires": { - "collapse-white-space": "^1.0.2", - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-whitespace-character": "^1.0.0", - "is-word-character": "^1.0.0", - "markdown-escapes": "^1.0.0", - "parse-entities": "^1.1.0", - "repeat-string": "^1.5.4", - "state-toggle": "^1.0.0", - "trim": "0.0.1", - "trim-trailing-lines": "^1.0.0", - "unherit": "^1.0.4", - "unist-util-remove-position": "^1.0.0", - "vfile-location": "^2.0.0", - "xtend": "^4.0.1" - } - }, - "remark-stringify": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-6.0.4.tgz", - "integrity": "sha512-eRWGdEPMVudijE/psbIDNcnJLRVx3xhfuEsTDGgH4GsFF91dVhw5nhmnBppafJ7+NWINW6C7ZwWbi30ImJzqWg==", - "requires": { - "ccount": "^1.0.0", - "is-alphanumeric": "^1.0.0", - "is-decimal": "^1.0.0", - "is-whitespace-character": "^1.0.0", - "longest-streak": "^2.0.1", - "markdown-escapes": "^1.0.0", - "markdown-table": "^1.1.0", - "mdast-util-compact": "^1.0.0", - "parse-entities": "^1.0.2", - "repeat-string": "^1.5.4", - "state-toggle": "^1.0.0", - "stringify-entities": "^1.0.1", - "unherit": "^1.0.4", - "xtend": "^4.0.1" - } - }, - "stringify-entities": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-1.3.2.tgz", - "integrity": "sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A==", - "requires": { - "character-entities-html4": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-hexadecimal": "^1.0.0" - } - }, - "unified": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/unified/-/unified-7.1.0.tgz", - "integrity": "sha512-lbk82UOIGuCEsZhPj8rNAkXSDXd6p0QLzIuSsCdxrqnqU56St4eyOB+AlXsVgVeRmetPTYydIuvFfpDIed8mqw==", - "requires": { - "@types/unist": "^2.0.0", - "@types/vfile": "^3.0.0", - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-plain-obj": "^1.1.0", - "trough": "^1.0.0", - "vfile": "^3.0.0", - "x-is-string": "^0.1.0" - } - }, - "unist-util-is": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", - "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==" - }, - "unist-util-remove-position": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz", - "integrity": "sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A==", - "requires": { - "unist-util-visit": "^1.1.0" - } - }, - "unist-util-stringify-position": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz", - "integrity": "sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==" - }, - "unist-util-visit": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", - "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", - "requires": { - "unist-util-visit-parents": "^2.0.0" - } - }, - "unist-util-visit-parents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", - "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", - "requires": { - "unist-util-is": "^3.0.0" - } - }, - "vfile": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-3.0.1.tgz", - "integrity": "sha512-y7Y3gH9BsUSdD4KzHsuMaCzRjglXN0W2EcMf0gpvu6+SbsGhMje7xDc8AEoeXy6mIwCKMI6BkjMsRjzQbhMEjQ==", - "requires": { - "is-buffer": "^2.0.0", - "replace-ext": "1.0.0", - "unist-util-stringify-position": "^1.0.0", - "vfile-message": "^1.0.0" - } - }, - "vfile-location": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.6.tgz", - "integrity": "sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA==" - }, - "vfile-message": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-1.1.1.tgz", - "integrity": "sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==", - "requires": { - "unist-util-stringify-position": "^1.1.1" - } - } + "node_modules/rehype-raw": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz", + "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-raw": "^9.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-footnotes": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-2.0.0.tgz", - "integrity": "sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ==" + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "engines": { + "node": ">= 0.10" + } }, - "remark-gfm": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-1.0.0.tgz", - "integrity": "sha512-KfexHJCiqvrdBZVbQ6RopMZGwaXz6wFJEfByIuEwGf0arvITHjiKKZ1dpXujjH9KZdm1//XJQwgfnJ3lmXaDPA==", - "requires": { - "mdast-util-gfm": "^0.1.0", - "micromark-extension-gfm": "^0.3.0" - } - }, - "remark-mdx": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-1.6.22.tgz", - "integrity": "sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ==", - "requires": { - "@babel/core": "7.12.9", - "@babel/helper-plugin-utils": "7.10.4", - "@babel/plugin-proposal-object-rest-spread": "7.12.1", - "@babel/plugin-syntax-jsx": "7.12.1", - "@mdx-js/util": "1.6.22", - "is-alphabetical": "1.0.4", - "remark-parse": "8.0.3", - "unified": "9.2.0" - }, - "dependencies": { - "@babel/core": { - "version": "7.12.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", - "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.12.5", - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helpers": "^7.12.5", - "@babel/parser": "^7.12.7", - "@babel/template": "^7.12.7", - "@babel/traverse": "^7.12.9", - "@babel/types": "^7.12.7", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.2", - "lodash": "^4.17.19", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", - "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", - "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.12.1" - } - }, - "convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" - }, - "semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" - } + "node_modules/remark-directive": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remark-directive/-/remark-directive-3.0.0.tgz", + "integrity": "sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-directive": "^3.0.0", + "micromark-extension-directive": "^3.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-parse": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz", - "integrity": "sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==", - "requires": { - "ccount": "^1.0.0", - "collapse-white-space": "^1.0.2", - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-whitespace-character": "^1.0.0", - "is-word-character": "^1.0.0", - "markdown-escapes": "^1.0.0", - "parse-entities": "^2.0.0", - "repeat-string": "^1.5.4", - "state-toggle": "^1.0.0", - "trim": "0.0.1", - "trim-trailing-lines": "^1.0.0", - "unherit": "^1.0.4", - "unist-util-remove-position": "^2.0.0", - "vfile-location": "^3.0.0", - "xtend": "^4.0.1" - }, - "dependencies": { - "unist-util-remove-position": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz", - "integrity": "sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==", - "requires": { - "unist-util-visit": "^2.0.0" - } - } + "node_modules/remark-emoji": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-emoji/-/remark-emoji-4.0.1.tgz", + "integrity": "sha512-fHdvsTR1dHkWKev9eNyhTo4EFwbUvJ8ka9SgeWkMPYFX4WoI7ViVBms3PjlQYgw5TLvNQso3GUB/b/8t3yo+dg==", + "dependencies": { + "@types/mdast": "^4.0.2", + "emoticon": "^4.0.1", + "mdast-util-find-and-replace": "^3.0.1", + "node-emoji": "^2.1.0", + "unified": "^11.0.4" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "remark-retext": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/remark-retext/-/remark-retext-3.1.3.tgz", - "integrity": "sha512-UujXAm28u4lnUvtOZQFYfRIhxX+auKI9PuA2QpQVTT7gYk1OgX6o0OUrSo1KOa6GNrFX+OODOtS5PWIHPxM7qw==", - "requires": { - "mdast-util-to-nlcst": "^3.2.0" + "node_modules/remark-frontmatter": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-5.0.0.tgz", + "integrity": "sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-frontmatter": "^2.0.0", + "micromark-extension-frontmatter": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-sectionize": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/remark-sectionize/-/remark-sectionize-1.1.1.tgz", - "integrity": "sha512-++GBmbsoeQrMBWn6jf3mj0bRq3DR8LnQPJo7u5faQ9JAJ5GeAu2uve8NoW+vgvhnuAv0GYS8hGb2+kqa+8mnpg==", - "requires": { - "unist-util-find-after": "^2.0.2", - "unist-util-visit-parents": "^2.0.1" + "node_modules/remark-gfm": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.0.tgz", + "integrity": "sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-gfm": "^3.0.0", + "micromark-extension-gfm": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.0.1.tgz", + "integrity": "sha512-3Pz3yPQ5Rht2pM5R+0J2MrGoBSrzf+tJG94N+t/ilfdh8YLyyKYtidAYwTveB20BoHAcwIopOUqhcmh2F7hGYA==", "dependencies": { - "unist-util-is": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", - "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==" - }, - "unist-util-visit-parents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", - "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", - "requires": { - "unist-util-is": "^3.0.0" - } - } + "mdast-util-mdx": "^3.0.0", + "micromark-extension-mdxjs": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-squeeze-paragraphs": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz", - "integrity": "sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw==", - "requires": { - "mdast-squeeze-paragraphs": "^4.0.0" + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-stringify": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.1.tgz", - "integrity": "sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==", - "requires": { - "mdast-util-to-markdown": "^0.6.0" + "node_modules/remark-rehype": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.0.tgz", + "integrity": "sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==" + "node_modules/remark-stringify": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-to-markdown": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "renderkid": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz", - "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==", - "requires": { + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dependencies": { "css-select": "^4.1.3", "dom-converter": "^0.2.0", "htmlparser2": "^6.1.0", "lodash": "^4.17.21", - "strip-ansi": "^3.0.1" + "strip-ansi": "^6.0.1" + } + }, + "node_modules/renderkid/node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/renderkid/node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==" - }, - "css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "requires": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - } - }, - "dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "requires": { - "domelementtype": "^2.2.0" - } - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" - }, - "htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "requires": { - "ansi-regex": "^2.0.0" - } - } + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==" + "node_modules/renderkid/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } }, - "replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha512-vuNYXC7gG7IeVNBC1xUllqCcZKRbJoSPOBhnTEcAIiKCsbuef6zO3F0Rve3isPMMoNoQRWjQwbAgAjHUHniyEA==" + "node_modules/renderkid/node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } }, - "require-directory": { + "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } }, - "require-from-string": { + "node_modules/require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "engines": { + "node": ">=0.10.0" + } }, - "require-like": { + "node_modules/require-like": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz", - "integrity": "sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==" - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" - }, - "require-package-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/require-package-name/-/require-package-name-2.0.1.tgz", - "integrity": "sha512-uuoJ1hU/k6M0779t3VMVIYpb2VMJk05cehCaABFhXaibcbvfgR8wKiozLjVFSzJPmQMRqIcO0HMyTFqfV09V6Q==" + "integrity": "sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==", + "engines": { + "node": "*" + } }, - "resize-observer-polyfill": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", - "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" }, - "resolve": { + "node_modules/resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "requires": { + "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "resolve-alpn": { + "node_modules/resolve-alpn": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" }, - "resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "requires": { - "resolve-from": "^5.0.0" + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "engines": { + "node": ">=4" } }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" + "node_modules/resolve-pathname": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", + "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" }, - "responselike": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", - "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", - "requires": { - "lowercase-keys": "^2.0.0" + "node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true, + "engines": { + "node": ">=10" } }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" + "node_modules/responselike": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "dependencies": { + "lowercase-keys": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "retext-english": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/retext-english/-/retext-english-3.0.4.tgz", - "integrity": "sha512-yr1PgaBDde+25aJXrnt3p1jvT8FVLVat2Bx8XeAWX13KXo8OT+3nWGU3HWxM4YFJvmfqvJYJZG2d7xxaO774gw==", - "requires": { - "parse-english": "^4.0.0", - "unherit": "^1.0.4" + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "engines": { + "node": ">= 4" } }, - "retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==" - }, - "reusify": { + "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" - }, - "rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } }, - "rimraf": { + "node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "requires": { + "dependencies": { "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup-plugin-inject": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-inject/-/rollup-plugin-inject-3.0.2.tgz", + "integrity": "sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==", + "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-inject.", + "dev": true, + "dependencies": { + "estree-walker": "^0.6.1", + "magic-string": "^0.25.3", + "rollup-pluginutils": "^2.8.1" + } + }, + "node_modules/rollup-plugin-inject/node_modules/estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true + }, + "node_modules/rollup-plugin-node-polyfills": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-node-polyfills/-/rollup-plugin-node-polyfills-0.2.1.tgz", + "integrity": "sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA==", + "dev": true, + "dependencies": { + "rollup-plugin-inject": "^3.0.0" + } + }, + "node_modules/rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "dev": true, + "dependencies": { + "estree-walker": "^0.6.1" + } + }, + "node_modules/rollup-pluginutils/node_modules/estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true + }, + "node_modules/rtl-detect": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/rtl-detect/-/rtl-detect-1.1.2.tgz", + "integrity": "sha512-PGMBq03+TTG/p/cRB7HCLKJ1MgDIi07+QU1faSjiYRfmY5UsAttV9Hs08jDAHVwcOwmVLcSJkpwyfXszVjWfIQ==" + }, + "node_modules/rtlcss": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-4.1.1.tgz", + "integrity": "sha512-/oVHgBtnPNcggP2aVXQjSy6N1mMAfHg4GSag0QtZBlD5bdDgAHwr4pydqJGd+SUCu9260+Pjqbjwtvu7EMH1KQ==", + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0", + "postcss": "^8.4.21", + "strip-json-comments": "^3.1.1" + }, + "bin": { + "rtlcss": "bin/rtlcss.js" + }, + "engines": { + "node": ">=12.0.0" } }, - "run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" - }, - "run-parallel": { + "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "requires": { + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { "queue-microtask": "^1.2.2" } }, - "rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "requires": { - "tslib": "^2.1.0" - } - }, - "safe-array-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", - "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - }, - "dependencies": { - "isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" - } - } + "node_modules/rusha": { + "version": "0.8.14", + "resolved": "https://registry.npmjs.org/rusha/-/rusha-0.8.14.tgz", + "integrity": "sha512-cLgakCUf6PedEu15t8kbsjnwIFFR2D4RfL+W3iWFJ4iac7z4B0ZI8fxy4R3J956kAI68HclCFGL8MPoUVC3qVA==" }, - "safe-buffer": { + "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - }, - "safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" - } + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "safer-buffer": { + "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "sanitize-html": { - "version": "1.27.5", - "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-1.27.5.tgz", - "integrity": "sha512-M4M5iXDAUEcZKLXkmk90zSYWEtk5NH3JmojQxKxV371fnMh+x9t1rqdmXaGoyEHw3z/X/8vnFhKjGL5xFGOJ3A==", - "requires": { - "htmlparser2": "^4.1.0", - "lodash": "^4.17.15", - "parse-srcset": "^1.0.2", - "postcss": "^7.0.27" - }, - "dependencies": { - "dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "dependencies": { - "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "requires": { - "domelementtype": "^2.2.0" - } - } - } - }, - "domhandler": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz", - "integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==", - "requires": { - "domelementtype": "^2.0.1" - } - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "dependencies": { - "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "requires": { - "domelementtype": "^2.2.0" - } - } - } - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" - }, - "htmlparser2": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.1.0.tgz", - "integrity": "sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==", - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^3.0.0", - "domutils": "^2.0.0", - "entities": "^2.0.0" - } - }, - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" + "node_modules/sass": { + "version": "1.74.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.74.1.tgz", + "integrity": "sha512-w0Z9p/rWZWelb88ISOLyvqTWGmtmu2QJICqDBGyNnfG4OUnPX9BBjjYIXUpXCMOOg5MQWNpqzt876la1fsTvUA==", + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-loader": { + "version": "10.5.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.5.2.tgz", + "integrity": "sha512-vMUoSNOUKJILHpcNCCyD23X34gve1TS7Rjd9uXHeKqhvBG39x6XbswFDtpbTElj6XdMFezoWhkh5vtKudf2cgQ==", + "dependencies": { + "klona": "^2.0.4", + "loader-utils": "^2.0.0", + "neo-async": "^2.6.2", + "schema-utils": "^3.0.0", + "semver": "^7.3.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", + "sass": "^1.3.0", + "webpack": "^4.36.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } + "node-sass": { + "optional": true }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "sass": { + "optional": true } } }, - "sax": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", - "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" + "node_modules/sass-loader/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } }, - "scheduler": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "node_modules/sass-loader/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peerDependencies": { + "ajv": "^6.9.1" } }, - "schema-utils": { + "node_modules/sass-loader/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/sass-loader/node_modules/schema-utils": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "requires": { + "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/sax": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" + }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "requires": {} - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - } + "loose-envify": "^1.1.0" + } + }, + "node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "section-matter": { + "node_modules/search-insights": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.13.0.tgz", + "integrity": "sha512-Orrsjf9trHHxFRuo9/rzm0KIWmgzE8RMlZMzuhZOJ01Rnz3D0YBAe+V6473t6/H6c7irs6Lt48brULAiRWb3Vw==", + "peer": true + }, + "node_modules/section-matter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", - "requires": { + "dependencies": { "extend-shallow": "^2.0.1", "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=4" } }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==" }, - "semver-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", - "dev": true + "node_modules/selfsigned": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "dependencies": { + "@types/node-forge": "^1.3.0", + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } }, - "semver-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", - "requires": { - "semver": "^6.3.0" + "node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", + "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" } }, - "send": { + "node_modules/semver/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/send": { "version": "0.18.0", "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "requires": { + "dependencies": { "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", @@ -39509,2604 +14308,2614 @@ "range-parser": "~1.2.1", "statuses": "2.0.1" }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/send/node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-handler": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.5.tgz", + "integrity": "sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg==", + "dependencies": { + "bytes": "3.0.0", + "content-disposition": "0.5.2", + "fast-url-parser": "1.1.3", + "mime-types": "2.1.18", + "minimatch": "3.1.2", + "path-is-inside": "1.0.2", + "path-to-regexp": "2.2.1", + "range-parser": "1.2.0" + } + }, + "node_modules/serve-handler/node_modules/mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-handler/node_modules/mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "dependencies": { + "mime-db": "~1.33.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-handler/node_modules/path-to-regexp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz", + "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==" + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - } + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" } }, - "sentence-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", - "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case-first": "^2.0.2" + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "engines": { + "node": ">= 0.6" } }, - "serialize-javascript": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", - "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", - "requires": { - "randombytes": "^2.1.0" + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "engines": { + "node": ">= 0.6" } }, - "serve-static": { + "node_modules/serve-static": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "requires": { + "dependencies": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "parseurl": "~1.3.3", "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" } }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" - }, - "set-function-length": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", - "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", - "requires": { - "define-data-property": "^1.1.1", - "get-intrinsic": "^1.2.1", + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - } - }, - "set-function-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", - "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", - "requires": { - "define-data-property": "^1.0.1", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" } }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" - }, - "setprototypeof": { + "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, - "shallow-clone": { + "node_modules/shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "requires": { + "dependencies": { "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" } }, - "shallow-compare": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/shallow-compare/-/shallow-compare-1.2.2.tgz", - "integrity": "sha512-LUMFi+RppPlrHzbqmFnINTrazo0lPNwhcgzuAXVVcfy/mqPDrQmHAyz5bvV0gDAuRFrk804V0HpQ6u9sZ0tBeg==" - }, - "shallowequal": { + "node_modules/shallowequal": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" }, - "sharp": { - "version": "0.30.7", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.30.7.tgz", - "integrity": "sha512-G+MY2YW33jgflKPTXXptVO28HvNOo9G3j0MybYAHeEmby+QuD2U98dT6ueht9cv/XDqZspSpIhoSW+BAKJ7Hig==", - "requires": { - "color": "^4.2.3", - "detect-libc": "^2.0.1", - "node-addon-api": "^5.0.0", - "prebuild-install": "^7.1.1", - "semver": "^7.3.7", - "simple-get": "^4.0.1", - "tar-fs": "^2.1.1", - "tunnel-agent": "^0.6.0" - }, - "dependencies": { - "detect-libc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", - "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==" - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "node-addon-api": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", - "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==" - }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - } - }, - "shebang-command": { + "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "requires": { + "dependencies": { "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "shebang-regex": { + "node_modules/shebang-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } }, - "shell-quote": { + "node_modules/shell-quote": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", - "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==" + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "node_modules/shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "signal-exit": { + "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, - "signedsource": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/signedsource/-/signedsource-1.0.0.tgz", - "integrity": "sha512-6+eerH9fEnNmi/hyM1DXcRK3pWdoMQtlkQ+ns0ntzunjKqp5i3sKCc80ym8Fib3iaYhdJUOPdhlJWj1tvge2Ww==" - }, - "simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" - }, - "simple-get": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "requires": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "requires": { - "is-arrayish": "^0.3.1" - }, + "node_modules/sirv": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", + "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", "dependencies": { - "is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" - } - } - }, - "sirv": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.3.tgz", - "integrity": "sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==", - "dev": true, - "requires": { - "@polka/url": "^1.0.0-next.20", - "mrmime": "^1.0.0", + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", "totalist": "^3.0.0" + }, + "engines": { + "node": ">= 10" } }, - "sisteransi": { + "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" }, - "sitemap": { + "node_modules/sitemap": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-7.1.1.tgz", "integrity": "sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg==", - "requires": { + "dependencies": { "@types/node": "^17.0.5", "@types/sax": "^1.2.1", "arg": "^5.0.0", "sax": "^1.2.4" + }, + "bin": { + "sitemap": "dist/cli.js" + }, + "engines": { + "node": ">=12.0.0", + "npm": ">=5.6.0" + } + }, + "node_modules/sitemap/node_modules/@types/node": { + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==" + }, + "node_modules/skin-tone": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz", + "integrity": "sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==", + "dependencies": { + "unicode-emoji-modifier-base": "^1.0.0" + }, + "engines": { + "node": ">=8" } }, - "slash": { + "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } }, - "slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" } }, - "slugify": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz", - "integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==" + "node_modules/sockjs/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } }, - "smoothscroll-polyfill": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/smoothscroll-polyfill/-/smoothscroll-polyfill-0.4.4.tgz", - "integrity": "sha512-TK5ZA9U5RqCwMpfoMq/l1mrH0JAR7y7KRvOBx0n2869aLxch+gT9GhN3yUfjiw+d/DiF1mKo14+hd62JyMmoBg==" + "node_modules/sort-css-media-queries": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sort-css-media-queries/-/sort-css-media-queries-2.1.0.tgz", + "integrity": "sha512-IeWvo8NkNiY2vVYdPa27MCQiR0MN0M80johAYFVxWWXQ44KU84WNxjslwBHmc/7ZL2ccwkM7/e6S5aiKZXm7jA==", + "engines": { + "node": ">= 6.3.0" + } }, - "snake-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", - "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", - "requires": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "engines": { + "node": ">= 8" } }, - "socket.io": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-3.1.2.tgz", - "integrity": "sha512-JubKZnTQ4Z8G4IZWtaAZSiRP3I/inpy8c/Bsx2jrwGrTbKeVU5xd6qkKMHpChYeM3dWZSO0QACiGK+obhBNwYw==", - "requires": { - "@types/cookie": "^0.4.0", - "@types/cors": "^2.8.8", - "@types/node": ">=10.0.0", - "accepts": "~1.3.4", - "base64id": "~2.0.0", - "debug": "~4.3.1", - "engine.io": "~4.1.0", - "socket.io-adapter": "~2.1.0", - "socket.io-parser": "~4.0.3" + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "engines": { + "node": ">=0.10.0" } }, - "socket.io-adapter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.1.0.tgz", - "integrity": "sha512-+vDov/aTsLjViYTwS9fPy5pEtTkrbEKsw2M+oVSoFGw6OD1IpvlV1VPhUzNbofCQ8oyMbdYJqDtGdmHQK6TdPg==" + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } }, - "socket.io-client": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-3.1.3.tgz", - "integrity": "sha512-4sIGOGOmCg3AOgGi7EEr6ZkTZRkrXwub70bBB/F0JSkMOUFpA77WsL87o34DffQQ31PkbMUIadGOk+3tx1KGbw==", - "requires": { - "@types/component-emitter": "^1.2.10", - "backo2": "~1.0.2", - "component-emitter": "~1.3.0", - "debug": "~4.3.1", - "engine.io-client": "~4.1.0", - "parseuri": "0.0.6", - "socket.io-parser": "~4.0.4" - } - }, - "socket.io-parser": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.5.tgz", - "integrity": "sha512-sNjbT9dX63nqUFIOv95tTVm6elyIU4RvB1m8dOeZt+IgWwcWklFDOdmGcfo3zSiRsnR/3pJkjY5lfoGqEe4Eig==", - "requires": { - "@types/component-emitter": "^1.2.10", - "component-emitter": "~1.3.0", - "debug": "~4.3.1" + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead", + "dev": true + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "node_modules/srcset": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/srcset/-/srcset-4.0.0.tgz", + "integrity": "sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility" + }, + "node_modules/stacktracey": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/stacktracey/-/stacktracey-2.1.8.tgz", + "integrity": "sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==", + "dev": true, + "dependencies": { + "as-table": "^1.0.36", + "get-source": "^2.0.12" } }, - "source-list-map": { + "node_modules/statuses": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } }, - "source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==" + "node_modules/std-env": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", + "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==" }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" + "node_modules/stoppable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz", + "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==", + "dev": true, + "engines": { + "node": ">=4", + "npm": ">=6" + } }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } + "safe-buffer": "~5.2.0" } }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" - }, - "space-separated-tokens": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", - "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==" - }, - "spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "spdx-license-ids": { - "version": "3.0.16", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", - "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==" + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } }, - "split-on-first": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", - "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==" + "node_modules/stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } }, - "sponge-case": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sponge-case/-/sponge-case-1.0.1.tgz", - "integrity": "sha512-dblb9Et4DAtiZ5YSUZHLl4XhH4uK80GhAZrVXdN4O2P4gQ40Wa5UIOPUHlA/nFd2PLblBZWUioLMMAVrgpoYcA==", - "requires": { - "tslib": "^2.0.3" + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "sprintf-js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" + "node_modules/strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", + "engines": { + "node": ">=0.10.0" + } }, - "st": { + "node_modules/strip-final-newline": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/st/-/st-2.0.0.tgz", - "integrity": "sha512-drN+aGYnrZPNYIymmNwIY7LXYJ8MqsqXj4fMRue3FOgGMdGjSX10fhJ3qx0sVQPhcWxhEaN4U/eWM4O4dbYNAw==", - "requires": { - "async-cache": "^1.1.0", - "bl": "^4.0.0", - "fd": "~0.0.2", - "graceful-fs": "^4.2.3", - "mime": "^2.4.4", - "negotiator": "~0.6.2" - } - }, - "stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "engines": { + "node": ">=6" + } }, - "stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==" + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "stackframe": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", - "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" + "node_modules/style-to-object": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.4.tgz", + "integrity": "sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==", + "dependencies": { + "inline-style-parser": "0.1.1" + } }, - "state-toggle": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz", - "integrity": "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==" - }, - "static-site-generator-webpack-plugin": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-3.4.2.tgz", - "integrity": "sha512-39Kn+fZDVjolLYuX5y1rDvksJIW0QEUaEC/AVO/UewNXxGzoSQI1UYnRsL+ocAcN5Yti6d6rJgEL0qZ5tNXfdw==", - "requires": { - "bluebird": "^3.0.5", - "cheerio": "^0.22.0", - "eval": "^0.1.0", - "url": "^0.11.0", - "webpack-sources": "^0.2.0" - }, - "dependencies": { - "cheerio": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", - "integrity": "sha512-8/MzidM6G/TgRelkzDG13y3Y9LxBjCb+8yOEZ9+wwq5gVF2w2pV0wmHvjfT0RvuxGyR7UEuK36r+yYMbT4uKgA==", - "requires": { - "css-select": "~1.2.0", - "dom-serializer": "~0.1.0", - "entities": "~1.1.1", - "htmlparser2": "^3.9.1", - "lodash.assignin": "^4.0.9", - "lodash.bind": "^4.1.4", - "lodash.defaults": "^4.0.1", - "lodash.filter": "^4.4.0", - "lodash.flatten": "^4.2.0", - "lodash.foreach": "^4.3.0", - "lodash.map": "^4.4.0", - "lodash.merge": "^4.4.0", - "lodash.pick": "^4.2.1", - "lodash.reduce": "^4.4.0", - "lodash.reject": "^4.4.0", - "lodash.some": "^4.4.0" - } - }, - "css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha512-dUQOBoqdR7QwV90WysXPLXG5LO7nhYBgiWVfxF80DKPF8zx1t/pUd2FYy73emg3zrjtM6dzmYgbHKfV2rxiHQA==", - "requires": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" - } - }, - "css-what": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", - "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==" - }, - "dom-serializer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", - "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", - "requires": { - "domelementtype": "^1.3.0", - "entities": "^1.1.1" - } - }, - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - }, - "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "requires": { - "domelementtype": "1" - } - }, - "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw==", - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" - }, - "htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - } - }, - "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "requires": { - "boolbase": "~1.0.0" - } - }, - "readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "source-list-map": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-1.1.2.tgz", - "integrity": "sha512-FqR2O+cX+toUD3ULVIgTtiqYIqPnA62ehJD47mf4LG1PZCB+xmIa3gcTEhegGbP22aRPh88dJSdgDIolrvSxBQ==" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" - }, - "webpack-sources": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-0.2.3.tgz", - "integrity": "sha512-iqanNZjOHLdPn/R0e/nKVn90dm4IsUMxKam0MZD1btWhFub/Cdo1nWdMio6yEqBc0F8mEieOjc+jfBSXwna94Q==", - "requires": { - "source-list-map": "^1.1.1", - "source-map": "~0.5.3" - } - } + "node_modules/stylehacks": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", + "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" + "node_modules/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" }, - "stream-parser": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/stream-parser/-/stream-parser-0.3.1.tgz", - "integrity": "sha512-bJ/HgKq41nlKvlhccD5kaCr/P+Hu0wPNKPJOH7en+YrJu/9EgqUF+88w5Jb6KNcjOFMhfX4B2asfeAtIGuHObQ==", - "requires": { - "debug": "2" + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==" + }, + "node_modules/svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" } }, - "streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==" + "node_modules/svgo/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } }, - "strict-uri-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", - "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==" + "node_modules/svgo/node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" + "node_modules/svgo/node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/svgo/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "string-argv": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", - "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", - "dev": true + "node_modules/svgo/node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } }, - "string-natural-compare": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz", - "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==" + "node_modules/svgo/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } }, - "string-similarity": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/string-similarity/-/string-similarity-1.2.2.tgz", - "integrity": "sha512-IoHUjcw3Srl8nsPlW04U3qwWPk3oG2ffLM0tN853d/E/JlIvcmZmDY2Kz5HzKp4lEi2T7QD7Zuvjq/1rDw+XcQ==", - "requires": { - "lodash.every": "^4.6.0", - "lodash.flattendeep": "^4.4.0", - "lodash.foreach": "^4.5.0", - "lodash.map": "^4.6.0", - "lodash.maxby": "^4.6.0" + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "engines": { + "node": ">=6" } }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, + "node_modules/terser": { + "version": "5.30.3", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.30.3.tgz", + "integrity": "sha512-STdUgOUx8rLbMGO9IOwHLpCqolkDITFFQSMYYwKE1N2lY6MVSaeoi10z/EhWxRc6ybqoVmKSkhKYH/XUpl7vSA==", "dependencies": { - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - } + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" } }, - "string.prototype.matchall": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", - "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "regexp.prototype.flags": "^1.5.0", - "set-function-name": "^2.0.0", - "side-channel": "^1.0.4" + "node_modules/terser-webpack-plugin": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } } }, - "string.prototype.trim": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "node_modules/terser-webpack-plugin/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "string.prototype.trimend": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", - "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peerDependencies": { + "ajv": "^6.9.1" } }, - "string.prototype.trimstart": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "node_modules/terser-webpack-plugin/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" } }, - "stringify-entities": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-3.1.0.tgz", - "integrity": "sha512-3FP+jGMmMV/ffZs86MoghGqAoqXAdxLrJP4GUdrDN1aIScYih5tuIO3eF4To5AJZ79KDZ8Fpdy7QJnK8SsL1Vg==", - "requires": { - "character-entities-html4": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "xtend": "^4.0.0" - } + "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, - "stringify-object": { + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", - "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", - "dev": true, - "requires": { - "get-own-enumerable-property-symbols": "^3.0.0", - "is-obj": "^1.0.1", - "is-regexp": "^1.0.0" - }, + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dependencies": { - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", - "dev": true - } + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" + "node_modules/terser-webpack-plugin/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==" + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, - "strip-bom-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", - "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==" + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==" + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" }, - "strip-filename-increment": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-filename-increment/-/strip-filename-increment-2.0.1.tgz", - "integrity": "sha512-+v5xsiTTsdYqkPj7qz1zlngIsjZedhHDi3xp/9bMurV8kXe9DAr732gNVqtt4X8sI3hOqS3nlFfps5gyVcux6w==" + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==" }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" + "node_modules/tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" }, - "strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "requires": { - "min-indent": "^1.0.0" + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "engines": { + "node": ">=4" } }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } }, - "strip-outer": { + "node_modules/toidentifier": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", - "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", - "requires": { - "escape-string-regexp": "^1.0.2" + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" } }, - "strtok3": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz", - "integrity": "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==", - "requires": { - "@tokenizer/token": "^0.3.0", - "peek-readable": "^4.1.0" + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "engines": { + "node": ">=6" } }, - "style-loader": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-2.0.0.tgz", - "integrity": "sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ==", - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "style-to-object": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz", - "integrity": "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==", - "requires": { - "inline-style-parser": "0.1.1" + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "styled-components": { - "version": "5.3.11", - "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.3.11.tgz", - "integrity": "sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw==", - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/traverse": "^7.4.5", - "@emotion/is-prop-valid": "^1.1.0", - "@emotion/stylis": "^0.8.4", - "@emotion/unitless": "^0.7.4", - "babel-plugin-styled-components": ">= 1.12.0", - "css-to-react-native": "^3.0.0", - "hoist-non-react-statics": "^3.0.0", - "shallowequal": "^1.1.0", - "supports-color": "^5.5.0" - }, - "dependencies": { - "@emotion/unitless": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", - "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true } } }, - "stylehacks": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", - "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", - "requires": { - "browserslist": "^4.21.4", - "postcss-selector-parser": "^6.0.4" - } - }, - "stylis": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", - "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" + "node_modules/ts-node/node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" }, - "sudo-prompt": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-8.2.5.tgz", - "integrity": "sha512-rlBo3HU/1zAJUrkY6jNxDOC9eVYliG6nS4JA8u8KAshITd07tafMc/Br7xQwCSseXwJ2iCcHCE8SNWX3q8Z+kw==" + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" + "node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" - }, - "svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", - "requires": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" - }, - "dependencies": { - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", - "requires": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } - }, - "css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==" - }, - "dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "requires": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - } - }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - }, - "dependencies": { - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - } - } - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "requires": { - "boolbase": "~1.0.0" - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" - } + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" } }, - "swap-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/swap-case/-/swap-case-2.0.2.tgz", - "integrity": "sha512-kc6S2YS/2yXbtkSMunBtKdah4VFETZ8Oh6ONSmSd9bRxhqTrtARUCBUiWXH3xVPpvR7tz2CSnkuXVE42EcGnMw==", - "requires": { - "tslib": "^2.0.3" + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dependencies": { + "is-typedarray": "^1.0.0" } }, - "table": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", - "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", - "requires": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" + "node_modules/typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici": { + "version": "5.28.4", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", + "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", + "dev": true, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - } + "@fastify/busboy": "^2.0.0" + }, + "engines": { + "node": ">=14.0" } }, - "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" }, - "tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "requires": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "engines": { + "node": ">=4" } }, - "tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "requires": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } + "node_modules/unicode-emoji-modifier-base": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz", + "integrity": "sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==", + "engines": { + "node": ">=4" } }, - "term-size": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", - "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==" - }, - "terser": { - "version": "5.24.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.24.0.tgz", - "integrity": "sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw==", - "requires": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dependencies": { - "acorn": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==" - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - } + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, - "terser-webpack-plugin": { - "version": "5.3.9", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", - "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", - "requires": { - "@jridgewell/trace-mapping": "^0.3.17", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.16.8" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - } - }, - "serialize-javascript": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", - "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", - "requires": { - "randombytes": "^2.1.0" - } - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "requires": { - "has-flag": "^4.0.0" - } - } + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "engines": { + "node": ">=4" } }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "engines": { + "node": ">=4" + } }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + "node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "timers-ext": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", - "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", - "requires": { - "es5-ext": "~0.10.46", - "next-tick": "1" + "node_modules/unique-string": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", + "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", + "dependencies": { + "crypto-random-string": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "title-case": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/title-case/-/title-case-3.0.3.tgz", - "integrity": "sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==", - "requires": { - "tslib": "^2.0.3" + "node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "requires": { - "rimraf": "^3.0.0" + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "to-fast-properties": { + "node_modules/unist-util-position-from-estree": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" - }, - "to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" + "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", + "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "requires": { - "is-number": "^7.0.0" + "node_modules/unist-util-remove-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", + "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "toggle-selection": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", - "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "token-types": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz", - "integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==", - "requires": { - "@tokenizer/token": "^0.3.0", - "ieee754": "^1.2.1" + "node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "totalist": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", - "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", - "dev": true + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "engines": { + "node": ">= 10.0.0" + } }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } }, - "trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==" + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } }, - "trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==" + "node_modules/update-notifier": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz", + "integrity": "sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==", + "dependencies": { + "boxen": "^7.0.0", + "chalk": "^5.0.1", + "configstore": "^6.0.0", + "has-yarn": "^3.0.0", + "import-lazy": "^4.0.0", + "is-ci": "^3.0.1", + "is-installed-globally": "^0.4.0", + "is-npm": "^6.0.0", + "is-yarn-global": "^0.4.0", + "latest-version": "^7.0.0", + "pupa": "^3.1.0", + "semver": "^7.3.7", + "semver-diff": "^4.0.0", + "xdg-basedir": "^5.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/yeoman/update-notifier?sponsor=1" + } }, - "trim-repeated": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", - "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", - "requires": { - "escape-string-regexp": "^1.0.2" + "node_modules/update-notifier/node_modules/boxen": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz", + "integrity": "sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==", + "dependencies": { + "ansi-align": "^3.0.1", + "camelcase": "^7.0.1", + "chalk": "^5.2.0", + "cli-boxes": "^3.0.0", + "string-width": "^5.1.2", + "type-fest": "^2.13.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "trim-trailing-lines": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz", - "integrity": "sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==" + "node_modules/update-notifier/node_modules/camelcase": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", + "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "trough": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", - "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==" + "node_modules/update-notifier/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } }, - "true-case-path": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-2.2.1.tgz", - "integrity": "sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q==" - }, - "tsconfig-paths": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", - "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", - "requires": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "requires": { - "minimist": "^1.2.0" - } - } + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" } }, - "tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + "node_modules/uri-js/node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "engines": { + "node": ">=6" + } }, - "tslint": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz", - "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "builtin-modules": "^1.1.1", - "chalk": "^2.3.0", - "commander": "^2.12.1", - "diff": "^4.0.1", - "glob": "^7.1.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.3", - "resolve": "^1.3.2", - "semver": "^5.3.0", - "tslib": "^1.13.0", - "tsutils": "^2.29.0" - }, - "dependencies": { - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "tsutils": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", - "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } + "node_modules/url-loader": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", + "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", + "dependencies": { + "loader-utils": "^2.0.0", + "mime-types": "^2.1.27", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "file-loader": "*", + "webpack": "^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "file-loader": { + "optional": true } } }, - "tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "requires": { - "tslib": "^1.8.1" - }, + "node_modules/url-loader/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "requires": { - "safe-buffer": "^5.0.1" + "node_modules/url-loader/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peerDependencies": { + "ajv": "^6.9.1" } }, - "type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + "node_modules/url-loader/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "requires": { - "prelude-ls": "^1.2.1" + "node_modules/url-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" + "node_modules/use-isomorphic-layout-effect": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", + "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "type-of": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/type-of/-/type-of-2.0.1.tgz", - "integrity": "sha512-39wxbwHdQ2sTiBB8wAzKfQ9GN+om8w+sjNWzr+vZJR5AMD5J+J7Yc8AtXnU9r/r2c8XiDZ/smxutDmZehX/qpQ==" + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, - "typed-array-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", - "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" - } + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==" }, - "typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", - "requires": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "node_modules/utility-types": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.11.0.tgz", + "integrity": "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==", + "engines": { + "node": ">= 4" } }, - "typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" } }, - "typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", - "requires": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" } }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" - }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "requires": { - "is-typedarray": "^1.0.0" - } + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" }, - "typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==" + "node_modules/value-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", + "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" }, - "ua-parser-js": { - "version": "1.0.37", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.37.tgz", - "integrity": "sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==" + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } }, - "unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "requires": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" + "node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==" - }, - "underscore.string": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.6.tgz", - "integrity": "sha512-VoC83HWXmCrF6rgkyxS9GHv8W9Q5nhMKho+OadDJGzL2oDYbYEppBaCMH6pFlwLeqj2QS+hhkw2kpXkSdD1JxQ==", - "requires": { - "sprintf-js": "^1.1.1", - "util-deprecate": "^1.0.2" + "node_modules/vfile-location": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.2.tgz", + "integrity": "sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "unherit": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz", - "integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==", - "requires": { - "inherits": "^2.0.0", - "xtend": "^4.0.0" + "node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==" + "node_modules/watchpack": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", + "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } }, - "unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "requires": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dependencies": { + "minimalistic-assert": "^1.0.0" } }, - "unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==" + "node_modules/web-namespaces": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", + "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } }, - "unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==" - }, - "unified": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", - "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", - "requires": { - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" - }, + "node_modules/webpack": { + "version": "5.91.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz", + "integrity": "sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==", "dependencies": { - "is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==" + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.21.10", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.16.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true } } }, - "unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "requires": { - "crypto-random-string": "^2.0.0" + "node_modules/webpack-bundle-analyzer": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.1.tgz", + "integrity": "sha512-s3P7pgexgT/HTUSYgxJyn28A+99mmLq4HsJepMPzu0R8ImJc52QNqaFYW1Z2z2uIb1/J3eYgaAWVpaC+v/1aAQ==", + "dependencies": { + "@discoveryjs/json-ext": "0.5.7", + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "commander": "^7.2.0", + "debounce": "^1.2.1", + "escape-string-regexp": "^4.0.0", + "gzip-size": "^6.0.0", + "html-escaper": "^2.0.2", + "is-plain-object": "^5.0.0", + "opener": "^1.5.2", + "picocolors": "^1.0.0", + "sirv": "^2.0.3", + "ws": "^7.3.1" + }, + "bin": { + "webpack-bundle-analyzer": "lib/bin/analyzer.js" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" } }, - "unist-builder": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz", - "integrity": "sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==" - }, - "unist-util-find-after": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-2.0.4.tgz", - "integrity": "sha512-zo0ShIr+E/aU9xSK7JC9Kb+WP9seTFCuqVYdo5+HJSjN009XMfhiA1FIExEKzdDP1UsgvKGleGlB/pSdTSqZww==", - "requires": { - "unist-util-is": "^3.0.0" - }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", + "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", "dependencies": { - "unist-util-is": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", - "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==" - } + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" } }, - "unist-util-generated": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz", - "integrity": "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==" - }, - "unist-util-is": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", - "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==" - }, - "unist-util-map": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/unist-util-map/-/unist-util-map-1.0.5.tgz", - "integrity": "sha512-dFil/AN6vqhnQWNCZk0GF/G3+Q5YwsB+PqjnzvpO2wzdRtUJ1E8PN+XRE/PRr/G3FzKjRTJU0haqE0Ekl+O3Ag==", - "requires": { - "object-assign": "^4.0.1" + "node_modules/webpack-dev-middleware/node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" } }, - "unist-util-modify-children": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-2.0.0.tgz", - "integrity": "sha512-HGrj7JQo9DwZt8XFsX8UD4gGqOsIlCih9opG6Y+N11XqkBGKzHo8cvDi+MfQQgiZ7zXRUiQREYHhjOBHERTMdg==", - "requires": { - "array-iterate": "^1.0.0" + "node_modules/webpack-dev-server": { + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz", + "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==", + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.4", + "ws": "^8.13.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } } }, - "unist-util-position": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz", - "integrity": "sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==" - }, - "unist-util-remove": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-1.0.3.tgz", - "integrity": "sha512-mB6nCHCQK0pQffUAcCVmKgIWzG/AXs/V8qpS8K72tMPtOSCMSjDeMc5yN+Ye8rB0FhcE+JvW++o1xRNc0R+++g==", - "requires": { - "unist-util-is": "^3.0.0" + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "engines": { + "node": ">=10.0.0" }, - "dependencies": { - "unist-util-is": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", - "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==" + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true } } }, - "unist-util-remove-position": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-3.0.0.tgz", - "integrity": "sha512-17kIOuolVuK16LMb9KyMJlqdfCtlfQY5FjY3Sdo9iC7F5wqdXhNjMq0PBvMpkVNNnAmHxXssUW+rZ9T2zbP0Rg==", - "requires": { - "unist-util-visit": "^2.0.0" + "node_modules/webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" } }, - "unist-util-select": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/unist-util-select/-/unist-util-select-3.0.4.tgz", - "integrity": "sha512-xf1zCu4okgPqGLdhCDpRnjwBNyv3EqjiXRUbz2SdK1+qnLMB7uXXajfzuBvvbHoQ+JLyp4AEbFCGndmc6S72sw==", - "requires": { - "css-selector-parser": "^1.0.0", - "not": "^0.1.0", - "nth-check": "^2.0.0", - "unist-util-is": "^4.0.0", - "zwitch": "^1.0.0" + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "engines": { + "node": ">=10.13.0" } }, - "unist-util-stringify-position": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", - "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", - "requires": { - "@types/unist": "^2.0.2" + "node_modules/webpack/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "unist-util-visit": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", - "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0", - "unist-util-visit-parents": "^3.0.0" + "node_modules/webpack/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peerDependencies": { + "ajv": "^6.9.1" } }, - "unist-util-visit-children": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/unist-util-visit-children/-/unist-util-visit-children-1.1.4.tgz", - "integrity": "sha512-sA/nXwYRCQVRwZU2/tQWUqJ9JSFM1X3x7JIOsIgSzrFHcfVt6NkzDtKzyxg2cZWkCwGF9CO8x4QNZRJRMK8FeQ==" + "node_modules/webpack/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, - "unist-util-visit-parents": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", - "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0" + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==" - }, - "unixify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unixify/-/unixify-1.0.0.tgz", - "integrity": "sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg==", - "requires": { - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } + "node_modules/webpackbar": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-5.0.2.tgz", + "integrity": "sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ==", + "dependencies": { + "chalk": "^4.1.0", + "consola": "^2.15.3", + "pretty-time": "^1.1.0", + "std-env": "^3.0.1" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "webpack": "3 || 4 || 5" } }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" - }, - "unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==" - }, - "update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" } }, - "update-notifier": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", - "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", - "requires": { - "boxen": "^5.0.0", - "chalk": "^4.1.0", - "configstore": "^5.0.1", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.4.0", - "is-npm": "^5.0.0", - "is-yarn-global": "^0.3.0", - "latest-version": "^5.1.0", - "pupa": "^2.1.1", - "semver": "^7.3.4", - "semver-diff": "^3.1.1", - "xdg-basedir": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "engines": { + "node": ">=0.8.0" } }, - "upper-case": { + "node_modules/which": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", - "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", - "requires": { - "tslib": "^2.0.3" + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, - "upper-case-first": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", - "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", - "requires": { - "tslib": "^2.0.3" + "node_modules/widest-line": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", + "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", + "dependencies": { + "string-width": "^5.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "requires": { - "punycode": "^2.1.0" - } + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==" }, - "url": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.3.tgz", - "integrity": "sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==", - "requires": { - "punycode": "^1.4.1", - "qs": "^6.11.2" + "node_modules/workerd": { + "version": "1.20240404.0", + "resolved": "https://registry.npmjs.org/workerd/-/workerd-1.20240404.0.tgz", + "integrity": "sha512-U4tfnvBcPMsv7pmRGuF0J5UnoZi6tbc64tXNfyijI74r6w6Vlb2+a6eibdQL8g0g46+4vjuTKME9G5RvSvdc8g==", + "dev": true, + "hasInstallScript": true, + "bin": { + "workerd": "bin/workerd" }, + "engines": { + "node": ">=16" + }, + "optionalDependencies": { + "@cloudflare/workerd-darwin-64": "1.20240404.0", + "@cloudflare/workerd-darwin-arm64": "1.20240404.0", + "@cloudflare/workerd-linux-64": "1.20240404.0", + "@cloudflare/workerd-linux-arm64": "1.20240404.0", + "@cloudflare/workerd-windows-64": "1.20240404.0" + } + }, + "node_modules/wrangler": { + "version": "3.48.0", + "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-3.48.0.tgz", + "integrity": "sha512-Wv7JS6FyX1j9HkaM6WL3fmTzBMAYc4hPSyZCuxuH55hkJDX/7ts+YAgsaN1U8rKoDrV3FVSgBfI9TyqP9iuM8Q==", + "dev": true, "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" + "@cloudflare/kv-asset-handler": "0.3.1", + "@esbuild-plugins/node-globals-polyfill": "^0.2.3", + "@esbuild-plugins/node-modules-polyfill": "^0.2.2", + "blake3-wasm": "^2.1.5", + "chokidar": "^3.5.3", + "esbuild": "0.17.19", + "miniflare": "3.20240404.0", + "nanoid": "^3.3.3", + "path-to-regexp": "^6.2.0", + "resolve": "^1.22.8", + "resolve.exports": "^2.0.2", + "selfsigned": "^2.0.1", + "source-map": "0.6.1", + "xxhash-wasm": "^1.0.1" + }, + "bin": { + "wrangler": "bin/wrangler.js", + "wrangler2": "bin/wrangler.js" + }, + "engines": { + "node": ">=16.17.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@cloudflare/workers-types": "^4.20240404.0" + }, + "peerDependenciesMeta": { + "@cloudflare/workers-types": { + "optional": true } } }, - "url-loader": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", - "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", - "requires": { - "loader-utils": "^2.0.0", - "mime-types": "^2.1.27", - "schema-utils": "^3.0.0" + "node_modules/wrangler/node_modules/@esbuild/android-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", + "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/wrangler/node_modules/@esbuild/android-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", + "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" } }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", - "requires": { - "prepend-http": "^2.0.0" + "node_modules/wrangler/node_modules/@esbuild/android-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", + "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" } }, - "util": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", - "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", - "requires": { - "inherits": "2.0.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" - } + "node_modules/wrangler/node_modules/@esbuild/darwin-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", + "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" } }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "util.promisify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" + "node_modules/wrangler/node_modules/@esbuild/darwin-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", + "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" } }, - "utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==" - }, - "utility-types": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz", - "integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==" - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" - }, - "v8-compile-cache": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", - "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==" - }, - "valid-url": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz", - "integrity": "sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA==" - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "node_modules/wrangler/node_modules/@esbuild/freebsd-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", + "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" } }, - "value-or-promise": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.12.tgz", - "integrity": "sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q==" - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" - }, - "vfile": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", - "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", - "requires": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^2.0.0", - "vfile-message": "^2.0.0" + "node_modules/wrangler/node_modules/@esbuild/freebsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", + "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" } }, - "vfile-location": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz", - "integrity": "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==" - }, - "vfile-message": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", - "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" + "node_modules/wrangler/node_modules/@esbuild/linux-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", + "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "requires": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" + "node_modules/wrangler/node_modules/@esbuild/linux-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", + "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "weak-lru-cache": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz", - "integrity": "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==" - }, - "web-namespaces": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz", - "integrity": "sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==" - }, - "web-vitals": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-1.1.2.tgz", - "integrity": "sha512-PFMKIY+bRSXlMxVAQ+m2aw9c/ioUYfDgrYot0YUa+/xa0sakubWhSDyxAKwzymvXVdF4CZI71g06W+mqhzu6ig==" + "node_modules/wrangler/node_modules/@esbuild/linux-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", + "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "webpack": { - "version": "5.89.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz", - "integrity": "sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==", - "requires": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^1.0.0", - "@webassemblyjs/ast": "^1.11.5", - "@webassemblyjs/wasm-edit": "^1.11.5", - "@webassemblyjs/wasm-parser": "^1.11.5", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.9.0", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.15.0", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.7", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - }, - "dependencies": { - "acorn": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==" - }, - "acorn-import-assertions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", - "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", - "requires": {} - }, - "webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==" - } + "node_modules/wrangler/node_modules/@esbuild/linux-loong64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", + "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "webpack-bundle-analyzer": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.1.tgz", - "integrity": "sha512-s3P7pgexgT/HTUSYgxJyn28A+99mmLq4HsJepMPzu0R8ImJc52QNqaFYW1Z2z2uIb1/J3eYgaAWVpaC+v/1aAQ==", + "node_modules/wrangler/node_modules/@esbuild/linux-mips64el": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", + "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", + "cpu": [ + "mips64el" + ], "dev": true, - "requires": { - "@discoveryjs/json-ext": "0.5.7", - "acorn": "^8.0.4", - "acorn-walk": "^8.0.0", - "commander": "^7.2.0", - "debounce": "^1.2.1", - "escape-string-regexp": "^4.0.0", - "gzip-size": "^6.0.0", - "html-escaper": "^2.0.2", - "is-plain-object": "^5.0.0", - "opener": "^1.5.2", - "picocolors": "^1.0.0", - "sirv": "^2.0.3", - "ws": "^7.3.1" - }, - "dependencies": { - "acorn": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", - "dev": true - }, - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true, - "requires": {} - } + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "webpack-dev-middleware": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-4.3.0.tgz", - "integrity": "sha512-PjwyVY95/bhBh6VUqt6z4THplYcsvQ8YNNBTBM873xLVmw8FLeALn0qurHbs9EmcfhzQis/eoqypSnZeuUz26w==", - "requires": { - "colorette": "^1.2.2", - "mem": "^8.1.1", - "memfs": "^3.2.2", - "mime-types": "^2.1.30", - "range-parser": "^1.2.1", - "schema-utils": "^3.0.0" + "node_modules/wrangler/node_modules/@esbuild/linux-ppc64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", + "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "webpack-merge": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", - "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", - "requires": { - "clone-deep": "^4.0.1", - "flat": "^5.0.2", - "wildcard": "^2.0.0" + "node_modules/wrangler/node_modules/@esbuild/linux-riscv64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", + "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } + "node_modules/wrangler/node_modules/@esbuild/linux-s390x": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", + "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "webpack-stats-plugin": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/webpack-stats-plugin/-/webpack-stats-plugin-1.1.3.tgz", - "integrity": "sha512-yUKYyy+e0iF/w31QdfioRKY+h3jDBRpthexBOWGKda99iu2l/wxYsI/XqdlP5IU58/0KB9CsJZgWNAl+/MPkRw==" + "node_modules/wrangler/node_modules/@esbuild/linux-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", + "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } }, - "webpack-virtual-modules": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.3.2.tgz", - "integrity": "sha512-RXQXioY6MhzM4CNQwmBwKXYgBs6ulaiQ8bkNQEl2J6Z+V+s7lgl/wGvaI/I0dLnYKB8cKsxQc17QOAVIphPLDw==", - "requires": { - "debug": "^3.0.0" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "requires": { - "ms": "^2.1.1" - } - } + "node_modules/wrangler/node_modules/@esbuild/netbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", + "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" } }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "node_modules/wrangler/node_modules/@esbuild/openbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", + "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" } }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "requires": { - "isexe": "^2.0.0" + "node_modules/wrangler/node_modules/@esbuild/sunos-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", + "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" } }, - "which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" + "node_modules/wrangler/node_modules/@esbuild/win32-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", + "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" } }, - "which-builtin-type": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", - "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", - "requires": { - "function.prototype.name": "^1.1.5", - "has-tostringtag": "^1.0.0", - "is-async-function": "^2.0.0", - "is-date-object": "^1.0.5", - "is-finalizationregistry": "^1.0.2", - "is-generator-function": "^1.0.10", - "is-regex": "^1.1.4", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.9" - }, - "dependencies": { - "isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" - } + "node_modules/wrangler/node_modules/@esbuild/win32-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", + "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" } }, - "which-collection": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", - "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", - "requires": { - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-weakmap": "^2.0.1", - "is-weakset": "^2.0.1" + "node_modules/wrangler/node_modules/@esbuild/win32-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", + "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" } }, - "which-module": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", - "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==" + "node_modules/wrangler/node_modules/esbuild": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", + "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.17.19", + "@esbuild/android-arm64": "0.17.19", + "@esbuild/android-x64": "0.17.19", + "@esbuild/darwin-arm64": "0.17.19", + "@esbuild/darwin-x64": "0.17.19", + "@esbuild/freebsd-arm64": "0.17.19", + "@esbuild/freebsd-x64": "0.17.19", + "@esbuild/linux-arm": "0.17.19", + "@esbuild/linux-arm64": "0.17.19", + "@esbuild/linux-ia32": "0.17.19", + "@esbuild/linux-loong64": "0.17.19", + "@esbuild/linux-mips64el": "0.17.19", + "@esbuild/linux-ppc64": "0.17.19", + "@esbuild/linux-riscv64": "0.17.19", + "@esbuild/linux-s390x": "0.17.19", + "@esbuild/linux-x64": "0.17.19", + "@esbuild/netbsd-x64": "0.17.19", + "@esbuild/openbsd-x64": "0.17.19", + "@esbuild/sunos-x64": "0.17.19", + "@esbuild/win32-arm64": "0.17.19", + "@esbuild/win32-ia32": "0.17.19", + "@esbuild/win32-x64": "0.17.19" + } + }, + "node_modules/wrangler/node_modules/path-to-regexp": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", + "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==", + "dev": true }, - "which-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", - "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.4", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "node_modules/wrangler/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, - "widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "requires": { - "string-width": "^4.0.0" + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "wildcard": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", - "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==" + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "engines": { + "node": ">=12" }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - } + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "wrappy": { + "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, - "write": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/write/-/write-2.0.0.tgz", - "integrity": "sha512-yam9TAqN8sAZokECAejo9HpT2j2s39OgK8i8yxadrFBVo+iSWLfnipRVFulfAw1d2dz5vSuGmlMHYRKG4fysOA==", - "requires": { - "add-filename-increment": "^1.0.0" - } - }, - "write-file-atomic": { + "node_modules/write-file-atomic": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "requires": { + "dependencies": { "imurmurhash": "^0.1.4", "is-typedarray": "^1.0.0", "signal-exit": "^3.0.2", "typedarray-to-buffer": "^3.1.5" } }, - "ws": { - "version": "8.14.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", - "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", - "dev": true, - "requires": {} - }, - "x-is-string": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/x-is-string/-/x-is-string-0.1.0.tgz", - "integrity": "sha512-GojqklwG8gpzOVEVki5KudKNoq7MbbjYZCbyWzEz7tyPA7eleiE0+ePwOWQQRb5fm86rD3S8Tc0tSFf3AOv50w==" + "node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } }, - "xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==" + "node_modules/xdg-basedir": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", + "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "xmlhttprequest-ssl": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz", - "integrity": "sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==" - }, - "xss": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.14.tgz", - "integrity": "sha512-og7TEJhXvn1a7kzZGQ7ETjdQVS2UfZyTlsEdDOqvQF7GoxNfY+0YLCzBy1kPdsDDx4QuNAonQPddpsn6Xl/7sw==", - "requires": { - "commander": "^2.20.3", - "cssfilter": "0.0.10" - }, - "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - } + "node_modules/xml-js": { + "version": "1.6.11", + "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", + "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", + "dependencies": { + "sax": "^1.2.4" + }, + "bin": { + "xml-js": "bin/cli.js" } }, - "xstate": { - "version": "4.32.1", - "resolved": "https://registry.npmjs.org/xstate/-/xstate-4.32.1.tgz", - "integrity": "sha512-QYUd+3GkXZ8i6qdixnOn28bL3EvA++LONYL/EMWwKlFSh/hiLndJ8YTnz77FDs+JUXcwU7NZJg7qoezoRHc4GQ==" + "node_modules/xml2js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", + "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "engines": { + "node": ">=4.0" + } }, - "xxhash-wasm": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-0.4.2.tgz", - "integrity": "sha512-/eyHVRJQCirEkSZ1agRSCwriMhwlyUcFkXD5TPVSLP+IPzjsqMVzZwdoczLp1SoQU0R3dxz1RpIK+4YNQbCVOA==" + "node_modules/xxhash-wasm": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-1.0.2.tgz", + "integrity": "sha512-ibF0Or+FivM9lNrg+HGJfVX8WJqgo+kCLDc4vx6xMeTce7Aj+DLttKbxxRR/gNLSAelRc1omAPlJ77N/Jem07A==", + "dev": true }, - "y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } }, - "yallist": { + "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, - "yaml": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", - "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", - "dev": true - }, - "yaml-loader": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/yaml-loader/-/yaml-loader-0.6.0.tgz", - "integrity": "sha512-1bNiLelumURyj+zvVHOv8Y3dpCri0F2S+DCcmps0pA1zWRLjS+FhZQg4o3aUUDYESh73+pKZNI18bj7stpReow==", - "requires": { - "loader-utils": "^1.4.0", - "yaml": "^1.8.3" - }, - "dependencies": { - "json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "requires": { - "minimist": "^1.2.0" - } - }, - "loader-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", - "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - } - }, - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" - } + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "engines": { + "node": ">= 6" } }, - "yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "requires": { - "p-limit": "^2.2.0" - } - } - } - }, - "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - } + "engines": { + "node": ">=12" } }, - "yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "dev": true, - "requires": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "engines": { + "node": ">=12" } }, - "yeast": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "integrity": "sha512-8HFIh676uyGYP6wP13R/j6OJ/1HwJ46snpvzE7aHAN3Ryqh2yX6Xox2B4CUmTwwOIzlG3Bs7ocsP5dZH/R1Qbg==" + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } }, - "yoga-layout-prebuilt": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/yoga-layout-prebuilt/-/yoga-layout-prebuilt-1.10.0.tgz", - "integrity": "sha512-YnOmtSbv4MTf7RGJMK0FvZ+KD8OEe/J5BNnR0GHhD8J/XcG/Qvxgszm0Un6FTHWW4uHlTgP0IztiXQnGyIR45g==", - "requires": { - "@types/yoga-layout": "1.9.2" + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "engines": { + "node": ">=6" } }, - "yurnalist": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/yurnalist/-/yurnalist-2.1.0.tgz", - "integrity": "sha512-PgrBqosQLM3gN2xBFIMDLACRTV9c365VqityKKpSTWpwR+U4LAFR3rSVyEoscWlu3EzX9+Y0I86GXUKxpHFl6w==", - "requires": { - "chalk": "^2.4.2", - "inquirer": "^7.0.0", - "is-ci": "^2.0.0", - "read": "^1.0.7", - "strip-ansi": "^5.2.0" + "node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "engines": { + "node": ">=12.20" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/youch": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/youch/-/youch-3.3.3.tgz", + "integrity": "sha512-qSFXUk3UZBLfggAW3dJKg0BMblG5biqSF8M34E06o5CSsZtH92u9Hqmj2RzGiHDi64fhe83+4tENFP2DB6t6ZA==", + "dev": true, "dependencies": { - "ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==" - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "requires": { - "ansi-regex": "^4.1.0" - } - } + "cookie": "^0.5.0", + "mustache": "^4.2.0", + "stacktracey": "^2.1.8" } }, - "zwitch": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", - "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==" + "node_modules/youch/node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/zod": { + "version": "3.22.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz", + "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } } } } diff --git a/package.json b/package.json index b88bf3633b..5e7cf8fb16 100644 --- a/package.json +++ b/package.json @@ -1,112 +1,55 @@ { - "name": "prisma2-docs", - "description": "Prisma.io docs v2.0", - "version": "1.0.0", - "author": "Nilufar Bava <bava@prisma.io>", - "dependencies": { - "@mdx-js/loader": "1.6.22", - "@mdx-js/mdx": "1.6.22", - "@mdx-js/react": "1.6.22", - "@philpl/buble": "0.19.7", - "@prisma/client": "^4.8.1", - "@react-aria/overlays": "^3.20.0", - "@react-aria/tooltip": "^3.7.0", - "@react-aria/utils": "^3.23.0", - "@react-stately/tooltip": "^3.4.6", - "algoliasearch": "4.14.2", - "babel-plugin-styled-components": "2.0.7", - "gatsby": "4.22.1", - "gatsby-plugin-algolia": "^1.0.3", - "gatsby-plugin-catch-links": "4.22.0", - "gatsby-plugin-google-tagmanager": "4.22.0", - "gatsby-plugin-image": "2.22.0", - "gatsby-plugin-mdx": "3.15.2", - "gatsby-plugin-meta-redirect": "1.1.1", - "gatsby-plugin-robots-txt": "1.7.1", - "gatsby-plugin-sharp": "4.22.0", - "gatsby-plugin-sitemap": "5.22.0", - "gatsby-plugin-smoothscroll": "1.2.0", - "gatsby-plugin-styled-components": "5.22.0", - "gatsby-remark-autolink-headers": "5.22.0", - "gatsby-remark-copy-linked-files": "5.22.0", - "gatsby-remark-normalize-paths": "1.1.0", - "gatsby-remark-rewrite-relative-links": "1.0.8", - "gatsby-remark-sectionize": "1.0.0", - "gatsby-source-filesystem": "4.22.0", - "gatsby-transformer-remark": "5.25.1", - "gatsby-transformer-sharp": "4.22.0", - "normalize.css": "^8.0.1", - "parse-numeric-range": "1.3.0", - "prop-types": "15.7.2", - "qs": "6.11.2", - "react": "17.0.2", - "react-copy-to-clipboard": "5.1.0", - "react-dom": "17.0.2", - "react-feather": "2.0.10", - "react-ga": "3.3.1", - "react-instantsearch-dom": "6.32.1", - "react-refresh": "^0.14.0", - "react-select": "5.4.0", - "react-sticky-box": "1.0.2", - "react-toastify": "9.0.8", - "styled-components": "5.3.11", - "write": "2.0.0" - }, - "keywords": [ - "gatsby", - "mdx", - "typescript", - "prismaio", - "howtodata", - "databases", - "styled-components" - ], - "license": "Apache-2.0", + "name": "docs", + "version": "0.0.0", + "private": true, "scripts": { - "clean": "gatsby clean", - "build": "./scripts/build", - "dev": "gatsby develop", - "serve": "npm run build && gatsby serve --prefix-paths -o", - "format": "prettier . --write --check", - "install-algolia": "cd ./plugins/gatsby-algolia-indexer && npm install", - "postinstall": "husky install", - "redirect-transform": "node ./scripts/redirect-transformer.js" + "docusaurus": "docusaurus", + "start": "docusaurus start", + "build": "docusaurus build", + "swizzle": "docusaurus swizzle", + "deploy": "npm run build && wrangler pages deploy ./build", + "clean": "docusaurus clear", + "clear": "docusaurus clear", + "serve": "docusaurus serve", + "write-translations": "docusaurus write-translations", + "write-heading-ids": "docusaurus write-heading-ids" + }, + "dependencies": { + "@docusaurus/core": "^3.2.1", + "@docusaurus/preset-classic": "^3.2.1", + "@mdx-js/react": "^3.0.0", + "@react-aria/overlays": "^3.21.1", + "@react-aria/tooltip": "^3.7.2", + "@react-aria/utils": "^3.23.2", + "clsx": "^2.0.0", + "docusaurus-plugin-sass": "^0.2.5", + "lost-pixel": "^3.16.0", + "prism-react-renderer": "^2.3.0", + "react": "^18.0.0", + "react-dom": "^18.0.0", + "react-select": "^5.8.0", + "sass": "^1.72.0" }, "devDependencies": { - "@percy/cli": "^1.11.0", - "@types/node": "17.0.45", - "@types/react": "18.2.28", - "@types/react-dom": "18.2.13", - "@types/react-instantsearch-dom": "6.12.4", - "@types/styled-components": "5.1.28", - "gatsby-plugin-webpack-bundle-analyser-v2": "^1.1.31", - "husky": "7.0.4", - "is-absolute-url": "4.0.1", - "lint-staged": "11.2.6", - "path-browserify": "1.0.1", - "prettier": "2.8.8", - "prettier-plugin-prisma": "4.13.0", - "prism-react-renderer": "1.2.1", - "prisma": "^4.8.1", - "react-is": "18.2.0", - "tslint": "6.1.3", - "typescript": "4.9.5" + "@docusaurus/module-type-aliases": "^3.2.1", + "@docusaurus/tsconfig": "^3.2.1", + "@docusaurus/types": "^3.2.1", + "typescript": "~5.2.2", + "wrangler": "^3.48.0" }, - "lint-staged": { - "*.*": "prettier --write --ignore-unknown" + "browserslist": { + "production": [ + ">0.5%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 3 chrome version", + "last 3 firefox version", + "last 5 safari version" + ] }, - "percy": { - "version": 2, - "snapshot": { - "enableJavaScript": true, - "widths": [ - 1280 - ] - }, - "discovery": { - "launch-options": { - "timeout": 100000 - } - } + "engines": { + "node": ">=18.0" } } diff --git a/plugins/gatsby-algolia-indexer/gatsby-config.js b/plugins/gatsby-algolia-indexer/gatsby-config.js deleted file mode 100644 index 653e8c2df7..0000000000 --- a/plugins/gatsby-algolia-indexer/gatsby-config.js +++ /dev/null @@ -1,162 +0,0 @@ -const mdxToSearchable = require('./mdx-to-searchable') -const withDefaults = require('./options') - -const settings = { - searchableAttributes: ['apiReference', 'title', 'heading', 'content'], - attributesToHighlight: ['title', 'heading', 'content'], - attributesToSnippet: ['title:30', 'heading:50', 'content:50'], - hitsPerPage: 20, - attributeForDistinct: 'slug', - distinct: 2, - separatorsToIndex: '!#()[]{}*+-_一,:;<>?@/^|%&~£¥$§€†‡', -} - -// Util functions - -const flat = (array) => { - var result = [] - array.forEach(function (a) { - result.push(a) - if (Array.isArray(a.items)) { - result = result.concat(flat(a.items)) - } - }) - return result -} - -const removeInlineCode = (heading, path) => - path - ? heading.replace(/inlinecode/g, '') - : heading.replace('<inlinecode>', '').replace('</inlinecode>', '') - -const isApiTerm = (term) => term.includes('AlgoliaTerm') && term.split('"')[1] === 'apiReference' - -const getApiVal = (term) => term.split('"')[3] - -const removeFrontmatter = (rawMdx) => rawMdx.split('---').slice(2).join('---') - -const unnestFrontmatter = (node) => { - const { fields, frontmatter, ...rest } = node - - return { - ...fields, - ...frontmatter, - ...rest, - } -} - -// Transform function - -const handleRawBody = (node) => { - const { rawBody, ...rest } = node - - const techParams = `${ - rest.langSwitcher ? `${rest.langSwitcher[0]}${rest.dbSwitcher ? '-' : ''}` : '' - }${rest.dbSwitcher ? `${rest.dbSwitcher[0]}` : ''}` - - const getTechParams = (item) => { - const path = `${ - rest.langSwitcher - ? `${item.langVal === '' || item.langVal === '*' ? rest.langSwitcher[0] : item.langVal}${ - rest.dbSwitcher ? '-' : '' - }` - : '' - }${ - rest.dbSwitcher - ? `${item.dbVal === '' || item.dbVal === '*' ? rest.dbSwitcher[0] : item.dbVal}` - : '' - }` - return path - } - - const getTitlePath = (item) => { - const tocItem = - rest.tableOfContents && - rest.tableOfContents.items && - item.heading && - flat(rest.tableOfContents.items).find( - (t) => t.title && removeInlineCode(t.title) === item.heading.replace(/`/g, '') - ) - return tocItem && tocItem.url ? removeInlineCode(tocItem.url, true) : '' - } - - const data = mdxToSearchable(removeFrontmatter(rawBody)) - - const records = data.map((item, index) => { - const record = { - //id: index, - id: rest.id + index, - title: rest.title, - slug: rest.modSlug, - apiReference: isApiTerm(item.text) ? getApiVal(item.text) : null, - heading: item.heading ? removeInlineCode(item.heading) : rest.title, - content: item.text.includes('\n') ? item.text.split(' ').slice(0, 20).join(' ') : item.text, - path: `${rest.modSlug.replace(/\d{2,}-/g, '')}${ - getTechParams(item) ? '-' + getTechParams(item) : '' - }${getTitlePath(item)}`, - internal: { - contentDigest: rest.internal.contentDigest, - }, - } - return record - }) - - return records -} - -module.exports = (options) => { - const { appId, adminKey, indexName } = withDefaults(options) - const queries = [ - { - query: `{ - allMdx { - edges { - node { - id - rawBody - fields { - slug - modSlug - } - internal { - contentDigest - } - frontmatter { - title - langSwitcher - dbSwitcher - search - } - tableOfContents - } - } - } - }`, - indexName, - settings, - transformer: ({ data }) => { - const noSearchFlag = Array.from(data.allMdx.edges).filter( - (e) => e.node.frontmatter.search !== false - ) - return noSearchFlag - .map((edge) => edge.node) - .map(unnestFrontmatter) - .map(handleRawBody) - .reduce((acc, cur) => [...acc, ...cur], []) - }, - }, - ] - - return { - plugins: [ - { - resolve: `gatsby-plugin-algolia`, - options: { - appId, - apiKey: adminKey, - queries, - }, - }, - ], - } -} diff --git a/plugins/gatsby-algolia-indexer/gatsby-node.js b/plugins/gatsby-algolia-indexer/gatsby-node.js deleted file mode 100644 index 48d2773929..0000000000 --- a/plugins/gatsby-algolia-indexer/gatsby-node.js +++ /dev/null @@ -1 +0,0 @@ -//noop diff --git a/plugins/gatsby-algolia-indexer/index.js b/plugins/gatsby-algolia-indexer/index.js deleted file mode 100644 index 48d2773929..0000000000 --- a/plugins/gatsby-algolia-indexer/index.js +++ /dev/null @@ -1 +0,0 @@ -//noop diff --git a/plugins/gatsby-algolia-indexer/mdx-to-searchable.js b/plugins/gatsby-algolia-indexer/mdx-to-searchable.js deleted file mode 100644 index 72cd6725c0..0000000000 --- a/plugins/gatsby-algolia-indexer/mdx-to-searchable.js +++ /dev/null @@ -1,8 +0,0 @@ -const remark = require('remark') -const mdx = require('remark-mdx') -const searchable = require('./remark-mdx-searchable') - -module.exports = (doc) => { - const result = remark().use(mdx).use(searchable).processSync(doc) - return result.data -} diff --git a/plugins/gatsby-algolia-indexer/options.js b/plugins/gatsby-algolia-indexer/options.js deleted file mode 100644 index 5f2d87cd7b..0000000000 --- a/plugins/gatsby-algolia-indexer/options.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = (options) => ({ - appId: null, - adminKey: null, - searchKey: null, - indexName: null, - query: '', // optional: use this to overwrite the default query. - ...options, -}) diff --git a/plugins/gatsby-algolia-indexer/package-lock.json b/plugins/gatsby-algolia-indexer/package-lock.json deleted file mode 100644 index a5799d9462..0000000000 --- a/plugins/gatsby-algolia-indexer/package-lock.json +++ /dev/null @@ -1,2148 +0,0 @@ -{ - "name": "gatsby-algolia-indexer", - "version": "1.0.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "gatsby-algolia-indexer", - "version": "1.0.0", - "license": "MIT", - "dependencies": { - "algoliasearch": "4.11.0", - "remark": "^12.0.1", - "remark-mdx": "^1.6.16" - } - }, - "node_modules/@algolia/cache-browser-local-storage": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.11.0.tgz", - "integrity": "sha512-4sr9vHIG1fVA9dONagdzhsI/6M5mjs/qOe2xUP0yBmwsTsuwiZq3+Xu6D3dsxsuFetcJgC6ydQoCW8b7fDJHYQ==", - "dependencies": { - "@algolia/cache-common": "4.11.0" - } - }, - "node_modules/@algolia/cache-common": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.11.0.tgz", - "integrity": "sha512-lODcJRuPXqf+6mp0h6bOxPMlbNoyn3VfjBVcQh70EDP0/xExZbkpecgHyyZK4kWg+evu+mmgvTK3GVHnet/xKw==" - }, - "node_modules/@algolia/cache-in-memory": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.11.0.tgz", - "integrity": "sha512-aBz+stMSTBOBaBEQ43zJXz2DnwS7fL6dR0e2myehAgtfAWlWwLDHruc/98VOy1ZAcBk1blE2LCU02bT5HekGxQ==", - "dependencies": { - "@algolia/cache-common": "4.11.0" - } - }, - "node_modules/@algolia/client-account": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.11.0.tgz", - "integrity": "sha512-jwmFBoUSzoMwMqgD3PmzFJV/d19p1RJXB6C1ADz4ju4mU7rkaQLtqyZroQpheLoU5s5Tilmn/T8/0U2XLoJCRQ==", - "dependencies": { - "@algolia/client-common": "4.11.0", - "@algolia/client-search": "4.11.0", - "@algolia/transporter": "4.11.0" - } - }, - "node_modules/@algolia/client-analytics": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.11.0.tgz", - "integrity": "sha512-v5U9585aeEdYml7JqggHAj3E5CQ+jPwGVztPVhakBk8H/cmLyPS2g8wvmIbaEZCHmWn4TqFj3EBHVYxAl36fSA==", - "dependencies": { - "@algolia/client-common": "4.11.0", - "@algolia/client-search": "4.11.0", - "@algolia/requester-common": "4.11.0", - "@algolia/transporter": "4.11.0" - } - }, - "node_modules/@algolia/client-common": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.11.0.tgz", - "integrity": "sha512-Qy+F+TZq12kc7tgfC+FM3RvYH/Ati7sUiUv/LkvlxFwNwNPwWGoZO81AzVSareXT/ksDDrabD4mHbdTbBPTRmQ==", - "dependencies": { - "@algolia/requester-common": "4.11.0", - "@algolia/transporter": "4.11.0" - } - }, - "node_modules/@algolia/client-personalization": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.11.0.tgz", - "integrity": "sha512-mI+X5IKiijHAzf9fy8VSl/GTT67dzFDnJ0QAM8D9cMPevnfX4U72HRln3Mjd0xEaYUOGve8TK/fMg7d3Z5yG6g==", - "dependencies": { - "@algolia/client-common": "4.11.0", - "@algolia/requester-common": "4.11.0", - "@algolia/transporter": "4.11.0" - } - }, - "node_modules/@algolia/client-search": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.11.0.tgz", - "integrity": "sha512-iovPLc5YgiXBdw2qMhU65sINgo9umWbHFzInxoNErWnYoTQWfXsW6P54/NlKx5uscoLVjSf+5RUWwFu5BX+lpw==", - "dependencies": { - "@algolia/client-common": "4.11.0", - "@algolia/requester-common": "4.11.0", - "@algolia/transporter": "4.11.0" - } - }, - "node_modules/@algolia/logger-common": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.11.0.tgz", - "integrity": "sha512-pRMJFeOY8hoWKIxWuGHIrqnEKN/kqKh7UilDffG/+PeEGxBuku+Wq5CfdTFG0C9ewUvn8mAJn5BhYA5k8y0Jqg==" - }, - "node_modules/@algolia/logger-console": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.11.0.tgz", - "integrity": "sha512-wXztMk0a3VbNmYP8Kpc+F7ekuvaqZmozM2eTLok0XIshpAeZ/NJDHDffXK2Pw+NF0wmHqurptLYwKoikjBYvhQ==", - "dependencies": { - "@algolia/logger-common": "4.11.0" - } - }, - "node_modules/@algolia/requester-browser-xhr": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.11.0.tgz", - "integrity": "sha512-Fp3SfDihAAFR8bllg8P5ouWi3+qpEVN5e7hrtVIYldKBOuI/qFv80Zv/3/AMKNJQRYglS4zWyPuqrXm58nz6KA==", - "dependencies": { - "@algolia/requester-common": "4.11.0" - } - }, - "node_modules/@algolia/requester-common": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.11.0.tgz", - "integrity": "sha512-+cZGe/9fuYgGuxjaBC+xTGBkK7OIYdfapxhfvEf03dviLMPmhmVYFJtJlzAjQ2YmGDJpHrGgAYj3i/fbs8yhiA==" - }, - "node_modules/@algolia/requester-node-http": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.11.0.tgz", - "integrity": "sha512-qJIk9SHRFkKDi6dMT9hba8X1J1z92T5AZIgl+tsApjTGIRQXJLTIm+0q4yOefokfu4CoxYwRZ9QAq+ouGwfeOg==", - "dependencies": { - "@algolia/requester-common": "4.11.0" - } - }, - "node_modules/@algolia/transporter": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.11.0.tgz", - "integrity": "sha512-k4dyxiaEfYpw4UqybK9q7lrFzehygo6KV3OCYJMMdX0IMWV0m4DXdU27c1zYRYtthaFYaBzGF4Kjcl8p8vxCKw==", - "dependencies": { - "@algolia/cache-common": "4.11.0", - "@algolia/logger-common": "4.11.0", - "@algolia/requester-common": "4.11.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.12.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", - "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", - "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.12.5", - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helpers": "^7.12.5", - "@babel/parser": "^7.12.7", - "@babel/template": "^7.12.7", - "@babel/traverse": "^7.12.9", - "@babel/types": "^7.12.7", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.2", - "lodash": "^4.17.19", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/generator": { - "version": "7.18.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz", - "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==", - "dependencies": { - "@babel/types": "^7.18.7", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz", - "integrity": "sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz", - "integrity": "sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==", - "dependencies": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.6.tgz", - "integrity": "sha512-L//phhB4al5uucwzlimruukHB3jRd5JGClwRMD/ROrVjXfLqovYnvQrK/JK36WYyVwGGO7OD3kMyVTjx+WVPhw==", - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", - "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", - "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", - "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.6.tgz", - "integrity": "sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ==", - "dependencies": { - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.6.tgz", - "integrity": "sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw==", - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", - "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.12.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", - "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.6.tgz", - "integrity": "sha512-FjdqgMv37yVl/gwvzkcB+wfjRI8HQmc5EgOG9iGNvUY1ok+TjsoaMP7IqCDZBhkFcM5f3OPVMs6Dmp03C5k4/A==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-parameters/node_modules/@babel/helper-plugin-utils": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.6.tgz", - "integrity": "sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.6.tgz", - "integrity": "sha512-zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw==", - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-function-name": "^7.18.6", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.18.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.7.tgz", - "integrity": "sha512-QG3yxTcTIBoAcQmkCs+wAPYZhu7Dk9rXKacINfNbdJDNERTbLQbHGyVG8q/YGMPeCJRIhSY0+fTc5+xuh6WPSQ==", - "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", - "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@mdx-js/util": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/@mdx-js/util/-/util-1.6.22.tgz", - "integrity": "sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@types/unist": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", - "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==" - }, - "node_modules/algoliasearch": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.11.0.tgz", - "integrity": "sha512-IXRj8kAP2WrMmj+eoPqPc6P7Ncq1yZkFiyDrjTBObV1ADNL8Z/KdZ+dWC5MmYcBLAbcB/mMCpak5N/D1UIZvsA==", - "dependencies": { - "@algolia/cache-browser-local-storage": "4.11.0", - "@algolia/cache-common": "4.11.0", - "@algolia/cache-in-memory": "4.11.0", - "@algolia/client-account": "4.11.0", - "@algolia/client-analytics": "4.11.0", - "@algolia/client-common": "4.11.0", - "@algolia/client-personalization": "4.11.0", - "@algolia/client-search": "4.11.0", - "@algolia/logger-common": "4.11.0", - "@algolia/logger-console": "4.11.0", - "@algolia/requester-browser-xhr": "4.11.0", - "@algolia/requester-common": "4.11.0", - "@algolia/requester-node-http": "4.11.0", - "@algolia/transporter": "4.11.0" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/bail": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", - "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/ccount": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", - "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/character-entities": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", - "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-html4": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.4.tgz", - "integrity": "sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-legacy": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", - "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-reference-invalid": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", - "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/collapse-white-space": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz", - "integrity": "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/is-alphabetical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", - "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-alphanumeric": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz", - "integrity": "sha512-ZmRL7++ZkcMOfDuWZuMJyIVLr2keE1o/DeNWh1EmgqGhUcV+9BIVsx0BcSBOHTZqzjs4+dISzr2KAeBEWGgXeA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-alphanumerical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", - "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", - "dependencies": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "engines": { - "node": ">=4" - } - }, - "node_modules/is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-decimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", - "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-hexadecimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", - "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-whitespace-character": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", - "integrity": "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-word-character": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz", - "integrity": "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/longest-streak": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", - "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/markdown-escapes": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz", - "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/markdown-table": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", - "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==", - "dependencies": { - "repeat-string": "^1.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-compact": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-2.0.1.tgz", - "integrity": "sha512-7GlnT24gEwDrdAwEHrU4Vv5lLWrEer4KOkAiKT9nYstsTad7Oc1TwqT2zIMKRdZF7cTuaf+GA1E4Kv7jJh8mPA==", - "dependencies": { - "unist-util-visit": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/parse-entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", - "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", - "dependencies": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/remark": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/remark/-/remark-12.0.1.tgz", - "integrity": "sha512-gS7HDonkdIaHmmP/+shCPejCEEW+liMp/t/QwmF0Xt47Rpuhl32lLtDV1uKWvGoq+kxr5jSgg5oAIpGuyULjUw==", - "dependencies": { - "remark-parse": "^8.0.0", - "remark-stringify": "^8.0.0", - "unified": "^9.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-mdx": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-1.6.22.tgz", - "integrity": "sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ==", - "dependencies": { - "@babel/core": "7.12.9", - "@babel/helper-plugin-utils": "7.10.4", - "@babel/plugin-proposal-object-rest-spread": "7.12.1", - "@babel/plugin-syntax-jsx": "7.12.1", - "@mdx-js/util": "1.6.22", - "is-alphabetical": "1.0.4", - "remark-parse": "8.0.3", - "unified": "9.2.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-mdx/node_modules/unified": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", - "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", - "dependencies": { - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-parse": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz", - "integrity": "sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==", - "dependencies": { - "ccount": "^1.0.0", - "collapse-white-space": "^1.0.2", - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-whitespace-character": "^1.0.0", - "is-word-character": "^1.0.0", - "markdown-escapes": "^1.0.0", - "parse-entities": "^2.0.0", - "repeat-string": "^1.5.4", - "state-toggle": "^1.0.0", - "trim": "0.0.1", - "trim-trailing-lines": "^1.0.0", - "unherit": "^1.0.4", - "unist-util-remove-position": "^2.0.0", - "vfile-location": "^3.0.0", - "xtend": "^4.0.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-stringify": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-8.1.1.tgz", - "integrity": "sha512-q4EyPZT3PcA3Eq7vPpT6bIdokXzFGp9i85igjmhRyXWmPs0Y6/d2FYwUNotKAWyLch7g0ASZJn/KHHcHZQ163A==", - "dependencies": { - "ccount": "^1.0.0", - "is-alphanumeric": "^1.0.0", - "is-decimal": "^1.0.0", - "is-whitespace-character": "^1.0.0", - "longest-streak": "^2.0.1", - "markdown-escapes": "^1.0.0", - "markdown-table": "^2.0.0", - "mdast-util-compact": "^2.0.0", - "parse-entities": "^2.0.0", - "repeat-string": "^1.5.4", - "state-toggle": "^1.0.0", - "stringify-entities": "^3.0.0", - "unherit": "^1.0.4", - "xtend": "^4.0.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/state-toggle": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz", - "integrity": "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/stringify-entities": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-3.1.0.tgz", - "integrity": "sha512-3FP+jGMmMV/ffZs86MoghGqAoqXAdxLrJP4GUdrDN1aIScYih5tuIO3eF4To5AJZ79KDZ8Fpdy7QJnK8SsL1Vg==", - "dependencies": { - "character-entities-html4": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "xtend": "^4.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "engines": { - "node": ">=4" - } - }, - "node_modules/trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==" - }, - "node_modules/trim-trailing-lines": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz", - "integrity": "sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/trough": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", - "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/unherit": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz", - "integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==", - "dependencies": { - "inherits": "^2.0.0", - "xtend": "^4.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/unified": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", - "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", - "dependencies": { - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-is": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", - "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-remove-position": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz", - "integrity": "sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==", - "dependencies": { - "unist-util-visit": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-stringify-position": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", - "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", - "dependencies": { - "@types/unist": "^2.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", - "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0", - "unist-util-visit-parents": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit-parents": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", - "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", - "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", - "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^2.0.0", - "vfile-message": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-location": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz", - "integrity": "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-message": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", - "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "engines": { - "node": ">=0.4" - } - } - }, - "dependencies": { - "@algolia/cache-browser-local-storage": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.11.0.tgz", - "integrity": "sha512-4sr9vHIG1fVA9dONagdzhsI/6M5mjs/qOe2xUP0yBmwsTsuwiZq3+Xu6D3dsxsuFetcJgC6ydQoCW8b7fDJHYQ==", - "requires": { - "@algolia/cache-common": "4.11.0" - } - }, - "@algolia/cache-common": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.11.0.tgz", - "integrity": "sha512-lODcJRuPXqf+6mp0h6bOxPMlbNoyn3VfjBVcQh70EDP0/xExZbkpecgHyyZK4kWg+evu+mmgvTK3GVHnet/xKw==" - }, - "@algolia/cache-in-memory": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.11.0.tgz", - "integrity": "sha512-aBz+stMSTBOBaBEQ43zJXz2DnwS7fL6dR0e2myehAgtfAWlWwLDHruc/98VOy1ZAcBk1blE2LCU02bT5HekGxQ==", - "requires": { - "@algolia/cache-common": "4.11.0" - } - }, - "@algolia/client-account": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.11.0.tgz", - "integrity": "sha512-jwmFBoUSzoMwMqgD3PmzFJV/d19p1RJXB6C1ADz4ju4mU7rkaQLtqyZroQpheLoU5s5Tilmn/T8/0U2XLoJCRQ==", - "requires": { - "@algolia/client-common": "4.11.0", - "@algolia/client-search": "4.11.0", - "@algolia/transporter": "4.11.0" - } - }, - "@algolia/client-analytics": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.11.0.tgz", - "integrity": "sha512-v5U9585aeEdYml7JqggHAj3E5CQ+jPwGVztPVhakBk8H/cmLyPS2g8wvmIbaEZCHmWn4TqFj3EBHVYxAl36fSA==", - "requires": { - "@algolia/client-common": "4.11.0", - "@algolia/client-search": "4.11.0", - "@algolia/requester-common": "4.11.0", - "@algolia/transporter": "4.11.0" - } - }, - "@algolia/client-common": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.11.0.tgz", - "integrity": "sha512-Qy+F+TZq12kc7tgfC+FM3RvYH/Ati7sUiUv/LkvlxFwNwNPwWGoZO81AzVSareXT/ksDDrabD4mHbdTbBPTRmQ==", - "requires": { - "@algolia/requester-common": "4.11.0", - "@algolia/transporter": "4.11.0" - } - }, - "@algolia/client-personalization": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.11.0.tgz", - "integrity": "sha512-mI+X5IKiijHAzf9fy8VSl/GTT67dzFDnJ0QAM8D9cMPevnfX4U72HRln3Mjd0xEaYUOGve8TK/fMg7d3Z5yG6g==", - "requires": { - "@algolia/client-common": "4.11.0", - "@algolia/requester-common": "4.11.0", - "@algolia/transporter": "4.11.0" - } - }, - "@algolia/client-search": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.11.0.tgz", - "integrity": "sha512-iovPLc5YgiXBdw2qMhU65sINgo9umWbHFzInxoNErWnYoTQWfXsW6P54/NlKx5uscoLVjSf+5RUWwFu5BX+lpw==", - "requires": { - "@algolia/client-common": "4.11.0", - "@algolia/requester-common": "4.11.0", - "@algolia/transporter": "4.11.0" - } - }, - "@algolia/logger-common": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.11.0.tgz", - "integrity": "sha512-pRMJFeOY8hoWKIxWuGHIrqnEKN/kqKh7UilDffG/+PeEGxBuku+Wq5CfdTFG0C9ewUvn8mAJn5BhYA5k8y0Jqg==" - }, - "@algolia/logger-console": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.11.0.tgz", - "integrity": "sha512-wXztMk0a3VbNmYP8Kpc+F7ekuvaqZmozM2eTLok0XIshpAeZ/NJDHDffXK2Pw+NF0wmHqurptLYwKoikjBYvhQ==", - "requires": { - "@algolia/logger-common": "4.11.0" - } - }, - "@algolia/requester-browser-xhr": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.11.0.tgz", - "integrity": "sha512-Fp3SfDihAAFR8bllg8P5ouWi3+qpEVN5e7hrtVIYldKBOuI/qFv80Zv/3/AMKNJQRYglS4zWyPuqrXm58nz6KA==", - "requires": { - "@algolia/requester-common": "4.11.0" - } - }, - "@algolia/requester-common": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.11.0.tgz", - "integrity": "sha512-+cZGe/9fuYgGuxjaBC+xTGBkK7OIYdfapxhfvEf03dviLMPmhmVYFJtJlzAjQ2YmGDJpHrGgAYj3i/fbs8yhiA==" - }, - "@algolia/requester-node-http": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.11.0.tgz", - "integrity": "sha512-qJIk9SHRFkKDi6dMT9hba8X1J1z92T5AZIgl+tsApjTGIRQXJLTIm+0q4yOefokfu4CoxYwRZ9QAq+ouGwfeOg==", - "requires": { - "@algolia/requester-common": "4.11.0" - } - }, - "@algolia/transporter": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.11.0.tgz", - "integrity": "sha512-k4dyxiaEfYpw4UqybK9q7lrFzehygo6KV3OCYJMMdX0IMWV0m4DXdU27c1zYRYtthaFYaBzGF4Kjcl8p8vxCKw==", - "requires": { - "@algolia/cache-common": "4.11.0", - "@algolia/logger-common": "4.11.0", - "@algolia/requester-common": "4.11.0" - } - }, - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "requires": { - "@babel/highlight": "^7.18.6" - } - }, - "@babel/core": { - "version": "7.12.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", - "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.12.5", - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helpers": "^7.12.5", - "@babel/parser": "^7.12.7", - "@babel/template": "^7.12.7", - "@babel/traverse": "^7.12.9", - "@babel/types": "^7.12.7", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.2", - "lodash": "^4.17.19", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" - } - }, - "@babel/generator": { - "version": "7.18.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz", - "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==", - "requires": { - "@babel/types": "^7.18.7", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - } - }, - "@babel/helper-environment-visitor": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz", - "integrity": "sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q==" - }, - "@babel/helper-function-name": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz", - "integrity": "sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==", - "requires": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-module-transforms": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.6.tgz", - "integrity": "sha512-L//phhB4al5uucwzlimruukHB3jRd5JGClwRMD/ROrVjXfLqovYnvQrK/JK36WYyVwGGO7OD3kMyVTjx+WVPhw==", - "requires": { - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", - "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" - }, - "@babel/helper-simple-access": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", - "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", - "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==" - }, - "@babel/helpers": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.6.tgz", - "integrity": "sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ==", - "requires": { - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6" - } - }, - "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.6.tgz", - "integrity": "sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw==" - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", - "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.12.1" - } - }, - "@babel/plugin-syntax-jsx": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", - "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.6.tgz", - "integrity": "sha512-FjdqgMv37yVl/gwvzkcB+wfjRI8HQmc5EgOG9iGNvUY1ok+TjsoaMP7IqCDZBhkFcM5f3OPVMs6Dmp03C5k4/A==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.6.tgz", - "integrity": "sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg==" - } - } - }, - "@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" - } - }, - "@babel/traverse": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.6.tgz", - "integrity": "sha512-zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw==", - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-function-name": "^7.18.6", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.18.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.7.tgz", - "integrity": "sha512-QG3yxTcTIBoAcQmkCs+wAPYZhu7Dk9rXKacINfNbdJDNERTbLQbHGyVG8q/YGMPeCJRIhSY0+fTc5+xuh6WPSQ==", - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - } - }, - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" - }, - "@jridgewell/trace-mapping": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", - "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@mdx-js/util": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/@mdx-js/util/-/util-1.6.22.tgz", - "integrity": "sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==" - }, - "@types/unist": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", - "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==" - }, - "algoliasearch": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.11.0.tgz", - "integrity": "sha512-IXRj8kAP2WrMmj+eoPqPc6P7Ncq1yZkFiyDrjTBObV1ADNL8Z/KdZ+dWC5MmYcBLAbcB/mMCpak5N/D1UIZvsA==", - "requires": { - "@algolia/cache-browser-local-storage": "4.11.0", - "@algolia/cache-common": "4.11.0", - "@algolia/cache-in-memory": "4.11.0", - "@algolia/client-account": "4.11.0", - "@algolia/client-analytics": "4.11.0", - "@algolia/client-common": "4.11.0", - "@algolia/client-personalization": "4.11.0", - "@algolia/client-search": "4.11.0", - "@algolia/logger-common": "4.11.0", - "@algolia/logger-console": "4.11.0", - "@algolia/requester-browser-xhr": "4.11.0", - "@algolia/requester-common": "4.11.0", - "@algolia/requester-node-http": "4.11.0", - "@algolia/transporter": "4.11.0" - } - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "bail": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", - "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==" - }, - "ccount": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", - "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==" - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "character-entities": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", - "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==" - }, - "character-entities-html4": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.4.tgz", - "integrity": "sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g==" - }, - "character-entities-legacy": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", - "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==" - }, - "character-reference-invalid": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", - "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==" - }, - "collapse-white-space": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz", - "integrity": "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==" - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "is-alphabetical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", - "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==" - }, - "is-alphanumeric": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz", - "integrity": "sha512-ZmRL7++ZkcMOfDuWZuMJyIVLr2keE1o/DeNWh1EmgqGhUcV+9BIVsx0BcSBOHTZqzjs4+dISzr2KAeBEWGgXeA==" - }, - "is-alphanumerical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", - "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", - "requires": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" - } - }, - "is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==" - }, - "is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", - "requires": { - "has": "^1.0.3" - } - }, - "is-decimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", - "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==" - }, - "is-hexadecimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", - "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==" - }, - "is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==" - }, - "is-whitespace-character": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", - "integrity": "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==" - }, - "is-word-character": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz", - "integrity": "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==" - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" - }, - "json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==" - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "longest-streak": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", - "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==" - }, - "markdown-escapes": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz", - "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==" - }, - "markdown-table": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", - "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==", - "requires": { - "repeat-string": "^1.0.0" - } - }, - "mdast-util-compact": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-2.0.1.tgz", - "integrity": "sha512-7GlnT24gEwDrdAwEHrU4Vv5lLWrEer4KOkAiKT9nYstsTad7Oc1TwqT2zIMKRdZF7cTuaf+GA1E4Kv7jJh8mPA==", - "requires": { - "unist-util-visit": "^2.0.0" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "parse-entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", - "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", - "requires": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" - } - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "remark": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/remark/-/remark-12.0.1.tgz", - "integrity": "sha512-gS7HDonkdIaHmmP/+shCPejCEEW+liMp/t/QwmF0Xt47Rpuhl32lLtDV1uKWvGoq+kxr5jSgg5oAIpGuyULjUw==", - "requires": { - "remark-parse": "^8.0.0", - "remark-stringify": "^8.0.0", - "unified": "^9.0.0" - } - }, - "remark-mdx": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-1.6.22.tgz", - "integrity": "sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ==", - "requires": { - "@babel/core": "7.12.9", - "@babel/helper-plugin-utils": "7.10.4", - "@babel/plugin-proposal-object-rest-spread": "7.12.1", - "@babel/plugin-syntax-jsx": "7.12.1", - "@mdx-js/util": "1.6.22", - "is-alphabetical": "1.0.4", - "remark-parse": "8.0.3", - "unified": "9.2.0" - }, - "dependencies": { - "unified": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", - "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", - "requires": { - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" - } - } - } - }, - "remark-parse": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz", - "integrity": "sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==", - "requires": { - "ccount": "^1.0.0", - "collapse-white-space": "^1.0.2", - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-whitespace-character": "^1.0.0", - "is-word-character": "^1.0.0", - "markdown-escapes": "^1.0.0", - "parse-entities": "^2.0.0", - "repeat-string": "^1.5.4", - "state-toggle": "^1.0.0", - "trim": "0.0.1", - "trim-trailing-lines": "^1.0.0", - "unherit": "^1.0.4", - "unist-util-remove-position": "^2.0.0", - "vfile-location": "^3.0.0", - "xtend": "^4.0.1" - } - }, - "remark-stringify": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-8.1.1.tgz", - "integrity": "sha512-q4EyPZT3PcA3Eq7vPpT6bIdokXzFGp9i85igjmhRyXWmPs0Y6/d2FYwUNotKAWyLch7g0ASZJn/KHHcHZQ163A==", - "requires": { - "ccount": "^1.0.0", - "is-alphanumeric": "^1.0.0", - "is-decimal": "^1.0.0", - "is-whitespace-character": "^1.0.0", - "longest-streak": "^2.0.1", - "markdown-escapes": "^1.0.0", - "markdown-table": "^2.0.0", - "mdast-util-compact": "^2.0.0", - "parse-entities": "^2.0.0", - "repeat-string": "^1.5.4", - "state-toggle": "^1.0.0", - "stringify-entities": "^3.0.0", - "unherit": "^1.0.4", - "xtend": "^4.0.1" - } - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==" - }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" - }, - "state-toggle": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz", - "integrity": "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==" - }, - "stringify-entities": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-3.1.0.tgz", - "integrity": "sha512-3FP+jGMmMV/ffZs86MoghGqAoqXAdxLrJP4GUdrDN1aIScYih5tuIO3eF4To5AJZ79KDZ8Fpdy7QJnK8SsL1Vg==", - "requires": { - "character-entities-html4": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" - }, - "trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==" - }, - "trim-trailing-lines": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz", - "integrity": "sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==" - }, - "trough": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", - "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==" - }, - "unherit": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz", - "integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==", - "requires": { - "inherits": "^2.0.0", - "xtend": "^4.0.0" - } - }, - "unified": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", - "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", - "requires": { - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" - } - }, - "unist-util-is": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", - "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==" - }, - "unist-util-remove-position": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz", - "integrity": "sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==", - "requires": { - "unist-util-visit": "^2.0.0" - } - }, - "unist-util-stringify-position": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", - "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", - "requires": { - "@types/unist": "^2.0.2" - } - }, - "unist-util-visit": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", - "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0", - "unist-util-visit-parents": "^3.0.0" - } - }, - "unist-util-visit-parents": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", - "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0" - } - }, - "vfile": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", - "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", - "requires": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^2.0.0", - "vfile-message": "^2.0.0" - } - }, - "vfile-location": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz", - "integrity": "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==" - }, - "vfile-message": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", - "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" - } - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - } - } -} diff --git a/plugins/gatsby-algolia-indexer/package.json b/plugins/gatsby-algolia-indexer/package.json deleted file mode 100644 index 42d61f2866..0000000000 --- a/plugins/gatsby-algolia-indexer/package.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "gatsby-algolia-indexer", - "version": "1.0.0", - "description": "Algolia", - "main": "index.js", - "license": "MIT", - "dependencies": { - "algoliasearch": "4.11.0", - "remark": "^12.0.1", - "remark-mdx": "^1.6.16" - } -} diff --git a/plugins/gatsby-algolia-indexer/remark-mdx-searchable.js b/plugins/gatsby-algolia-indexer/remark-mdx-searchable.js deleted file mode 100644 index 9a4c505d51..0000000000 --- a/plugins/gatsby-algolia-indexer/remark-mdx-searchable.js +++ /dev/null @@ -1,67 +0,0 @@ -const visit = require('unist-util-visit') -const textTypes = ['text', 'emphasis', 'strong', 'inlineCode', 'code'] - -const flattenNode = (node) => { - const p = [] - visit(node, (node) => { - if (!textTypes.includes(node.type)) return - p.push(node.value) - }) - return p.join(``) -} - -module.exports = () => (tree, file) => { - file.data = [] - let heading = null - let prev = '' - let prevType = '' - let langVal = '' - let dbVal = '' - - visit( - tree, - ({ type }) => { - return ['heading', 'paragraph', 'code', 'table', 'jsx', 'tableCell', 'tableRow'].includes( - type - ) - }, - (node) => { - if (node.type === 'jsx' && node.value.includes('<SwitchTech')) { - const val = node.value - .replace('<SwitchTech technologies={[', '') - .replace(']}>', '') - .replace(/\'/g, '') - langVal = val.split(', ')[0] - dbVal = val.split(', ')[1] - } - - if (node.type === 'jsx' && node.value.includes('</SwitchTech>')) { - langVal = '' - dbVal = '' - } - if (node.type === 'heading') { - if (prevType === 'heading') { - file.data.push({ - heading: prev, - text: '', - langVal, - dbVal, - }) - } - prev = flattenNode(node) - prevType = node.type - return (heading = flattenNode(node)) - } - - prev = flattenNode(node) - prevType = node.type - - file.data.push({ - heading, - text: flattenNode(node), - langVal, - dbVal, - }) - } - ) -} diff --git a/plugins/gatsby-plugin-lost-pixel/gatsby-node.js b/plugins/gatsby-plugin-lost-pixel/gatsby-node.js deleted file mode 100644 index f77ed7a869..0000000000 --- a/plugins/gatsby-plugin-lost-pixel/gatsby-node.js +++ /dev/null @@ -1,71 +0,0 @@ -const path = require('path') -const fsPromises = require('fs').promises - -const publicPath = `./public` - -// Excluded paths from page listing as they're redirected to the page with the language and db selected -// https://github.com/prisma/homepage-v8/blob/b972182ebee2c824e6b2981088907b215d9bfee0/public/_redirects#L75-L78 -const excludedPaths = [ - '/getting-started/quickstart', - '/getting-started/setup-prisma/add-to-existing-project', - '/getting-started/setup-prisma/start-from-scratch-sql ', - '/getting-started/setup-prisma/start-from-scratch-prisma-migrate', -] - -const errorPages = [ - '/orm/more/upgrade-guides/upgrade-from-prisma-1/schema-incompatibilities-mysql', - '/orm/more/upgrade-guides/upgrade-from-prisma-1/upgrading-the-prisma-layer-mysql', -] - -const longPages = [ - '/reference/api-reference/prisma-client-reference', - '/reference/api-reference/prisma-schema-reference', -] - -exports.onPostBuild = async ({ graphql, pathPrefix, basePath = pathPrefix }, pluginOptions) => { - const outputFile = path.join(publicPath, '/lost-pixel.json') - - const query = ` - { - allSitePage { - edges { - node { - path - } - } - } - }` - const { data } = await graphql(query) - - console.log('Generating lost-pixel.json file for lostpixel plugin.') - - // Construct the pages json by iterating over the mdx files. - - const pages = data.allSitePage.edges - .map((edge, i) => { - // Skip explicitly excluded paths - if ( - excludedPaths.includes(edge.node.path) || - longPages.includes(edge.node.path) || - errorPages.includes(edge.node.path) - ) - return null - // Allow headless browser to render super long pages before screenshoting them - - // console.log('entry', { - // path: edge.node.path, - // name: edge.node.path - // }) - - return { - path: edge.node.path, - name: - edge.node.path === '/' || edge.node.path === '/404/' - ? edge.node.path.split('/').join('-') - : edge.node.path, - } - }) - .filter((edge) => edge !== null) - console.log(pages.length) - await fsPromises.writeFile(outputFile, JSON.stringify(pages)) -} diff --git a/plugins/gatsby-plugin-lost-pixel/index.js b/plugins/gatsby-plugin-lost-pixel/index.js deleted file mode 100644 index 48d2773929..0000000000 --- a/plugins/gatsby-plugin-lost-pixel/index.js +++ /dev/null @@ -1 +0,0 @@ -//noop diff --git a/plugins/gatsby-plugin-lost-pixel/package.json b/plugins/gatsby-plugin-lost-pixel/package.json deleted file mode 100644 index db27f10444..0000000000 --- a/plugins/gatsby-plugin-lost-pixel/package.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "gatsby-plugin-lost-pixel", - "version": "1.0.0", - "description": "Create a json file with paths to screenshot with Lost Pixel", - "main": "index.js", - "license": "MIT" -} diff --git a/plugins/gatsby-plugin-page-list/gatsby-node.js b/plugins/gatsby-plugin-page-list/gatsby-node.js deleted file mode 100644 index e0f0e9c393..0000000000 --- a/plugins/gatsby-plugin-page-list/gatsby-node.js +++ /dev/null @@ -1,57 +0,0 @@ -const path = require('path') -const fsPromises = require('fs').promises -const url = require('url') - -const publicPath = `./public` - -// Excluded paths from page listing as they're redirected to the page with the language and db selected -// https://github.com/prisma/homepage-v8/blob/b972182ebee2c824e6b2981088907b215d9bfee0/public/_redirects#L75-L78 -const excludedPaths = [ - '/getting-started/quickstart', - '/getting-started/setup-prisma/add-to-existing-project', - '/getting-started/setup-prisma/start-from-scratch-sql ', - '/getting-started/setup-prisma/start-from-scratch-prisma-migrate', -] - -exports.onPostBuild = async ({ graphql, pathPrefix, basePath = pathPrefix }, pluginOptions) => { - const outputFile = path.join(publicPath, '/pages.json') - - const query = ` - { - site { - siteMetadata { - siteUrl - pathPrefix - } - } - allSitePage { - edges { - node { - path - pageContext - } - } - } - }` - const { data } = await graphql(query) - - // Construct the pages json by iterating over the mdx files. - const pages = data.allSitePage.edges - .map((edge, i) => { - // Skip the 404 pages and pages without seoTitle - if (!edge.node.pageContext || !edge.node.pageContext.seoTitle) return null - // Skip explicitly excluded paths - if (excludedPaths.includes(edge.node.path)) return null - - return { - title: edge.node.pageContext.seoTitle, - url: url.resolve( - data.site.siteMetadata.siteUrl, - path.join(data.site.siteMetadata.pathPrefix, edge.node.path) - ), - } - }) - .filter((edge) => edge !== null) - - await fsPromises.writeFile(outputFile, JSON.stringify(pages)) -} diff --git a/plugins/gatsby-plugin-page-list/index.js b/plugins/gatsby-plugin-page-list/index.js deleted file mode 100644 index 172f1ae6a4..0000000000 --- a/plugins/gatsby-plugin-page-list/index.js +++ /dev/null @@ -1 +0,0 @@ -// noop diff --git a/plugins/gatsby-plugin-page-list/package.json b/plugins/gatsby-plugin-page-list/package.json deleted file mode 100644 index a09648d65d..0000000000 --- a/plugins/gatsby-plugin-page-list/package.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "gatsby-plugin-page-list", - "version": "1.0.0", - "description": "Create a json file with all pages and titles", - "main": "index.js", - "license": "MIT" -} diff --git a/plugins/gatsby-remark-check-links-numberless/index.js b/plugins/gatsby-remark-check-links-numberless/index.js deleted file mode 100644 index 4bed87a468..0000000000 --- a/plugins/gatsby-remark-check-links-numberless/index.js +++ /dev/null @@ -1,372 +0,0 @@ -var visit = require('unist-util-visit') -const path = require('path') -var vercelSettings = require('../../vercel.json') - -const techStrings = [ - 'node', - 'typescript', - 'postgresql', - 'mysql', - 'sqlserver', - 'planetscale', - 'cockroachdb', -] -function getCacheKey(node) { - return `remark-check-links-${node.id}-${node.internal.contentDigest}` -} - -const isDirectMatch = (url, source) => - (url.includes('#') ? url.split('#')[0] : url) === source.replace('/docs', '') -const isSourcePartofUrl = (url, source) => - source.includes(':/any*') && ('/docs' + url).includes(source.replace('/:any*', '')) - -function getHeadingsMapKey(link, pathUrl) { - let key = link - const hashIndex = link.indexOf('#') - const hasHash = hashIndex !== -1 - if (hasHash) { - key = link.startsWith('#') ? pathUrl : link.slice(0, hashIndex) - } - - return { - key, - hasHash, - hashIndex, - } -} - -function createPathPrefixer(pathPrefix) { - return function withPathPrefix(url) { - var prefixed = pathPrefix + url - return prefixed.replace(/\/\//, '/') - } -} - -module.exports = async function plugin( - { markdownAST, markdownNode, files, getNode, cache, getCache, pathPrefix }, - { exceptions = [], ignore = [], verbose = true } = {} -) { - const withPathPrefix = createPathPrefixer(pathPrefix) - const pathSep = '/' - var pattern = /^https?:\/\//i - if (!markdownNode.fields) { - // let the file pass if it has no fields - return markdownAST - } - - const links = [] - const headings = [] - - function visitor(node, index, parent) { - if (parent.type === 'heading') { - headings.push(parent.data.id.replace(/inlinecode/g, '')) - return - } - - // if(node.isDomainUrl) { console.log(node) } - - if (!node.url.startsWith('mailto:') && !/^https?:\/\//.test(node.url)) { - let tranformedUrl = node.url - links.push({ - ...node, - tranformedUrl, - frontmatter: markdownNode.frontmatter, - }) - } - - if (node.isDomainUrl) { - let tranformedUrl = node.url - links.push({ - ...node, - tranformedUrl, - frontmatter: markdownNode.frontmatter, - }) - } - } - - visit(markdownAST, 'link', visitor) - - const parent = await getNode(markdownNode.parent) - const setAt = Date.now() - await cache.set(getCacheKey(parent), { - path: withPathPrefix( - markdownNode.fields.slug - .replace(new RegExp('\\b' + `${pathSep}index` + '\\b'), '') - .replace(/\d+-/g, '') - .concat(pathSep) - ), - links, - headings, - setAt, - }) - - // wait to see if all of the Markdown and MDX has been visited - const linksMap = {} - const headingsMap = {} - for (const file of files) { - if (/^mdx?$/.test(file.extension) && file.relativePath !== 'docs/README.md') { - const key = getCacheKey(file) - let visited = await cache.get(key) - if (!visited && getCache) { - // the cache provided to `gatsby-mdx` has its own namespace, and it - // doesn't have access to `getCache`, so we have to check to see if - // those files have been visited here. - const mdxCache = getCache('gatsby-plugin-mdx') - visited = await mdxCache.get(key) - } - if (visited && setAt >= visited.setAt) { - linksMap[visited.path] = visited.links - headingsMap[visited.path] = visited.headings - continue - } - - // don't continue if a page hasn't been visited yet - return - } - } - - let totalBrokenLinks = 0 - let totalBrokenAnchors = 0 - let totalDomainLinks = 0 - let totalTrailingSlashLinks = 0 - let totalRedirectedLinks = 0 - - const prefixedIgnore = ignore.map(withPathPrefix) - const prefixedExceptions = exceptions.map(withPathPrefix) - const pathKeys = Object.keys(linksMap) - const pathKeysWithoutIndex = pathKeys.map((p) => - p.replace(new RegExp('\\b' + `${pathSep}index` + '\\b'), '').replace(/\/$/, '') - ) - - for (const pathL in linksMap) { - if (prefixedIgnore.includes(pathL)) { - // don't check links on ignored pages - continue - } - - const linksForPath = linksMap[pathL] - if (linksForPath.length) { - const brokenLinks = linksForPath.filter((link) => { - // return true for broken links, false = pass - const { key, hasHash, hashIndex } = getHeadingsMapKey(link.tranformedUrl, pathL) - - if (link.originalUrl === '') { - return true - } - - if (prefixedExceptions.includes(key) || /^https?:\/\//.test(key)) { - // do not test this link as it is on the list of exceptions - return false - } - const url = hasHash ? link.tranformedUrl.slice(0, hashIndex) : link.tranformedUrl - const urlToCheck = url.slice(-1) === pathSep ? url.slice(0, -1) : url - const headings = headingsMap[key] - if (headings) { - if (hasHash) { - const id = link.tranformedUrl.slice(hashIndex + 1) - return !prefixedExceptions.includes(id) && !headings.includes(id) - } - - return false - } - return !pathKeysWithoutIndex.includes(urlToCheck) - }) - - const brokenAnchors = linksForPath.filter((link) => { - // return true for broken links, false = pass - const { key, hasHash, hashIndex } = getHeadingsMapKey(link.tranformedUrl, pathL) - - if (prefixedExceptions.includes(key) || /^https?:\/\//.test(key)) { - // do not test this link as it is on the list of exceptions - return false - } - const url = hasHash ? link.tranformedUrl.slice(0, hashIndex) : link.tranformedUrl - const urlToCheck = url.slice(-1) === pathSep ? url.slice(0, -1) : url - const keyToLook = `${key}${key.endsWith('/') ? '' : '/'}` - const headings = headingsMap[keyToLook] - if (headings) { - if (hasHash) { - const id = link.tranformedUrl.slice(hashIndex + 1) - return !prefixedExceptions.includes(id) && !headings.includes(id) - } - - return false - } - return !pathKeysWithoutIndex.includes(urlToCheck) - }) - - const domainLinks = linksForPath.filter((link) => { - return link.isDomainUrl - }) - - const trailingSlashLinks = linksForPath.filter((link) => { - return link.isTrailingSlashUrl - }) - - const redirectedLinks = linksForPath.filter((link) => { - if ( - link && - vercelSettings && - vercelSettings.redirects && - vercelSettings.redirects.some( - (r) => - isDirectMatch(link.originalUrl, r.source) || - isSourcePartofUrl(link.originalUrl, r.source) - ) - ) { - return true - } - }) - - const brokenLinkCount = brokenLinks.length - const brokenAnchorCount = brokenAnchors.length - const domainLinksCount = domainLinks.length - const trailingSlashLinksCount = trailingSlashLinks.length - const redirectedLinksCount = redirectedLinks.length - totalBrokenLinks += brokenLinkCount - totalBrokenAnchors += brokenAnchorCount - totalDomainLinks += domainLinksCount - totalTrailingSlashLinks += trailingSlashLinksCount - totalRedirectedLinks += redirectedLinksCount - - if (brokenLinkCount && verbose) { - console.warn(`${brokenLinkCount} broken links found on ${pathL.replace(/\/$/, '')}`) - for (const link of brokenLinks) { - let prefix = '-' - if (link.position) { - const { line, column } = link.position.start - - // account for the offset that frontmatter adds - const offset = link.frontmatter ? Object.keys(link.frontmatter).length + 2 : 0 - - prefix = [String(line + offset).padStart(3, ' '), String(column).padEnd(4, ' ')].join( - ':' - ) - } - - if (techStrings.some((tech) => link.originalUrl.includes(tech))) { - console.warn( - `${prefix} ${link.originalUrl} contains tech switcher strings. Please add this to the exceptions list in gatsby-config.ts` - ) - } else { - console.warn(`${prefix} ${link.originalUrl}`) - } - } - console.log('') - } - - if (brokenAnchorCount && verbose) { - console.warn(`${brokenAnchorCount} broken anchors found on ${pathL.replace(/\/$/, '')}`) - for (const link of brokenAnchors) { - let prefix = '-' - if (link.position) { - const { line, column } = link.position.start - - // account for the offset that frontmatter adds - const offset = link.frontmatter ? Object.keys(link.frontmatter).length + 2 : 0 - - prefix = [String(line + offset).padStart(3, ' '), String(column).padEnd(4, ' ')].join( - ':' - ) - } - console.warn(`${prefix} ${link.originalUrl}`) - } - console.log('') - } - - if (domainLinksCount && verbose) { - console.warn(`${domainLinksCount} domain urls found on ${pathL.replace(/\/$/, '')}`) - for (const link of domainLinks) { - let prefix = '-' - if (link.position) { - const { line, column } = link.position.start - - // account for the offset that frontmatter adds - const offset = link.frontmatter ? Object.keys(link.frontmatter).length + 2 : 0 - - prefix = [String(line + offset).padStart(3, ' '), String(column).padEnd(4, ' ')].join( - ':' - ) - } - console.warn(`${prefix} ${link.originalUrl}`) - } - console.log('') - } - - if (trailingSlashLinksCount && verbose) { - console.warn( - `${trailingSlashLinksCount} trailing slash urls found on ${pathL.replace(/\/$/, '')}` - ) - for (const link of trailingSlashLinks) { - let prefix = '-' - if (link.position) { - const { line, column } = link.position.start - - // account for the offset that frontmatter adds - const offset = link.frontmatter ? Object.keys(link.frontmatter).length + 2 : 0 - - prefix = [String(line + offset).padStart(3, ' '), String(column).padEnd(4, ' ')].join( - ':' - ) - } - console.warn(`${prefix} ${link.originalUrl}`) - } - console.log('') - } - - if (redirectedLinksCount && verbose) { - console.warn( - `${redirectedLinksCount} redirected links found on ${pathL.replace(/\/$/, '')}` - ) - for (const link of redirectedLinks) { - let prefix = '-' - if (link.position) { - const { line, column } = link.position.start - - // account for the offset that frontmatter adds - const offset = link.frontmatter ? Object.keys(link.frontmatter).length + 2 : 0 - - prefix = [String(line + offset).padStart(3, ' '), String(column).padEnd(4, ' ')].join( - ':' - ) - } - console.warn(`${prefix} ${link.originalUrl}`) - } - console.log('') - } - } - } - if ( - totalBrokenLinks || - totalBrokenAnchors || - totalDomainLinks || - totalTrailingSlashLinks || - totalRedirectedLinks - ) { - let message = ` - Broken (or redirected) internal links: ${totalBrokenLinks} - Broken anchors: ${totalBrokenAnchors} - Domain name in links: ${totalDomainLinks} - Links with trailing slashes: ${totalTrailingSlashLinks} - ` - - if (totalRedirectedLinks) { - message = `${message} - Redirected links found: ${totalRedirectedLinks}. Please run 'npm run redirect-transform' to replace these urls with correct paths - ` - } - if (process.env.NODE_ENV === 'production') { - // break builds with broken links before they get deployed for reals - // throw new Error(message) - console.warn(message) - } - - if (verbose) { - console.warn(message) - } - } else if (verbose) { - console.info('No internal broken links found') - } - - return markdownAST -} diff --git a/plugins/gatsby-remark-check-links-numberless/package.json b/plugins/gatsby-remark-check-links-numberless/package.json deleted file mode 100644 index e9453a9a4a..0000000000 --- a/plugins/gatsby-remark-check-links-numberless/package.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "gatsby-remark-check-links-numberless", - "version": "1.0.0", - "description": "Transformed links checker", - "main": "index.js", - "author": "Nilufar Bava <nilubava@gmail.com>", - "license": "ISC", - "keywords": [ - "gatsby", - "gatsby-plugin" - ] -} diff --git a/plugins/gatsby-remark-image-custom/constants.js b/plugins/gatsby-remark-image-custom/constants.js deleted file mode 100644 index 77d721069c..0000000000 --- a/plugins/gatsby-remark-image-custom/constants.js +++ /dev/null @@ -1,17 +0,0 @@ -exports.DEFAULT_OPTIONS = { - maxWidth: 650, - wrapperStyle: ``, - backgroundColor: `white`, - linkImagesToOriginal: true, - showCaptions: false, - markdownCaptions: false, - withWebp: false, - tracedSVG: false, - loading: `lazy`, - disableBgImageOnAlpha: false, - disableBgImage: false, -} - -exports.imageClass = `gatsby-resp-image-image` -exports.imageWrapperClass = `gatsby-resp-image-wrapper` -exports.imageBackgroundClass = `gatsby-resp-image-background-image` diff --git a/plugins/gatsby-remark-image-custom/gatsby-browser.js b/plugins/gatsby-remark-image-custom/gatsby-browser.js deleted file mode 100644 index 8f6f134a9b..0000000000 --- a/plugins/gatsby-remark-image-custom/gatsby-browser.js +++ /dev/null @@ -1,43 +0,0 @@ -const { - DEFAULT_OPTIONS, - imageClass, - imageBackgroundClass, - imageWrapperClass, -} = require(`./constants`) - -exports.onRouteUpdate = (apiCallbackContext, pluginOptions) => { - const options = Object.assign({}, DEFAULT_OPTIONS, pluginOptions) - - const imageWrappers = document.querySelectorAll(`.${imageWrapperClass}`) - - // https://css-tricks.com/snippets/javascript/loop-queryselectorall-matches/ - // for cross-browser looping through NodeList without polyfills - for (let i = 0; i < imageWrappers.length; i++) { - const imageWrapper = imageWrappers[i] - - const backgroundElement = imageWrapper.querySelector(`.${imageBackgroundClass}`) - const imageElement = imageWrapper.querySelector(`.${imageClass}`) - - const onImageLoad = () => { - backgroundElement.style.transition = `opacity 0.5s 0.5s` - imageElement.style.transition = `opacity 0.5s` - onImageComplete() - } - - const onImageComplete = () => { - backgroundElement.style.opacity = 0 - imageElement.style.opacity = 1 - imageElement.style.color = `inherit` - imageElement.style.boxShadow = `inset 0px 0px 0px 400px ${options.backgroundColor}` - imageElement.removeEventListener(`load`, onImageLoad) - imageElement.removeEventListener(`error`, onImageComplete) - } - - imageElement.style.opacity = 0 - imageElement.addEventListener(`load`, onImageLoad) - imageElement.addEventListener(`error`, onImageComplete) - if (imageElement.complete) { - onImageComplete() - } - } -} diff --git a/plugins/gatsby-remark-image-custom/gatsby-ssr.js b/plugins/gatsby-remark-image-custom/gatsby-ssr.js deleted file mode 100644 index 0f3b91d897..0000000000 --- a/plugins/gatsby-remark-image-custom/gatsby-ssr.js +++ /dev/null @@ -1,25 +0,0 @@ -const React = require('react') -const { imageClass } = require(`./constants`) - -exports.onRenderBody = ({ setHeadComponents }) => { - const style = ` - .${imageClass} { - width: 100%; - height: 100%; - margin: 0; - vertical-align: middle; - position: absolute; - top: 0; - left: 0; - color: transparent; - }` - .replace(/\s*\n\s*/g, ``) - .replace(/: /g, `:`) - .replace(/ \{/g, `{`) - - setHeadComponents([ - <style type="text/css" key="gatsby-remark-images-styles"> - {style} - </style>, - ]) -} diff --git a/plugins/gatsby-remark-image-custom/index.js b/plugins/gatsby-remark-image-custom/index.js deleted file mode 100644 index 4406c81527..0000000000 --- a/plugins/gatsby-remark-image-custom/index.js +++ /dev/null @@ -1,444 +0,0 @@ -const { - DEFAULT_OPTIONS, - imageClass, - imageBackgroundClass, - imageWrapperClass, -} = require(`./constants`) -const visitWithParents = require(`unist-util-visit-parents`) -const getDefinitions = require(`mdast-util-definitions`) -const path = require(`path`) -const queryString = require(`query-string`) -const isRelativeUrl = require(`is-relative-url`) -const _ = require(`lodash`) -const { fluid, stats, traceSVG } = require(`gatsby-plugin-sharp`) -const Promise = require(`bluebird`) -const cheerio = require(`cheerio`) -const slash = require(`slash`) -const chalk = require(`chalk`) - -// If the image is relative (not hosted elsewhere) -// 1. Find the image file -// 2. Find the image's size -// 3. Filter out any responsive image fluid sizes that are greater than the image's width -// 4. Create the responsive images. -// 5. Set the html w/ aspect ratio helper. -module.exports = ( - { files, markdownNode, markdownAST, pathPrefix, getNode, reporter, cache, compiler }, - pluginOptions -) => { - const options = _.defaults(pluginOptions, { pathPrefix }, DEFAULT_OPTIONS) - - const findParentLinks = ({ children }) => - children.some( - (node) => (node.type === `html` && !!node.value.match(/<a /)) || node.type === `link` - ) - - const getWidthOverride = (node) => { - if (!node.value || !node.value.match(/width/)) return null - - // extract width in pixels, as an integer (or null) - const regex = /width="([0-9]+)(?:px)?"/g - const match = regex.exec(node.value) - if (!match) return - return parseInt(match[1]) - } - - // Get all the available definitions in the markdown tree - const definitions = getDefinitions(markdownAST) - - // This will allow the use of html image tags - // const rawHtmlNodes = select(markdownAST, `html`) - let rawHtmlNodes = [] - visitWithParents(markdownAST, [`html`, `jsx`], (node, ancestors) => { - const inLink = ancestors.some(findParentLinks) - const width = getWidthOverride(node) || null - - rawHtmlNodes.push({ node, inLink, width }) - }) - - // This will only work for markdown syntax image tags - let markdownImageNodes = [] - - visitWithParents(markdownAST, [`image`, `imageReference`], (node, ancestors) => { - const inLink = ancestors.some(findParentLinks) - - markdownImageNodes.push({ node, inLink }) - }) - - const getImageInfo = (uri) => { - const { url, query } = queryString.parseUrl(uri) - return { - ext: path.extname(url).split(`.`).pop(), - url, - query, - } - } - - const getImageCaption = (node, overWrites) => { - const getCaptionString = () => { - const captionOptions = Array.isArray(options.showCaptions) - ? options.showCaptions - : options.showCaptions === true - ? [`title`, `alt`] - : false - - if (captionOptions) { - for (const option of captionOptions) { - switch (option) { - case `title`: - if (node.title) { - return node.title - } - break - case `alt`: - if (overWrites.alt) { - return overWrites.alt - } - if (node.alt) { - return node.alt - } - break - } - } - } - - return `` - } - - const captionString = getCaptionString() - - if (!options.markdownCaptions || !compiler) { - return _.escape(captionString) - } - - return compiler.generateHTML(compiler.parseString(captionString)) - } - - // Takes a node and generates the needed images and then returns - // the needed HTML replacement for the image - const generateImagesAndUpdateNode = async function ( - node, - resolve, - inLink, - overWrites = {}, - width = null - ) { - // Check if this markdownNode has a File parent. This plugin - // won't work if the image isn't hosted locally. - const parentNode = getNode(markdownNode.parent) - let imagePath - if (parentNode && parentNode.dir) { - imagePath = slash(path.join(parentNode.dir, getImageInfo(node.url).url)) - } else { - return null - } - - const imageNode = _.find(files, (file) => { - if (file && file.absolutePath) { - return file.absolutePath === imagePath - } - return null - }) - - if (!imageNode || !imageNode.absolutePath) { - return resolve() - } - - // If width attribute is set then overwrite gatsby-config's maxWidth - const args = width ? { ...options, maxWidth: `${width}px` } : options - - let fluidResult = await fluid({ - file: imageNode, - args, - reporter, - cache, - }) - - if (!fluidResult) { - return resolve() - } - - const originalImg = fluidResult.originalImg - const fallbackSrc = fluidResult.src - const srcSet = fluidResult.srcSet - const presentationWidth = width ? width : fluidResult.presentationWidth - - // Generate default alt tag - const srcSplit = getImageInfo(node.url).url.split(`/`) - const fileName = srcSplit[srcSplit.length - 1] - const fileNameNoExt = fileName.replace(/\.[^/.]+$/, ``) - const defaultAlt = fileNameNoExt.replace(/[^A-Z0-9]/gi, ` `) - - const alt = _.escape(overWrites.alt ? overWrites.alt : node.alt ? node.alt : defaultAlt) - - const title = node.title ? _.escape(node.title) : alt - - const loading = options.loading - - if (![`lazy`, `eager`, `auto`].includes(loading)) { - reporter.warn( - reporter.stripIndent(` - ${chalk.bold(loading)} is an invalid value for the ${chalk.bold( - `loading` - )} option. Please pass one of "lazy", "eager" or "auto". - `) - ) - } - - // Create our base image tag - let imageTag = ` - <img - class="${imageClass}" - alt="${alt}" - title="${title}" - src="${fallbackSrc}" - srcset="${srcSet}" - sizes="${fluidResult.sizes}" - loading="${loading}" - /> - `.trim() - - // if options.withWebp is enabled, generate a webp version and change the image tag to a picture tag - if (options.withWebp) { - const webpFluidResult = await fluid({ - file: imageNode, - args: _.defaults( - { toFormat: `WEBP` }, - // override options if it's an object, otherwise just pass through defaults - options.withWebp === true ? {} : options.withWebp, - pluginOptions, - DEFAULT_OPTIONS - ), - reporter, - }) - - if (!webpFluidResult) { - return resolve() - } - - imageTag = ` - <picture> - <source - srcset="${webpFluidResult.srcSet}" - sizes="${webpFluidResult.sizes}" - type="${webpFluidResult.srcSetType}" - /> - <source - srcset="${srcSet}" - sizes="${fluidResult.sizes}" - type="${fluidResult.srcSetType}" - /> - <img - class="${imageClass}" - src="${fallbackSrc}" - alt="${alt}" - title="${title}" - loading="${loading}" - /> - </picture> - `.trim() - } - - let placeholderImageData = fluidResult.base64 - - // if options.tracedSVG is enabled generate the traced SVG and use that as the placeholder image - if (options.tracedSVG) { - let args = typeof options.tracedSVG === `object` ? options.tracedSVG : {} - - // Translate Potrace constants (e.g. TURNPOLICY_LEFT, COLOR_AUTO) to the values Potrace expects - const { Potrace } = require(`potrace`) - const argsKeys = Object.keys(args) - args = argsKeys.reduce((result, key) => { - const value = args[key] - result[key] = Potrace.hasOwnProperty(value) ? Potrace[value] : value - return result - }, {}) - - const tracedSVG = await traceSVG({ - file: imageNode, - args, - fileArgs: args, - cache, - reporter, - }) - - // Escape single quotes so the SVG data can be used in inline style attribute with single quotes - placeholderImageData = tracedSVG.replace(/'/g, `\\'`) - } - - const ratio = `${(1 / fluidResult.aspectRatio) * 100}%` - - const wrapperStyle = - typeof options.wrapperStyle === `function` - ? options.wrapperStyle(fluidResult) - : options.wrapperStyle - - // Construct new image node w/ aspect ratio placeholder - const imageCaption = options.showCaptions && getImageCaption(node, overWrites) - - let removeBgImage = false - if (options.disableBgImageOnAlpha) { - const imageStats = await stats({ file: imageNode, reporter }) - if (imageStats && imageStats.isTransparent) removeBgImage = true - } - if (options.disableBgImage) { - removeBgImage = true - } - - const bgImage = removeBgImage - ? `` - : ` background-image: url('${placeholderImageData}'); background-size: cover;` - - let rawHTML = ` - <span - class="${imageBackgroundClass}" - style="padding-bottom: ${ratio}; position: relative; bottom: 0; left: 0;${bgImage} display: block;" - ></span> - ${imageTag} - `.trim() - - // Make linking to original image optional. - if (!inLink && options.linkImagesToOriginal) { - rawHTML = ` - <a - class="gatsby-resp-image-link" - href="${originalImg}" - style="display: block" - target="_blank" - rel="noopener" - > - ${rawHTML} - </a> - `.trim() - } - - rawHTML = ` - <span - class="${imageWrapperClass}" - style="position: relative; display: block; margin-left: auto; margin-right: auto; ${ - imageCaption ? `` : wrapperStyle - } max-width: ${presentationWidth}px;" - > - ${rawHTML} - </span> - `.trim() - - // Wrap in figure and use title as caption - if (imageCaption) { - rawHTML = ` - <figure class="gatsby-resp-image-figure" style="${wrapperStyle}"> - ${rawHTML} - <figcaption class="gatsby-resp-image-figcaption">${imageCaption}</figcaption> - </figure> - `.trim() - } - - return rawHTML - } - - return Promise.all( - // Simple because there is no nesting in markdown - markdownImageNodes.map( - ({ node, inLink }) => - new Promise(async (resolve, reject) => { - const overWrites = {} - let refNode - if (!node.hasOwnProperty(`url`) && node.hasOwnProperty(`identifier`)) { - //consider as imageReference node - refNode = node - node = definitions(refNode.identifier) - // pass original alt from referencing node - overWrites.alt = refNode.alt - if (!node) { - // no definition found for image reference, - // so there's nothing for us to do. - return resolve() - } - } - const fileType = getImageInfo(node.url).ext - - // Ignore gifs as we can't process them, - // svgs as they are already responsive by definition - if (isRelativeUrl(node.url) && fileType !== `gif` && fileType !== `svg`) { - const rawHTML = await generateImagesAndUpdateNode(node, resolve, inLink, overWrites) - - if (rawHTML) { - // Replace the image or ref node with an inline HTML node. - if (refNode) { - node = refNode - } - node.type = `html` - node.value = rawHTML - } - return resolve(node) - } else { - // Image isn't relative so there's nothing for us to do. - return resolve() - } - }) - ) - ).then((markdownImageNodes) => - // HTML image node stuff - Promise.all( - // Complex because HTML nodes can contain multiple images - rawHtmlNodes.map( - ({ node, inLink, width }) => - new Promise(async (resolve, reject) => { - if (!node.value) { - return resolve() - } - - const $ = cheerio.load(node.value) - if ($(`img`).length === 0) { - // No img tags - return resolve() - } - - let imageRefs = [] - $(`img`).each(function () { - imageRefs.push($(this)) - }) - - for (let thisImg of imageRefs) { - // Get the details we need. - let formattedImgTag = {} - formattedImgTag.url = thisImg.attr(`src`) - formattedImgTag.title = thisImg.attr(`title`) - formattedImgTag.alt = thisImg.attr(`alt`) - - if (!formattedImgTag.url) { - return resolve() - } - - const fileType = getImageInfo(formattedImgTag.url).ext - - // Ignore gifs as we can't process them, - // svgs as they are already responsive by definition - if (isRelativeUrl(formattedImgTag.url) && fileType !== `gif` && fileType !== `svg`) { - const rawHTML = await generateImagesAndUpdateNode( - formattedImgTag, - resolve, - inLink, - {}, - width - ) - - if (rawHTML) { - // Replace the image string - thisImg.replaceWith(rawHTML) - } else { - return resolve() - } - } - } - - // Replace the image node with an inline HTML node. - node.type = `html` - node.value = $(`body`).html() // fix for cheerio v1 - - return resolve(node) - }) - ) - ).then((htmlImageNodes) => markdownImageNodes.concat(htmlImageNodes).filter((node) => !!node)) - ) -} diff --git a/plugins/gatsby-remark-image-custom/package.json b/plugins/gatsby-remark-image-custom/package.json deleted file mode 100644 index e8e54e0304..0000000000 --- a/plugins/gatsby-remark-image-custom/package.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "name": "@bonobolabs/gatsby-remark-images-custom-widths", - "description": "gatsby-remark-images but with support for custom image widths", - "version": "0.0.7", - "author": "Kyle Mathews <mathews.kyle@gmail.com>", - "contributors": [ - "Alex Louden <alex@louden.com>" - ], - "bugs": { - "url": "https://github.com/Bonobolabs/gatsby-remark-image-custom-widths/issues" - }, - "dependencies": { - "@babel/runtime": "^7.7.2", - "chalk": "^2.4.2", - "cheerio": "^1.0.0-rc.3", - "is-relative-url": "^3.0.0", - "lodash": "^4.17.15", - "mdast-util-definitions": "^1.2.5", - "potrace": "^2.1.2", - "query-string": "^6.8.3", - "slash": "^3.0.0", - "unist-util-select": "^1.5.0", - "unist-util-visit-parents": "^2.1.2" - }, - "devDependencies": { - "@babel/cli": "^7.7.0", - "@babel/core": "^7.7.2", - "babel-preset-gatsby-package": "^0.2.10", - "cross-env": "^5.2.1", - "hast-util-to-html": "^6.0.2", - "mdast-util-to-hast": "^6.0.2" - }, - "homepage": "https://github.com/Bonobolabs/gatsby-remark-image-custom-widths", - "keywords": [ - "gatsby", - "gatsby-plugin", - "image", - "markdown", - "remark", - "responsive images" - ], - "license": "MIT", - "main": "index.js", - "peerDependencies": { - "gatsby": "^4.0.0", - "gatsby-plugin-sharp": "^4.0.0" - }, - "repository": { - "type": "git", - "url": "https://github.com/gatsbyjs/gatsby.git", - "directory": "packages/gatsby-remark-images" - }, - "scripts": { - "build": "babel src --out-dir . --ignore **/__tests__", - "prepare": "cross-env NODE_ENV=production npm run build", - "watch": "babel -w src --out-dir . --ignore **/__tests__" - }, - "engines": { - "node": ">=14.15.0" - } -} diff --git a/plugins/gatsby-remark-to-absoluteurl/gatsby-node.js b/plugins/gatsby-remark-to-absoluteurl/gatsby-node.js deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/plugins/gatsby-remark-to-absoluteurl/index.js b/plugins/gatsby-remark-to-absoluteurl/index.js deleted file mode 100644 index f71d15da96..0000000000 --- a/plugins/gatsby-remark-to-absoluteurl/index.js +++ /dev/null @@ -1,92 +0,0 @@ -var visit = require('unist-util-visit') -const path = require('path') - -function withPathPrefix(url, pathPrefix) { - const prefixed = pathPrefix + url - return prefixed.replace(/\/\//, '/') -} - -const pathSep = '/' -module.exports = function plugin( - { markdownAST, markdownNode, pathPrefix, getNode }, - { redirects = [] } = {} -) { - function visitor(node) { - node.originalUrl = node.url - var pattern = /^https?:\/\//i - node.isDomainUrl = false - - if ( - markdownNode.fields && - markdownNode.fields.slug && - !node.url.startsWith('/') && - !node.url.startsWith('#') && - !node.url.startsWith('mailto:') && - !/^https?:\/\//.test(node.url) - ) { - const parent = getNode(markdownNode.parent) - const newUrl = path - .resolve( - markdownNode.fields.slug - .replace(new RegExp('\\b' + `${pathSep}index` + '\\b'), '') - .replace(/\d{2,}-/g, '') - .replace(/\/$/, '') - .split(pathSep) - .slice(0, parent.name === 'index' ? undefined : -1) - .join(pathSep) || '/', - node.url - ) - .replace(/\/?(\?|$)/, '/$1') - .replace(/\/$/, '') - - if (/^..\\/.test(newUrl)) { - //Code specifically for local run, to fix broken links on - let newUrl2 = path.resolve( - markdownNode.fields.slug.replace(/(\/.+)\/.*/, '$1').replace(/\/\d{2,}-/g, '/'), - node.url - ) - - newUrl2 = newUrl2 - .replace(/\\/g, '/') - .slice(2) - .replace(/(^.*)#.*/, '$1') - - const isRedirectPath = redirects.find((url) => newUrl2.includes(url.from)) - if (isRedirectPath) newUrl2 = isRedirectPath.to - - let hashVal = node.url.match(/#.*/) - if (hashVal) newUrl2 += hashVal[0] - - node.url = newUrl2.replace(/^([^#]*)$/, '$1/') - } else { - const isRedirectPath = redirects.find((url) => newUrl.includes(url.from)) - node.url = withPathPrefix( - isRedirectPath ? newUrl.replace(isRedirectPath.from, isRedirectPath.to) : newUrl, - pathPrefix - ) - } - } - if ( - markdownNode.fields && - markdownNode.fields.slug && - node.url.includes('prisma.io/docs') && - !node.url.includes('https://v1.prisma.io/docs') - ) { - node.isDomainUrl = true - } - - if ( - markdownNode.fields && - markdownNode.fields.slug && - !pattern.test(node.url) && - node.url.endsWith('/') && - node.url !== './' - ) { - node.isTrailingSlashUrl = true - } - } - - visit(markdownAST, 'link', visitor) - - return markdownAST -} diff --git a/plugins/gatsby-remark-to-absoluteurl/package.json b/plugins/gatsby-remark-to-absoluteurl/package.json deleted file mode 100644 index bae6744889..0000000000 --- a/plugins/gatsby-remark-to-absoluteurl/package.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "gatsby-remark-to-absoluteurl", - "version": "1.0.0", - "description": "Relative to absolute url", - "main": "index.js", - "author": "Nilufar Bava <nilubava@gmail.com>", - "license": "ISC", - "keywords": [ - "gatsby", - "gatsby-plugin" - ] -} diff --git a/prisma/migrations/20201216150604_init/migration.sql b/prisma/migrations/20201216150604_init/migration.sql deleted file mode 100644 index 15bd31bfe7..0000000000 --- a/prisma/migrations/20201216150604_init/migration.sql +++ /dev/null @@ -1,14 +0,0 @@ --- CreateEnum -CREATE TYPE "public"."Sentiment" AS ENUM ('Happy', 'Unhappy'); - --- CreateTable -CREATE TABLE "Feedback" ( -"id" SERIAL, - "pageUrl" TEXT NOT NULL, - "userAgent" TEXT NOT NULL, - "ip" TEXT NOT NULL, - "sentiment" "Sentiment" NOT NULL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - - PRIMARY KEY ("id") -); diff --git a/prisma/migrations/20201216150920_add_feedback_text/migration.sql b/prisma/migrations/20201216150920_add_feedback_text/migration.sql deleted file mode 100644 index 819cea5f50..0000000000 --- a/prisma/migrations/20201216150920_add_feedback_text/migration.sql +++ /dev/null @@ -1,4 +0,0 @@ --- AlterTable -ALTER TABLE "Feedback" ADD COLUMN "feedback" TEXT, -ALTER COLUMN "userAgent" DROP NOT NULL, -ALTER COLUMN "ip" DROP NOT NULL; diff --git a/prisma/schema.prisma b/prisma/schema.prisma deleted file mode 100644 index c0831ce96a..0000000000 --- a/prisma/schema.prisma +++ /dev/null @@ -1,24 +0,0 @@ -datasource db { - provider = "postgresql" - url = env("POSTGRES_URL") -} - -generator client { - provider = "prisma-client-js" - binaryTargets = ["native", "rhel-openssl-1.0.x"] -} - -model Feedback { - id Int @id @default(autoincrement()) - pageUrl String - userAgent String? - ip String? - sentiment Sentiment - feedback String? - createdAt DateTime @default(now()) -} - -enum Sentiment { - Happy - Unhappy -} diff --git a/pull_request_template.md b/pull_request_template.md deleted file mode 100644 index c8cc5697cf..0000000000 --- a/pull_request_template.md +++ /dev/null @@ -1,20 +0,0 @@ -## Describe this PR - -<!-- Please describe the issue, problem or reason for the PR... A little context helps us scan the PR first, without having to dive into the code --> - -## Changes - -<!-- What changes have you made? Keep it brief! - -- Refactored example to include new database field -- ... --> - -## What issue does this fix? - -<!-- Link the issue this is solving, if applicable, using the issue number. This can be found to the right of the issue title, or in the url. - -Fixes #1234 --> - -## Any other relevant information - -<!-- Add any other information you deem to be relevant to the PR --> diff --git a/renovate.json b/renovate.json deleted file mode 100644 index 2826308d37..0000000000 --- a/renovate.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "$schema": "https://docs.renovatebot.com/renovate-schema.json", - "extends": ["config:base"], - "schedule": ["before 8am on the first day of the month"], - "ignoreDeps": ["gatsby-plugin-algolia"], - "dependencyDashboard": true -} diff --git a/schema.sql b/schema.sql deleted file mode 100644 index 2ef007b9e4..0000000000 --- a/schema.sql +++ /dev/null @@ -1,22 +0,0 @@ -CREATE TABLE "public"."User" ( - id SERIAL PRIMARY KEY NOT NULL, - name VARCHAR(255), - email VARCHAR(255) UNIQUE NOT NULL -); - -CREATE TABLE "public"."Post" ( - id SERIAL PRIMARY KEY NOT NULL, - title VARCHAR(255) NOT NULL, - "createdAt" TIMESTAMP NOT NULL DEFAULT now(), - content TEXT, - published BOOLEAN NOT NULL DEFAULT false, - "authorId" INTEGER NOT NULL, - FOREIGN KEY ("authorId") REFERENCES "public"."User"(id) -); - -CREATE TABLE "public"."Profile" ( - id SERIAL PRIMARY KEY NOT NULL, - bio TEXT, - "userId" INTEGER UNIQUE NOT NULL, - FOREIGN KEY ("userId") REFERENCES "public"."User"(id) -); \ No newline at end of file diff --git a/scripts/build b/scripts/build deleted file mode 100755 index e94677e8e0..0000000000 --- a/scripts/build +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env bash -find ./ -type f -name 'production-app.js' -exec sed -i 's#pagePath &&#& pagePath != "/" \&\&#g' {} \; && npm run install-algolia && gatsby build --prefix-paths diff --git a/scripts/redirect-transformer.js b/scripts/redirect-transformer.js deleted file mode 100644 index 2629cf783e..0000000000 --- a/scripts/redirect-transformer.js +++ /dev/null @@ -1,51 +0,0 @@ -const fs = require('fs') -const { join, extname } = require('path') -const remark = require('remark') -const mdx = require('remark-mdx') -var visit = require('unist-util-visit') -var vercelSettings = require('../vercel.json') - -function* walkSync(dir) { - const files = fs.readdirSync(dir, { withFileTypes: true }) - for (const file of files) { - if (file.isDirectory()) { - yield* walkSync(join(dir, file.name)) - } else { - yield join(dir, file.name) - } - } -} - -const isDirectMatch = (url, source) => - (url.includes('#') ? url.split('#')[0] : url) === source.replace('/docs', '') -const isSourcePartofUrl = (url, source) => - source.includes(':/any*') && ('/docs' + url).includes(source.replace('/:any*', '')) - -for (const filePath of walkSync(`${__dirname}/../content`)) { - if (extname(filePath) === '.mdx') { - const file = fs.readFileSync(filePath, 'utf8') - const contents = remark().use(mdx).parse(file) - visit(contents, 'link', function visitor(node) { - if ( - node.url && - !/^https?:\/\//.test(node.url) && - vercelSettings && - vercelSettings.redirects && - vercelSettings.redirects.some( - (r) => isDirectMatch(node.url, r.source) || isSourcePartofUrl(node.url, r.source) - ) - ) { - const redirectItem = vercelSettings.redirects.filter((r) => - isDirectMatch(node.url, r.source) - ) - const transformedSrc = redirectItem[0].source.replace('/docs', '').replace('/:any*', '') - var regex = new RegExp(transformedSrc, 'g') - const newMdx = file.replace( - regex, - redirectItem[0].destination.replace('/docs', '').replace('/:any*', '') - ) - fs.writeFileSync(filePath, newMdx) - } - }) - } -} diff --git a/sidebars.ts b/sidebars.ts new file mode 100644 index 0000000000..b624423f0a --- /dev/null +++ b/sidebars.ts @@ -0,0 +1,324 @@ +import type { SidebarsConfig } from '@docusaurus/plugin-content-docs'; + +// workaround suggested by Docusaurus team: https://github.com/facebook/docusaurus/issues/9902#issuecomment-1972125804 +type SidebarConfig = SidebarsConfig[string]; +type OnlyArray<Type> = Type extends unknown[] ? Type : never; +type SidebarItemConfigArray = OnlyArray<SidebarConfig>; +type SidebarItemConfig = SidebarItemConfigArray[number]; + +const platformCategory: SidebarItemConfig = { + type: 'category', + label: 'Platform', + collapsed: false, + collapsible: false, + link: { + type: 'doc', + id: 'platform/index', + }, + className: "firstTitle", + items: [{ type: 'autogenerated', dirName: '500-platform' }], +}; + +/** + * Creating a sidebar enables you to: + - create an ordered group of docs + - render a sidebar for each doc of that group + - provide next/previous navigation + + The sidebars can be generated from the filesystem, or explicitly defined here. + + Create as many sidebars as you want. + */ +const sidebars: SidebarsConfig = { + // By default, Docusaurus generates a sidebar from the docs folder structure + gettingStarted: [ + { + type: 'category', + collapsed: false, + collapsible: false, + label: 'Get Started', + link: { + type: 'doc', + id: 'getting-started/index', + }, + className: "firstTitle", + items: [ + 'getting-started/index', + { + type: 'doc', + id: 'getting-started/quickstart', + label: 'Quickstart', + }, + { + type: 'category', + label: 'Set up Prisma ORM', + collapsed: false, + collapsible: false, + link: { + type: 'doc', + id: 'getting-started/setup-prisma/index', + }, + items: [ + { + type: 'category', + label: 'Start from scratch', + link: { + type: 'doc', + id: 'getting-started/setup-prisma/start-from-scratch/index', + }, + items: [ + { + type: 'category', + label: 'Relational databases', + customProps: { + badge: '15 Min' + }, + link: { + type: 'doc', + id: 'getting-started/setup-prisma/start-from-scratch/relational-databases-typescript-postgresql', + }, + items: [ + { + type: 'doc', + id: 'getting-started/setup-prisma/start-from-scratch/relational-databases-typescript-postgresql', + className: 'hidden-sidebar' + }, + { + type: 'doc', + id: 'getting-started/setup-prisma/start-from-scratch/relational-databases-typescript-mysql', + className: 'hidden-sidebar' + }, + { + type: 'doc', + id: 'getting-started/setup-prisma/start-from-scratch/relational-databases-typescript-planetscale', + className: 'hidden-sidebar' + }, + { + type: 'doc', + id: 'getting-started/setup-prisma/start-from-scratch/relational-databases-typescript-sqlserver', + className: 'hidden-sidebar' + }, + { + type: 'doc', + id: 'getting-started/setup-prisma/start-from-scratch/relational-databases-typescript-cockroachdb', + className: 'hidden-sidebar' + }, + { + type: 'doc', + id: 'getting-started/setup-prisma/start-from-scratch/relational-databases-node-postgresql', + className: 'hidden-sidebar' + }, + { + type: 'doc', + id: 'getting-started/setup-prisma/start-from-scratch/relational-databases-node-mysql', + className: 'hidden-sidebar' + }, + { + type: 'doc', + id: 'getting-started/setup-prisma/start-from-scratch/relational-databases-node-planetscale', + className: 'hidden-sidebar' + }, + { + type: 'doc', + id: 'getting-started/setup-prisma/start-from-scratch/relational-databases-node-sqlserver', + className: 'hidden-sidebar' + }, + { + type: 'doc', + id: 'getting-started/setup-prisma/start-from-scratch/relational-databases-node-cockroachdb', + className: 'hidden-sidebar' + }, + { + type: 'autogenerated', + dirName: '100-getting-started/02-setup-prisma/100-start-from-scratch/110-relational-databases', + } + ] + }, + { + type: 'category', + label: 'MongoDB', + customProps: { + badge: '15 Min' + }, + link: { + type: 'doc', + id: 'getting-started/setup-prisma/start-from-scratch/mongodb-typescript-mongodb', + }, + items: [ + { + type: 'doc', + id: 'getting-started/setup-prisma/start-from-scratch/mongodb-node-mongodb', + className: "hidden-sidebar" + }, + { + type: 'doc', + id: 'getting-started/setup-prisma/start-from-scratch/mongodb-typescript-mongodb', + className: "hidden-sidebar" + }, + { + type: 'autogenerated', + dirName: '100-getting-started/02-setup-prisma/100-start-from-scratch/120-mongodb', + } + ] + } + ] + }, + { + type: 'category', + label: "Add to existing project", + link: { + type: 'doc', + id: 'getting-started/setup-prisma/add-to-existing-project/index', + }, + items: [ + { + type: 'category', + label: 'Relational databases', + customProps: { + badge: '15 Min' + }, + link: { + type: 'doc', + id: 'getting-started/setup-prisma/add-to-existing-project/relational-databases-typescript-postgresql', + }, + items: [ + { + type: 'doc', + id: 'getting-started/setup-prisma/add-to-existing-project/relational-databases-typescript-postgresql', + className: 'hidden-sidebar' + }, + { + type: 'doc', + id: 'getting-started/setup-prisma/add-to-existing-project/relational-databases-typescript-mysql', + className: 'hidden-sidebar' + }, + { + type: 'doc', + id: 'getting-started/setup-prisma/add-to-existing-project/relational-databases-typescript-planetscale', + className: 'hidden-sidebar' + }, + { + type: 'doc', + id: 'getting-started/setup-prisma/add-to-existing-project/relational-databases-typescript-sqlserver', + className: 'hidden-sidebar' + }, + { + type: 'doc', + id: 'getting-started/setup-prisma/add-to-existing-project/relational-databases-typescript-cockroachdb', + className: 'hidden-sidebar' + }, + { + type: 'doc', + id: 'getting-started/setup-prisma/add-to-existing-project/relational-databases-node-postgresql', + className: 'hidden-sidebar' + }, + { + type: 'doc', + id: 'getting-started/setup-prisma/add-to-existing-project/relational-databases-node-mysql', + className: 'hidden-sidebar' + }, + { + type: 'doc', + id: 'getting-started/setup-prisma/add-to-existing-project/relational-databases-node-planetscale', + className: 'hidden-sidebar' + }, + { + type: 'doc', + id: 'getting-started/setup-prisma/add-to-existing-project/relational-databases-node-sqlserver', + className: 'hidden-sidebar' + }, + { + type: 'doc', + id: 'getting-started/setup-prisma/add-to-existing-project/relational-databases-node-cockroachdb', + className: 'hidden-sidebar' + }, + { + type: 'autogenerated', + dirName: '100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases', + } + ] + }, + { + type: 'category', + label: 'MongoDB', + customProps: { + badge: '15 Min' + }, + link: { + type: 'doc', + id: 'getting-started/setup-prisma/add-to-existing-project/mongodb-typescript-mongodb', + }, + items: [ + { + type: 'doc', + id: 'getting-started/setup-prisma/add-to-existing-project/mongodb-node-mongodb', + className: "hidden-sidebar" + }, + { + type: 'doc', + id: 'getting-started/setup-prisma/add-to-existing-project/mongodb-typescript-mongodb', + className: "hidden-sidebar" + }, + { + type: 'autogenerated', + dirName: '100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb', + }] + } + ] + },] + } + ] + } + ], + ormSidebar: [{ + type: 'category', + label: 'ORM', + collapsed: false, + collapsible: false, + link: { + type: 'doc', + id: 'orm/orm-index' + }, + className: 'firstTitle', + items: [{ type: 'autogenerated', dirName: '200-orm' }], + }], + accelerateSidebar: [ + { + type: 'category', + label: 'Accelerate', + collapsed: false, + collapsible: false, + link: { + type: 'doc', + id: 'accelerate/index' + }, + className: 'firstTitle', + items: [{ type: 'autogenerated', dirName: '300-accelerate' }] + }, + platformCategory, + ], + pulseSidebar: [ + { + type: 'category', + label: 'Pulse', + collapsible: false, + collapsed: false, + link: { + type: 'doc', + id: 'pulse/index' + }, + className: 'firstTitle', + items: [{ type: 'autogenerated', dirName: '400-pulse' }] + }, + platformCategory, + ], + platformSidebar: [ + platformCategory, + ], + aboutSidebar: [{ + type: 'autogenerated', + dirName: '600-about' + }], +}; + +export default sidebars; diff --git a/src/components/shortcodes/gettingstarted.tsx b/src/components/GettingStarted/index.tsx similarity index 51% rename from src/components/shortcodes/gettingstarted.tsx rename to src/components/GettingStarted/index.tsx index c6c1fd3810..5cee2ba128 100644 --- a/src/components/shortcodes/gettingstarted.tsx +++ b/src/components/GettingStarted/index.tsx @@ -1,8 +1,8 @@ import React, { useRef, useState } from 'react' -import styled from 'styled-components' -import { defaultTheme } from '../../theme' import { Icon } from '../Icon' import { Tooltip } from '../tooltip/Tooltip' +import styles from "../../css/gettingStarted.module.scss" +import Link from '@docusaurus/Link' export const Database = ({ color, width, height }: any) => ( <svg @@ -49,153 +49,45 @@ export const SignalStream = ({ color, height, width }: any) => ( </svg> ) -export const BorderBoxWrapper = styled.div<{ border: boolean }>` - padding: 24px 24px 32px 24px; - border-radius: 8px; - background: var(--main-bgd-color); - > * { - font-family: Inter; - text-align: left; - letter-spacing: 0em; - line-height: 20px; - font-size: 14px; - :first-child { - margin-top: 0; - } - :last-child { - margin-bottom: 0; - } - } -` +export const BorderBoxWrapper = ({children, ...props}) => <div {...props} className={styles.borderBox}>{children}</div> -export const BoxTitle = styled.h1<{}>` - font-family: Barlow, system-ui, Arial, sans-serif; - font-style: normal; - font-weight: bold; - font-size: 2.5rem !important; - line-height: 48px; - letter-spacing: -0.8px; -` +export const BoxTitle = ({children, ...props}) => <h1 {...props} className={styles.boxTitle}>{children}</h1> export const BorderBox = ({ border, ...props }: any) => ( <BorderBoxWrapper {...props}>{props.children}</BorderBoxWrapper> ) -const LinkCardWrapper = styled.a` - border: 1px solid var(--border-color); - padding: 20px 24px; - border-radius: 8px; - color: var(--main-font-color); - transition: all 300ms ease-out; - display: flex; - flex-direction: column; - text-decoration: none; - &:hover { - background: var(--main-bgd-color); - border-color: #5a67d8; - } - .title { - display: inline-block; - h6 { - font-size: 18px; - display: inline-block; - margin: 0; - font-family: Barlow; - font-weight: 600; - line-height: 24px; - letter-spacing: 0px; - text-align: left; - } - } - p { - font-family: Inter; - font-size: 14px; - font-weight: 400; - line-height: 20px; - letter-spacing: 0em; - margin-bottom: 0; - text-align: left; - } -` - -export const Grid = styled.div` - gap: 16px; - display: grid; - margin-top: 24px; - grid-template-columns: none; - @media (min-width: 600px) { - grid-template-columns: 1fr 1fr; - } -` +export const Grid = ({children, ...props}) => <div {...props} className={styles.grid}>{children}</div> export const LinkCard = ({ icon, title, desc, link }: any) => { const linkCardRef = useRef(null) return ( - <LinkCardWrapper href={link} ref={linkCardRef}> - <div className="title"> + <Link to={link} ref={linkCardRef} className={styles.linkCardWrapper}> + <div className={styles.title}> <Icon icon={icon} btn="left" size="18px" /> <h6>{title}</h6> </div> <p>{desc}</p> - </LinkCardWrapper> + </Link> ) } -export const Tab = styled.div` - padding: 15px; - background-color: var(--main-bgd-color); - border: 1px solid ${defaultTheme.colors.indigo[600]}; - border-radius: 0px 8px 8px 8px; - font-family: Inter; - font-size: 14px; - font-weight: 400; - line-height: 20px; - letter-spacing: 0em; - text-align: left; - p { - margin-top: 0; - } -` - -const SquareWrapper = styled.a` - width: 90px; - height: 90px; - text-decoration: none; - padding: 22px; - display: inline-block; - border: 1px solid var(--border-color); - background: var(--header-bg-color); - border-radius: 8px; - transition: all 300ms ease-out; - cursor: pointer; - &:hover { - background: var(--main-bgd-color); - border-color: ${defaultTheme.colors.indigo[600]}; - } - &:active, - &:focus { - background: var(--code-inline-bgd-color); - border-color: ${defaultTheme.colors.indigo[700]}; - } - svg { - width: 100%; - height: 100%; - } -` +export const Tab = ({children, ...props}) => <div {...props} className={styles.tab}>{children}</div> export const SquareLogo = ({ image, tech, url }: any) => { const squareCardRef = useRef(null) const [visibleTooltip, setVisibleTooltip] = useState<boolean>(false) return ( <> - <SquareWrapper - href={url} + <Link + className={styles.squareWrapper} + to={url} ref={squareCardRef} onMouseMove={() => setVisibleTooltip(true)} onMouseLeave={() => setVisibleTooltip(false)} > - {image} - </SquareWrapper> + <img src={image} /> + </Link> {visibleTooltip && ( <Tooltip target={squareCardRef} position="top"> {tech} @@ -205,21 +97,4 @@ export const SquareLogo = ({ image, tech, url }: any) => { ) } -export const List = styled.div` - display: grid; - gap: 12px; - justify-content: space-between; - grid-template-columns: repeat(3, auto); - @media (min-width: 1240px) { - grid-template-columns: repeat(6, auto); - } - @media (min-width: 1025px) and (max-width: 1240px) { - grid-template-columns: repeat(3, auto); - } - @media (min-width: 768px) and (max-width: 1025px) { - grid-template-columns: repeat(6, auto); - } - @media (min-width: 480px) and (max-width: 768px) { - grid-template-columns: repeat(4, auto); - } -` +export const List = ({children, ...props}) => <div {...props} className={styles.list}>{children}</div> diff --git a/src/components/Icon.tsx b/src/components/Icon.tsx index 8d1ca0c8bd..8c5b72e698 100644 --- a/src/components/Icon.tsx +++ b/src/components/Icon.tsx @@ -45,4 +45,4 @@ export const Icon = ({ icon, color, className, size, btn, fit }: IconProps) => { }} ></i> ) -} +} \ No newline at end of file diff --git a/src/components/WebProvider.tsx b/src/components/WebProvider.tsx deleted file mode 100644 index f8bbfb8137..0000000000 --- a/src/components/WebProvider.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react' - -import '../styles/all.css' -import 'normalize.css' - -type Props = React.PropsWithChildren<{}> - -export function WebProvider({ children }: Props) { - return <>{children}</> -} diff --git a/src/components/button/buttons.ts b/src/components/button/buttons.ts deleted file mode 100644 index 0a3ef4d00e..0000000000 --- a/src/components/button/buttons.ts +++ /dev/null @@ -1,210 +0,0 @@ -import * as t from '../../theme/primitives' - -const buttonDefault = { - transition: 'background-color .1s ease, color .2s ease', - backgroundColor: 'transparent', // t.gray['500'] - color: t.colors.text, - fontFamily: t.fonts.text, - fontWeight: 500, - hover: { - backgroundColor: 'transparent', // t.gray['600'] - }, -} - -export const buttonsDefault = { - primary: { - ...buttonDefault, - color: 'white', - backgroundColor: t.indigo[600], - border: `1px solid ${t.indigo[600]}`, - hover: { - border: `1px solid ${t.indigo[700]}`, - backgroundColor: t.indigo[700], - borderColor: t.indigo[700], - color: 'white', - }, - active: { - border: `1px solid ${t.indigo[800]}`, - backgroundColor: t.indigo[800], - color: 'white', - }, - indigo: { - backgroundColor: t.indigo[600], - color: 'white', - border: `1px solid ${t.indigo[600]}`, - hover: { - border: `1px solid ${t.indigo[700]}`, - borderColor: t.indigo[700], - backgroundColor: t.indigo[700], - color: 'white', - }, - active: { - border: `1px solid ${t.indigo[800]}`, - backgroundColor: t.indigo[800], - color: 'white', - }, - }, - teal: { - backgroundColor: t.teal[600], - color: 'white', - border: `1px solid ${t.teal[600]}`, - hover: { - border: `1px solid ${t.teal[700]}`, - backgroundColor: t.teal[700], - borderColor: t.teal[700], - color: 'white', - }, - active: { - border: `1px solid ${t.teal[800]}`, - backgroundColor: t.teal[800], - color: 'white', - }, - }, - white: { - backgroundColor: 'white', - color: t.indigo[600], - border: `1px solid white`, - hover: { - border: `1px solid white`, - backgroundColor: 'white', - borderColor: t.indigo[700], - color: t.indigo[700], - }, - active: { - border: `1px solid white`, - backgroundColor: 'white', - color: t.indigo[800], - }, - }, - }, - - secondary: { - ...buttonDefault, - color: t.indigo[600], - border: `1px solid ${t.indigo[600]}`, - hover: { - backgroundColor: 'white', - color: t.indigo[700], - borderColor: t.indigo[700], - border: `1px solid ${t.indigo[700]}`, - }, - active: { - backgroundColor: 'white', - color: t.indigo[800], - border: `1px solid ${t.indigo[800]}`, - }, - indigo: { - backgroundColor: 'white', - color: t.indigo[600], - border: `1px solid ${t.indigo[600]}`, - hover: { - backgroundColor: 'white', - border: `1px solid ${t.indigo[700]}`, - borderColor: t.indigo[700], - color: t.indigo[700], - }, - active: { - backgroundColor: 'white', - border: `1px solid ${t.indigo[800]}`, - color: t.indigo[800], - }, - }, - teal: { - backgroundColor: 'white', - color: t.teal[600], - border: `1px solid ${t.teal[600]}`, - hover: { - border: `1px solid ${t.teal[700]}`, - backgroundColor: 'white', - borderColor: t.teal[700], - color: t.teal[700], - }, - active: { - border: `1px solid ${t.teal[800]}`, - backgroundColor: 'white', - color: t.teal[800], - }, - }, - white: { - backgroundColor: 'white', - color: t.indigo[600], - border: `1px solid ${t.indigo[600]}`, - hover: { - backgroundColor: 'white', - border: `1px solid ${t.indigo[700]}`, - borderColor: t.indigo[700], - color: t.indigo[700], - }, - active: { - backgroundColor: 'white', - border: `1px solid ${t.indigo[800]}`, - color: t.indigo[800], - }, - }, - }, - - link: { - ...buttonDefault, - backgroundColor: 'transparent', - color: t.indigo[600], - border: 'none', - hover: { - backgroundColor: 'transparent', - color: t.indigo[800], - borderColor: t.indigo[800], - border: 'none', - }, - active: { - backgroundColor: 'transparent', - color: t.indigo[800], - border: 'none', - }, - indigo: { - backgroundColor: 'transparent', - color: t.indigo[600], - border: 'none', - hover: { - backgroundColor: 'transparent', - color: t.indigo[800], - borderColor: t.indigo[800], - border: 'none', - }, - active: { - backgroundColor: 'transparent', - color: t.indigo[800], - border: 'none', - }, - }, - teal: { - backgroundColor: 'transparent', - color: t.teal[600], - border: 'none', - hover: { - backgroundColor: 'transparent', - color: t.teal[800], - borderColor: t.teal[800], - border: 'none', - }, - active: { - backgroundColor: 'transparent', - color: t.teal[800], - border: 'none', - }, - }, - white: { - backgroundColor: 'transparent', - border: 'none', - color: t.indigo[600], - hover: { - backgroundColor: 'transparent', - color: t.indigo[800], - border: 'none', - }, - active: { - backgroundColor: 'transparent', - color: t.indigo[800], - border: 'none', - }, - }, - }, -} diff --git a/src/components/button/index.tsx b/src/components/button/index.tsx deleted file mode 100644 index 27e44fa578..0000000000 --- a/src/components/button/index.tsx +++ /dev/null @@ -1,123 +0,0 @@ -// @ts-nocheck -import React, { AnchorHTMLAttributes, HTMLAttributes } from 'react' -import styled from 'styled-components' - -import { buttonCss } from '../../theme/css/button' - -type ColorType = 'indigo' | 'teal' | 'white' | undefined -type BtnType = 'primary' | 'secondary' | 'link' | undefined - -export type ButtonProps = HTMLAttributes<HTMLButtonElement> & - AnchorHTMLAttributes<HTMLAnchorElement> & { - type?: BtnType - color?: ColorType - icon?: undefined | 'left' | 'right' - disabled?: boolean - transparent?: boolean - external?: boolean - href?: string - } - -const StyledLink = styled.a` - ${(props) => buttonCss(props.type, props.color, props.icon, props.disabled, props.transparent)} -` -const StyledBtn = styled.button` - ${(props) => buttonCss(props.type, props.color, props.icon, props.disabled, props.transparent)} -` -const StyledIcon = styled.svg` - fill: currentColor; - color: inherit; - transition: transform 0.2s ease; - position: absolute; - top: 50%; - transform: translateY(-50%); - path { - transition: left, right 0.2s ease; - fill: inherit; - } - ${(props) => - props.type !== 'link' - ? props.icon === 'left' - ? ` - left: 16px; - ` - : ` - right: 16px; - ` - : props.icon === 'left' - ? ` - left: -10px; -` - : ` - right: -6px; -`} -` - -export const Button = ({ - type = 'primary', - color = 'indigo', - icon = undefined, - disabled = false, - href = undefined, - external = false, - ...rest -}: ButtonProps) => { - return href ? ( - <StyledLink - href={href} - type={type} - color={color} - icon={icon} - disabled={disabled} - {...(external && { - target: '_blank', - rel: 'noopener noreferrer', - })} - {...rest} - > - {rest.children} - {(type === 'link' || icon) && ( - <StyledIcon - className="btn-arrow" - xmlns="http://www.w3.org/2000/svg" - width={external ? `10` : `12`} - viewBox={`0 0 ${external ? `320 512` : `448 512`}`} - disabled={disabled} - external={external} - icon={icon} - type={type} - color={color} - > - {external ? ( - <path d="M320 128c0-17.7-14.3-32-32-32L64 96c-17.7 0-32 14.3-32 32s14.3 32 32 32l146.7 0L9.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L256 205.3 256 352c0 17.7 14.3 32 32 32s32-14.3 32-32l0-224z" /> - ) : ( - <path d="M438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.8 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l306.7 0L233.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z" /> - )} - </StyledIcon> - )} - </StyledLink> - ) : ( - <StyledBtn href={href} type={type} color={color} icon={icon} disabled={disabled} {...rest}> - {rest.children} - {(type === 'link' || icon) && ( - <StyledIcon - className="btn-arrow" - xmlns="http://www.w3.org/2000/svg" - width={external ? `9` : `12`} - viewBox={`0 0 ${external ? `320 512` : `448 512`}`} - disabled={disabled} - external={external} - icon={icon} - type={type} - color={color} - > - {external ? ( - <path d="M320 128c0-17.7-14.3-32-32-32L64 96c-17.7 0-32 14.3-32 32s14.3 32 32 32l146.7 0L9.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L256 205.3 256 352c0 17.7 14.3 32 32 32s32-14.3 32-32l0-224z" /> - ) : ( - <path d="M438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.8 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l306.7 0L233.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z" /> - )} - </StyledIcon> - )} - </StyledBtn> - ) -} diff --git a/src/components/collapsible.tsx b/src/components/collapsible.tsx new file mode 100644 index 0000000000..9b6b5ba5ca --- /dev/null +++ b/src/components/collapsible.tsx @@ -0,0 +1,26 @@ +import * as React from 'react' +import styles from "../css/collapsible.module.scss" + +type CollapseProps = React.ReactNode +let index = 0 + +const getRemainingChildren = (children: any) => + children.filter((child: any) => !(child.props && child.props.originalType === 'summary')) + +//@ts-ignore +const CollapseBox = ({ children, ...props }: CollapseProps) => { + const titleChild = + children && children.find((child: any) => child.props && child.props.originalType === 'summary') + const title = titleChild && titleChild.props.children + return ( + <div className={styles.wrapper} {...props}> + <div className={styles.tab}> + <input className={styles.input} id={`tab-${++index}`} type="checkbox" name="tab" /> + <label className={styles.label} htmlFor={`tab-${index}`}>{title}</label> + <div className={styles.tabContent}>{getRemainingChildren(children)}</div> + </div> + </div> + ) +} + +export default CollapseBox \ No newline at end of file diff --git a/src/components/customLink.tsx b/src/components/customLink.tsx deleted file mode 100644 index 7257ad8ead..0000000000 --- a/src/components/customLink.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import * as React from 'react' -import styled from 'styled-components' - -const CustomButton = styled.button<{ mdx?: string }>` - background: transparent; - border: none; - padding: 0; - cursor: pointer; - - ${(props) => - props.mdx && - ` - color: var(--link-color); - cursor: pointer; - text-decoration: underline; - `}; -` - -const CustomLink = ({ href, mdx, ...props }: any) => { - const goToPath = () => { - window.open( - href, - href.includes('prisma.io') && !href.includes('slack.prisma.io') ? '_self' : '_blank', - href.includes('prisma.io') ? '' : 'noopener' - ) - } - return ( - <CustomButton onClick={goToPath} {...props} mdx={mdx}> - {props.children} - </CustomButton> - ) -} - -export default CustomLink diff --git a/src/components/footer.tsx b/src/components/footer.tsx deleted file mode 100644 index a17a6946a7..0000000000 --- a/src/components/footer.tsx +++ /dev/null @@ -1,529 +0,0 @@ -import * as React from 'react' -import { AnchorHTMLAttributes } from 'react' -import styled, { css } from 'styled-components' - -import { darkTheme, defaultTheme as theme } from '../theme' -import { Icon } from './Icon' -import { FooterNewsletterForm } from './newsletter/FooterNewsletterForm' -import CustomLink from './customLink' - -const FooterWrapper = styled.div` - background: transparent; - width: 100%; - display: flex; - justify-content: center; - color: ${theme.colors.gray[500]}; - > div { - width: 100%; - } - @media (prefers-color-scheme: dark) { - form { - i { - color: ${theme.colors.gray[300]} !important; - } - .input-el { - background: ${theme.colors.gray[800]} !important; - border-color: ${theme.colors.gray[700]} !important; - color: ${theme.colors.gray[100]} !important; - &::placeholder { - color: ${theme.colors.gray[300]}; - } - } - } - } -` - -type ColorType = 'indigo' | 'teal' | 'white' | undefined - -export const Container = styled.div` - box-sizing: border-box; - margin: auto; - width: 100%; - padding: 0 2rem; - @media only screen and (min-width: 940px) { - padding: 0 1.5rem; - max-width: 1248px; // 1200 plus 2 x padding - } -` - -namespace S { - export const defaultText = (footer: any) => css` - color: ${footer.linkColor}; - font-size: ${footer.linkSize}; - font-weight: 400; - ` - - export const Container = styled.div<{ theme: any }>` - position: absolute; - left: 0; - background-color: ${(props) => props.theme.footer.backgroundColor}; - padding: 72px 0 24px; - width: 100%; - @media only screen and (min-width: 768px) { - padding: 46px 0 100px; - } - ` - - export const Row = styled.div` - font-family: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI'; - @media only screen and (min-width: 940px) { - display: flex; - } - ` - - export const SocialLinksWrapper = styled.div` - display: flex; - justify-content: space-between; - align-items: center; - ` - - export const PrismaLogo = styled.div` - display: flex; - justify-content: center; - flex-direction: column; - .prisma-logo-img { - margin-bottom: ${(props) => props.theme.space[8]}; - } - ` - - export const PrismaDataText = styled.div` - font-family: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI'; - ${(props) => defaultText(props.theme.footer)} - ` - - export const FooterWrapper = styled.div` - display: flex; - font-family: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI'; - flex-direction: column-reverse; - @media only screen and (min-width: ${(props) => props.theme.breakpoints.tabletVertical}px) { - flex-direction: column; - } - ` - - export const NewsletterRow = styled.div` - > h4 { - margin-bottom: 16px; - margin-right: 32px; - } - margin-bottom: 0; - @media only screen and (min-width: ${(props) => props.theme.breakpoints.tabletVertical}px) { - padding: 64px 0; - display: flex; - justify-content: flex-start; - align-items: flex-start; - flex-direction: column; - margin-bottom: 64px; - border-top: 1px solid ${(props) => props.theme.colors.gray[300]}; - border-bottom: 1px solid ${(props) => props.theme.colors.gray[300]}; - } - @media only screen and (min-width: ${(props) => props.theme.breakpoints.tabletHorizontal}px) { - margin-top: 64px; - flex-direction: row; - justify-content: space-between; - align-items: center; - > h4 { - margin-bottom: 0; - } - } - ` - - export const Column = styled.div<{ flex?: number }>` - margin-bottom: 48px; - @media only screen and (min-width: ${(props) => props.theme.footer.mobileBreakpoint}px) { - margin-bottom: 0; - padding: 0 0.5rem; - flex: ${(props) => props.flex || 1}; - } - ` - - export const Title = styled.h4` - text-transform: uppercase; - font-weight: 400; - font-size: ${(props) => props.theme.footer.titleSize}; - color: ${(props) => props.theme.footer.titleColor}; - letter-spacing: 0.08em; - margin-top: 0; - margin-bottom: 1rem; - @media only screen and (min-width: ${(props) => props.theme.footer.mobileBreakpoint}px) { - margin-bottom: 0; - } - ` - - type LinkProps = AnchorHTMLAttributes<HTMLAnchorElement> & { - theme: any - active?: boolean - external?: boolean - color?: ColorType - } - - export const Link = ({ external, theme, color = 'indigo', ...rest }: LinkProps) => { - return ( - <StyledLink {...rest} color={color} theme={theme} target={external ? '_blank' : '_self'}> - {rest.children} - {external && <Icon color="currentColor" icon={'fa-solid fa-arrow-up-right'} size="1rem" />} - </StyledLink> - ) - } - - const StyledLink = styled(CustomLink)<{ - color?: ColorType - }>( - ({ color = 'indigo' }) => css` - ${(props) => defaultText(props.theme.footer)}; - display: flex; - cursor: pointer; - font-weight: 500; - box-sizing: border-box; - text-decoration: none; - line-height: ${25 / 18}; - padding: 1rem 0; - @media only screen and (min-width: ${(props) => props.theme.footer.mobileBreakpoint}px) { - padding: 0.5rem 0; - } - &:hover { - color: ${(props) => props.theme.footer.linkHoverColor[color]}; - } - > i { - margin: 5px 0 0 3px; - } - > span { - margin-left: 6px; - } - .link-title-label { - display: flex; - align-items: center; - .label { - margin-left: 8px; - background: ${theme.colors[color]['600']}; - border-radius: 99px; - padding: 6px 8px; - font-family: 'Barlow'; - font-style: normal; - font-weight: 700; - font-size: 8px; - line-height: 100%; - white-space: nowrap; - /* identical to box height, or 8px */ - - display: flex; - align-items: center; - letter-spacing: 0.1em; - text-transform: uppercase; - color: white; - } - } - ` - ) - - export const SocialLinksContainer = styled.div<{ - color?: ColorType - theme?: boolean - }>( - ({ color = 'indigo' }) => css` - justify-content: start; - gap: 20px; - display: none; - @media only screen and (min-width: 768px) { - display: flex; - } - a { - font-size: 1.375rem; - color: ${(props) => props.theme.footer.linkColor}; - &:hover { - color: ${(props) => props.theme.footer.linkHoverColor[color]}; - } - } - i { - pointer-events: none; - } - ` - ) -} - -interface FooterProps { - className?: string - color?: ColorType - lightTheme?: boolean - absoluteLinks?: boolean - newsletterComponent?: any -} - -const FooterSec = ({ - className, - lightTheme = false, - absoluteLinks = true, - newsletterComponent, - color = 'indigo', -}: FooterProps) => { - const themeToUse = lightTheme ? theme : darkTheme - const newsletter = newsletterComponent ? ( - newsletterComponent - ) : ( - <FooterNewsletterForm theme={themeToUse} color={color} /> - ) - return ( - <FooterWrapper> - <S.Container theme={themeToUse} className={className}> - <Container> - <S.FooterWrapper theme={themeToUse}> - <S.Row> - <S.Column theme={themeToUse}> - <S.Title theme={themeToUse}>Product</S.Title> - <S.Link - color={color} - theme={themeToUse} - href={`${absoluteLinks ? 'https://www.prisma.io' : ''}/orm`} - > - ORM - </S.Link> - <S.Link - color={color} - theme={themeToUse} - href={`${absoluteLinks ? 'https://www.prisma.io' : ''}/data-platform/accelerate`} - > - <div className="link-title-label">Accelerate</div> - </S.Link> - <S.Link - color={color} - theme={themeToUse} - href={`${absoluteLinks ? 'https://www.prisma.io' : ''}/data-platform/pulse`} - > - <div className="link-title-label">Pulse</div> - </S.Link> - <S.Link - color={color} - theme={themeToUse} - href={`${absoluteLinks ? 'https://www.prisma.io' : ''}/pricing`} - > - Pricing - </S.Link> - </S.Column> - - <S.Column theme={themeToUse}> - <S.Title theme={themeToUse}>Resources</S.Title> - <S.Link - color={color} - theme={themeToUse} - href={`${absoluteLinks ? 'https://www.prisma.io' : ''}/docs`} - > - Docs - </S.Link> - <S.Link - color={color} - theme={themeToUse} - href={`${absoluteLinks ? 'https://www.prisma.io' : ''}/docs/getting-started`} - > - Get started - </S.Link> - <S.Link - color={color} - theme={themeToUse} - href="https://github.com/prisma/prisma-examples" - referrerPolicy="no-referrer" - external={true} - > - prisma-examples - </S.Link> - <S.Link - color={color} - theme={themeToUse} - href={`${absoluteLinks ? 'https://www.prisma.io' : ''}/stack`} - > - Prisma ORM in your stack - </S.Link> - <S.Link - color={color} - theme={themeToUse} - href={`${absoluteLinks ? 'https://www.prisma.io' : ''}/ecosystem`} - > - Ecosystem - </S.Link> - <S.Link - color={color} - theme={themeToUse} - href={`${absoluteLinks ? 'https://www.prisma.io' : ''}/learn`} - > - Tutorials - </S.Link> - <S.Link - color={color} - theme={themeToUse} - href="https://playground.prisma.io/" - referrerPolicy="no-referrer" - external={true} - > - Playground - </S.Link> - <S.Link - color={color} - theme={themeToUse} - href={`${absoluteLinks ? 'https://www.prisma.io' : ''}/showcase`} - > - Customer stories - </S.Link> - <S.Link - color={color} - theme={themeToUse} - href={`${absoluteLinks ? 'https://www.prisma.io' : ''}/dataguide`} - > - Data guide - </S.Link> - <S.Link - color={color} - theme={themeToUse} - referrerPolicy="no-referrer" - href="https://www.prisma-status.com" - external={true} - > - Data Platform status - </S.Link> - <S.Link - color={color} - theme={themeToUse} - referrerPolicy="no-referrer" - href="https://marketplace.visualstudio.com/items?itemName=Prisma.prisma" - external={true} - > - VS Code extension - </S.Link> - </S.Column> - - <S.Column theme={themeToUse}> - <S.Title theme={themeToUse}>Contact us</S.Title> - <S.Link - color={color} - theme={themeToUse} - href={`${absoluteLinks ? 'https://www.prisma.io' : ''}/community`} - > - Community - </S.Link> - <S.Link - color={color} - theme={themeToUse} - href={`${absoluteLinks ? 'https://www.prisma.io' : ''}/support`} - > - Support - </S.Link> - <S.Link - color={color} - theme={themeToUse} - href={`${absoluteLinks ? 'https://www.prisma.io' : ''}/enterprise`} - > - Enterprise - </S.Link> - </S.Column> - - <S.Column theme={themeToUse}> - <S.Title theme={themeToUse}>Company</S.Title> - <S.Link - color={color} - theme={themeToUse} - href={`${absoluteLinks ? 'https://www.prisma.io' : ''}/about`} - > - About - </S.Link> - <S.Link - color={color} - theme={themeToUse} - href={`${absoluteLinks ? 'https://www.prisma.io' : ''}/blog`} - > - Blog - </S.Link> - <S.Link - color={color} - theme={themeToUse} - referrerPolicy="no-referrer" - href="https://www.datadx.io/" - external={true} - > - Data DX - </S.Link> - <S.Link - color={color} - theme={themeToUse} - href={`${absoluteLinks ? 'https://www.prisma.io' : ''}/careers`} - > - Careers{' '} - </S.Link> - <S.Link - color={color} - theme={themeToUse} - href={`${absoluteLinks ? 'https://www.prisma.io' : ''}/events`} - > - Events - </S.Link> - <S.Link - color={color} - theme={themeToUse} - referrerPolicy="no-referrer" - href="https://pris.ly/causes" - external={true} - > - Causes - </S.Link> - <S.Link - color={color} - theme={themeToUse} - href={`${absoluteLinks ? 'https://www.prisma.io' : ''}/oss-friends`} - > - OSS Friends - </S.Link> - <S.Link - color={color} - theme={themeToUse} - referrerPolicy="no-referrer" - external={true} - href="https://pris.ly/privacy" - > - Terms & Privacy - </S.Link> - <S.Link - color={color} - theme={themeToUse} - referrerPolicy="no-referrer" - external={true} - href="https://pris.ly/sla" - > - Service Level Agreement - </S.Link> - </S.Column> - </S.Row> - <S.NewsletterRow theme={themeToUse}> - <S.Title theme={themeToUse}>Newsletter</S.Title> - {newsletter} - </S.NewsletterRow> - </S.FooterWrapper> - <S.SocialLinksWrapper> - <S.PrismaLogo theme={themeToUse}> - <div className="prisma-logo-img"> - <img src={themeToUse.footer.logoUrl} width={90} height={27} alt="prisma_logo" /> - </div> - <S.PrismaDataText theme={themeToUse}> - © {new Date().getFullYear()} Prisma Data, Inc. - </S.PrismaDataText> - </S.PrismaLogo> - <S.SocialLinksContainer theme={themeToUse} color={color}> - <a href="https://discord.gg/KQyTW2H5ca" target="_blank" rel="noopener"> - <Icon color="currentColor" size="inherit" icon={'fa-brands fa-discord'} /> - </a> - <a href="https://twitter.com/prisma" target="_blank" rel="noopener"> - <Icon color="currentColor" size="inherit" icon={'fa-brands fa-x-twitter'} /> - </a> - <a href="https://www.youtube.com/c/PrismaData" target="_blank" rel="noopener"> - <Icon color="currentColor" size="inherit" icon={'fa-brands fa-youtube'} /> - </a> - <a href="https://slack.prisma.io" target="_blank" rel="noopener"> - <Icon color="currentColor" size="inherit" icon={'fa-brands fa-slack'} /> - </a> - <a href="https://github.com/prisma" target="_blank" rel="noopener"> - <Icon size="inherit" icon={'fa-brands fa-github'} color="currentColor" /> - </a> - </S.SocialLinksContainer> - </S.SocialLinksWrapper> - </Container> - </S.Container> - </FooterWrapper> - ) -} - -export default FooterSec diff --git a/src/components/header.tsx b/src/components/header.tsx deleted file mode 100644 index 74502562e7..0000000000 --- a/src/components/header.tsx +++ /dev/null @@ -1,561 +0,0 @@ -import { useLocation } from '@reach/router' -import * as React from 'react' -import styled from 'styled-components' - -import Link from '../components/link' -import Search from '../components/search' -import Sidebar from '../components/sidebar' -import ExternalLink from '../icons/ExternalLink' -import Github from '../icons/Github' -import Logo from '../icons/Logo' -import RightChevron from '../icons/RightChevron' -import UpChevron from '../icons/UpChevron' -import { HeaderProps } from '../interfaces/Layout.interface' -import { defaultTheme as theme } from '../theme' -import { Button } from './button' -import { Icon } from './Icon' -import CustomLink from './customLink' - -type HeaderViewProps = { - headerProps: HeaderProps - wide?: boolean - mobileNavOpen?: any - sidenavSearchOpened?: boolean - homePage?: boolean - closeSidenavSearch?: any - setInputText?: any -} - -const BucketHeader = styled.div<{ wide?: boolean }>` - max-width: ${(props) => (!props.wide ? '1240' : '1440')}px; - width: 100%; - display: flex; - gap: 16px; - justify-content: flex-start; - align-items: center; - - .log-btn { - padding: 6px 16px; - font-size: 16px; - font-weight: 700; - line-height: 22.4px; - - @media (min-width: 0px) and (max-width: 600px) { - display: none; - } - } - - .log-btn-mobile { - font-size: 20px; - line-height: 28px; - padding: 10px; - width: calc(100% - 70px); - margin: 24px 35px 0 35px; - @media (min-width: 600px) { - display: none; - } - } - - > * { - padding: 0; - a { - text-decoration: none; - } - .container { - padding: 0; - } - .menu { - background: transparent; - border: 0; - } - - .list { - z-index: 120; - } - - .menu, - .list { - a { - color: currentcolor !important; - text-decoration: none; - - &:hover { - color: ${theme.colors.white} !important; - } - } - } - } - @media (min-width: 0px) and (max-width: 940px) { - justify-content: space-between; - } -` - -const DocsMobileButton = styled.div` - background: ${theme.colors.white}; - border-radius: ${theme.radii.small}; - color: ${theme.colors.gray[700]}; - display: none; - padding: 0 ${theme.space[14]}; - height: 40px; - margin-left: ${theme.space[8]}; - font-weight: 600; - position: relative; - z-index: 3; - justify-content: space-between; - cursor: pointer; - svg { - margin-left: ${theme.space[8]}; - } - @media (min-width: 0px) and (max-width: 940px) { - display: flex; - align-items: center; - } -` - -const MobileOnlyNav = styled.div` - display: none; - position: fixed; - width: 100%; - z-index: 210; - top: 70px; - transition: top 0.35s; - padding: ${theme.space[16]}; - border-radius: ${theme.radii.small}; - text-align: left; - background: ${theme.colors.gray[800]}; - right: 0; - padding: ${theme.space[32]} ${theme.space[16]}; - @media (min-width: 0px) and (max-width: 940px) { - display: block; - } -` - -const SecondLevelMobileOnlyNav = styled(MobileOnlyNav)` - background: ${theme.colors.gray[100]}; - box-shadow: 0px 1px 0px ${theme.colors.gray[300]}; - top: 80px; - padding: 0; - height: calc(100% - 80px); - z-index: 200; -` - -const HeaderWrapper = styled.div<{ open: boolean }>` - background: var(--header-bg-color); - padding: 0 16px; - display: flex; - justify-content: center; - border-bottom: 1px solid #e2e8f0; - position: relative; - //position: fixed; - z-index: 202; - width: 100%; - @media (min-width: 0px) and (max-width: ${theme.breakpoints.tabletVertical}) { - padding: 12px 16px; - } - @media (min-width: 0px) and (max-width: 940px) { - z-index: 105; - padding: 20px 16px; - ${(p) => p.open && `position: fixed;`} - } - - .dark { - display: none; - } - - .light { - display: block; - } - - @media (prefers-color-scheme: dark) { - border-color: #242c3a; - - .dark { - display: block; - } - - .light { - display: none; - } - } -` - -const NonMobileMenu = styled.div` - display: flex; - align-items: center; - font-size: ${theme.fontSizes[16]}; - a, - button { - padding: 30px 8px; - border-bottom: 2px solid transparent; - &:hover { - border-bottom: 2px solid black; - } - } - @media (min-width: 0px) and (max-width: 940px) { - display: none; - } -` - -const NavLink = styled(Link)<{ wide?: boolean }>` - transition: all 0.1s ease-in; - color: ${theme.colors.gray[400]} !important; - @media (min-width: 0px) and (max-width: ${theme.breakpoints.tabletVertical}) { - margin: 0; - padding: 0; - } -` -const DarkNavLink = styled(NavLink)<{ wide?: boolean; dataPlatform?: boolean }>` - color: ${theme.colors.gray[800]} !important; - font-family: Inter; - font-size: 16px; - font-weight: 600; - line-height: 100%; - font-weight: 600; - text-decoration: none; - white-space: nowrap; - cursor: pointer; - span { - padding: 8px; - border-radius: 8px; - } - &.link { - padding: 0; - margin: 0; - display: flex; - align-items: center; - color: ${theme.colors.gray[600]} !important; - } - - .menu-item { - padding: 32px 30px; - display: flex; - justify-content: space-between; - align-items: center; - border-top: 1px solid ${theme.colors.gray[300]}; - color: ${theme.colors.gray[600]}; - font-weight: 600; - &:hover { - color: ${theme.colors.gray[900]}; - } - } - - &:hover { - //color: ${(props) => theme.colors[props.dataPlatform ? 'teal' : 'indigo'][700]} !important; - border-color: ${(props) => - theme.colors[props.dataPlatform ? 'teal' : 'indigo'][700]} !important; - //background: ${theme.colors.gray[200]}; - } - &.active-item span { - background: ${theme.colors.gray[200]}; - color: ${(props) => theme.colors[props.dataPlatform ? 'teal' : 'indigo'][700]} !important; - } - - @media (min-width: 0px) and (max-width: ${theme.breakpoints.tabletVertical}) { - &.active-item { - background: transparent; - color: ${theme.colors.gray[700]} !important; - padding: 0.25rem 0.5rem; - } - svg { - display: block; - } - } - @media (min-width: ${theme.breakpoints.tabletVertical}) and (max-width: 940px) { - font-size: 14px; - } - - @media (prefers-color-scheme: dark) { - color: var(--main-font-color) !important; - &.active-item span { - background: ${theme.colors.gray[800]}; - color: ${(props) => theme.colors[props.dataPlatform ? 'teal' : 'indigo'][400]} !important; - } - } -` - -const SecondLevelMobileNavLink = styled.div` - padding: ${theme.space[24]}; - display: flex; - justify-content: space-between; - align-items: center; - border-bottom: 1px solid #e2e8f0; - color: #1a202c; - font-weight: 600; - cursor: pointer; - &:hover { - color: ${theme.colors.gray[900]}; - } -` - -const SearchComponentDesktop = styled.div<{ - open?: boolean - homePage?: boolean - sidenavSearchOpened?: boolean - openSearch?: boolean -}>` - position: ${(p) => (p.open ? 'fixed' : 'absolute')}; - top: 80px; - left: 50%; - display: block; - transform: translateX(-50%); - transition: all 50ms ease-out; - padding: 16px; - width: 100%; - z-index: ${(p) => (p.open ? 200 : 101)}; - background: ${(p) => (p.sidenavSearchOpened ? 'transparent' : theme.colors.gray[100])}; - @media (min-width: 1025px) { - position: absolute; - ${(p) => !p.homePage && !p.sidenavSearchOpened && 'display: none;'} - ${(p) => !p.homePage && p.sidenavSearchOpened && 'margin-top: 1rem;'} - } - @media (prefers-color-scheme: dark) { - background: #242c3a; - } -` -const SecondLevelNav = styled.div<{ wide?: boolean }>` - ${(p) => (p.wide ? `padding: 0 2.5rem 0 0;` : `margin-left: 48px;`)} - width: fit-content; - width: 100%; - display: flex; - justify-content: space-between; - @media (min-width: 0px) and (max-width: 940px) { - margin: 92px 0 0 0; - flex-direction: column; - ${(p) => p.wide && `padding: 0;`} - } - > div { - display: flex; - gap: 16px; - align-items: center; - margin-top: 2px; - } -` - -interface MenuItemProps { - componentToShow?: any - type: string - text: string - link?: string - setCheckState?: (arg0: string) => void -} - -const MenuItem = ({ componentToShow, type, text, link }: MenuItemProps) => { - const isCurrent = location && link && location.pathname.includes(link) - const [showExpanded, setShowExpanded] = React.useState(isCurrent) - const toggle = () => setShowExpanded(!showExpanded) - return type === 'bucket' ? ( - <> - <SecondLevelMobileNavLink onClick={toggle}> - {text} - {showExpanded ? <UpChevron /> : <RightChevron />} - </SecondLevelMobileNavLink> - {showExpanded && componentToShow} - </> - ) : ( - <DarkNavLink to={link}> - <div className="menu-item"> - {text} - <ExternalLink /> - </div> - </DarkNavLink> - ) -} - -const SecondLevelMobileMenu = ({ headerProps, wide }: HeaderViewProps) => ( - <SecondLevelNav wide={wide}> - {headerProps.secondLevelHeaderMenuItems.map((item) => { - return ( - !item.hidden && ( - <MenuItem - componentToShow={<Sidebar isMobile={true} slug={item.bucketName} />} - type={item.type} - text={item.text} - link={item.to} - /> - ) - ) - })} - </SecondLevelNav> -) - -const HomeIcons = styled.div` - display: flex; - align-items: center; - button { - color: var(--main-font-color); - transition: transform 0.18s ease-out; - &:hover { - transform: translateY(-2px); - } - &:first-of-type { - svg { - height: 36px; - } - } - &:last-of-type { - //color: #2d3748; - font-family: 'Inter'; - font-size: 22px; - font-style: normal; - font-weight: 500; - padding-left: 22px; - position: relative; - line-height: 100%; - &:before { - position: absolute; - content: '/'; - left: 6px; - color: #a0aec0; - } - } - } -` - -const OverflowContainer = styled.div` - height: 100%; - background: white; - overflow: scroll; -` - -const GithubLink = styled.a` - margin-left: auto; - @media (min-width: 0px) and (max-width: 600px) { - display: none; - } - > svg { - height: 35px; - width: 31px; - } -` - -const Header = ({ - headerProps, - wide, - mobileNavOpen, - homePage, - sidenavSearchOpened, - closeSidenavSearch, - setInputText, -}: HeaderViewProps) => { - const [showMobileNav, setShowMobileNav] = React.useState(false) - const [showDocsBtn, setShowDocsBtn] = React.useState(true) - const changeHitsStatus = (status: boolean) => setShowDocsBtn(!status) - - const toggleMobileNav = () => setShowMobileNav(!showMobileNav) - - const location = useLocation() - - React.useEffect(() => { - mobileNavOpen(showMobileNav) - }, [showMobileNav]) - - const SecondLevelMenu = () => { - const bucketItems = headerProps.secondLevelHeaderMenuItems.filter( - (item) => item.type === 'bucket' && !item.hidden - ) - const externalLinkItems = headerProps.secondLevelHeaderMenuItems.filter( - (item) => item.type === 'external-link' && !item.hidden - ) - - return ( - <SecondLevelNav wide={wide}> - <div> - {bucketItems.map((item) => { - const bucketStringPosition = process.env.NODE_ENV === 'production' ? 2 : 1 - const bucketPath = `/${location.pathname.split('/')[bucketStringPosition]}` - const isCurrent = location && item.to && bucketPath !== '' && item.to === bucketPath - return ( - <DarkNavLink - to={item.to} - state={{ bucketName: item.bucketName }} - activeClassName="active-item" - dataPlatform={ - item.to.includes('/accelerate') || - item.to.includes('/pulse') || - item.to.includes('/platform') - } - className={isCurrent ? 'active-item' : 'non-active'} - > - <span>{item.text}</span> - </DarkNavLink> - ) - })} - </div> - </SecondLevelNav> - ) - } - - return ( - <> - <HeaderWrapper open={showMobileNav}> - <BucketHeader wide={wide}> - <HomeIcons> - <CustomLink href="https://www.prisma.io"> - <Logo className="light" fill={'#2d3748'} /> - <Logo className="dark" fill={'#ffffff'} /> - </CustomLink> - <CustomLink href="https://www.prisma.io/docs">Docs</CustomLink> - </HomeIcons> - <NonMobileMenu style={headerProps.wide ? { paddingRight: '200px' } : {}}> - <SecondLevelMenu /> - </NonMobileMenu> - <GithubLink href="https://github.com/prisma" target="_blank"> - <Github className="light" fill={'#2d3748'} width={24} height={24} /> - <Github className="dark" fill={'#ffffff'} width={24} height={24} /> - </GithubLink> - <Button - type="primary" - color="teal" - className="log-btn" - href="https://console.prisma.io/login?utm_source=docs&utm_medium=login" - > - Login - </Button> - <DocsMobileButton onClick={toggleMobileNav}> - {showMobileNav ? ( - <Icon icon="fa-regular fa-xmark" size="28px" /> - ) : ( - <Icon icon="fa-regular fa-bars" size="28px" /> - )} - </DocsMobileButton> - - {showMobileNav && ( - <SecondLevelMobileOnlyNav> - <OverflowContainer> - <SecondLevelMobileMenu headerProps={headerProps} wide={wide} /> - <Button - type="primary" - color="teal" - className="log-btn-mobile" - href="https://console.prisma.io/login?utm_source=docs&utm_medium=login" - > - Login - </Button> - </OverflowContainer> - </SecondLevelMobileOnlyNav> - )} - </BucketHeader> - </HeaderWrapper> - {(location || sidenavSearchOpened) && ( - <SearchComponentDesktop - open={showMobileNav} - homePage={homePage} - openSearch={!showDocsBtn} - sidenavSearchOpened={sidenavSearchOpened} - > - <Search - hitsStatus={changeHitsStatus} - location={location} - sidenavSearchOpened={sidenavSearchOpened} - closeSidenavSearch={closeSidenavSearch} - path="home" - setInputText={setInputText} - wide={wide} - /> - </SearchComponentDesktop> - )} - </> - ) -} - -export default Header diff --git a/src/components/layout.tsx b/src/components/layout.tsx deleted file mode 100644 index 11d7cfc19d..0000000000 --- a/src/components/layout.tsx +++ /dev/null @@ -1,231 +0,0 @@ -import { MDXProvider } from '@mdx-js/react' -import { RouterProps } from '@reach/router' -import { Script } from 'gatsby' -import React, { useState } from 'react' -import StickyBox from 'react-sticky-box' -import styled from 'styled-components' - -import { useLayoutQuery } from '../hooks/useLayoutQuery' -import { defaultTheme as theme } from '../theme' -import Footer from './footer' -import Header from './header' -import SearchBox from './search/minimalInput' -import shortcodes from './shortcodes' -import SidebarLayout from './sidebar' -import TableOfContents from './toc' -import { WebProvider } from './WebProvider' - -import '../styles/layout.css' - -interface LayoutContentProps { - toc: any - tocDepth?: number - slug?: string - homePage?: boolean - children: React.ReactNode - wide?: boolean -} - -type LayoutProps = RouterProps & LayoutContentProps - -const Wrapper = styled.div<{ homePage?: boolean }>` - display: flex; - width: 100%; - justify-content: center; - //${(p) => (p.homePage ? 'padding: 80px 0 0 0' : 'padding: 80px 0')}; - @media (max-width: ${theme.breakpoints.tabletVertical}) { - padding: 0; - } -` - -const Content = styled.article<{ homePage?: boolean; wide?: boolean }>` - ${(p) => - p.homePage - ? 'max-width: 100%;' - : p.wide - ? 'min-width: 0; max-width: 988px; flex-shrink: 1; padding: 0 1rem;' - : 'max-width: 748px; margin: 0 20px;'} - flex: 1; - position: relative; - z-index: 100; - width: 100%; - @media (min-width: 0px) and (max-width: 1024px) { - margin: 0; - max-width: 100%; - } - @media (min-width: 1025px) and (max-width: 1240px) { - margin: 0; - ${(p) => (p.homePage ? 'max-width: 100%' : 'max-width: 570px')}; - } - section { - > h1, - h2, - h3, - h4, - h5, - h6 { - &:has(> inlinecode) { - line-height: 1.5; - } - } - } -` - -const MaxWidth = styled.div<{ wide?: boolean }>` - > section { - padding: 0 ${(p) => `${theme.space[40]}${p.wide ? ` 0 0` : ``}`}; - &.top-section { - padding-top: 0; - } - @media (min-width: 0px) and (max-width: 1024px) { - margin-top: ${theme.space[8]}; - } - @media (min-width: 0px) and (max-width: 1024px) { - padding: 0 ${theme.space[24]}; - &.top-section { - padding-top: ${theme.space[24]}; - } - } - } -` - -const NotMobile = styled.section` - display: flex; - height: fit-content; - @media (min-width: 0px) and (max-width: 1024px) { - display: none; - } - &.fixed { - position: sticky; - } -` - -const Container = styled.div<{ homePage?: boolean; wide?: boolean }>` - ${(p) => (p.homePage ? 'max-width: 100%;' : p.wide ? 'max-width: 1440px' : 'max-width: 1240px')}; - width: 100%; - justify-content: center; - display: flex; - align-items: flex-start; - position: relative; - - ${(p) => (p.homePage ? `margin-top: 0` : `margin-top: ${theme.space[40]};`)} - @media (max-width: 1024px) { - ${(p) => (p.homePage ? `margin-top: 0` : `margin-top: 118px;`)} - } -` - -const TOCWrapper = styled.div<{ wide?: boolean }>` - width: 180px; - height: 85vh; - flex-shrink: 0; - overflow-y: auto; - position: sticky; - top: 20px; - ${(p) => p.wide && `margin-right: -100px;`} - - @media (min-width: 0px) and (max-width: 1024px) { - display: none; - } - &.fixed { - position: sticky; - } -` - -const FooterWrapper = styled.div` - button { - z-index: 10; - } -` - -const SearchComponentDesktop = styled.div<{ open?: boolean }>` - width: calc(100% - ${theme.space[16]}); - padding: 0 0 22px 0; - @media (min-width: 0px) and (max-width: 1024px) { - display: none; - } -` - -const CustomSticky = styled(StickyBox)` - width: 272px; - margin: 0px -${theme.space[16]} 0 ${theme.space[16]}; - @media (min-width: 0px) and (max-width: 1024px) { - width: auto; - } -` - -const LayoutWrapper = styled.div<{ mobileNavOpen?: boolean }>` - ${(p) => p.mobileNavOpen && 'position: fixed;'} -` - -export default function Layout({ - children, - toc, - tocDepth, - location, - slug, - homePage, - wide, -}: LayoutProps) { - const { site } = useLayoutQuery() - const { header, footer } = site.siteMetadata - const [mobileNavOpen, setMobileNav] = useState(false) - const [showDocsBtn, setShowDocsBtn] = React.useState(true) - const queryString = new URLSearchParams(location?.search).get('query') - const [value, setValue] = useState(queryString || '') - - const closeSidenavSearch = () => setShowDocsBtn(true) - - const showHeaderSearch = () => setShowDocsBtn(false) - - const setInputText = (input: any) => setValue(input) - return ( - <WebProvider> - <Script src="https://kit.fontawesome.com/1772ab679c.js" crossOrigin="anonymous" /> - <Script - async - src="https://cdn.tolt.io/tolt.js" - data-tolt="fda67739-7ed0-42d2-b716-6da0edbec191" - /> - <MDXProvider components={shortcodes}> - <LayoutWrapper className="dark"> - <Header - headerProps={header} - wide={wide} - mobileNavOpen={setMobileNav} - homePage={homePage} - sidenavSearchOpened={!showDocsBtn} - closeSidenavSearch={closeSidenavSearch} - setInputText={setInputText} - /> - <Wrapper homePage={homePage}> - <Container homePage={homePage} wide={wide}> - {!homePage && ( - <CustomSticky offsetTop={20} offsetBottom={20}> - <SearchComponentDesktop open={!showDocsBtn}> - <SearchBox showHeaderSearch={showHeaderSearch} value={value} path={location} /> - </SearchComponentDesktop> - <NotMobile id="sidebar-holder"> - <SidebarLayout isMobile={false} location={location} slug={slug} /> - </NotMobile> - </CustomSticky> - )} - <Content homePage={homePage} wide={wide}> - <MaxWidth wide={wide}>{children}</MaxWidth> - </Content> - {!homePage && ( - <TOCWrapper id="toc-holder"> - {toc && toc.items && toc.items.length > 0 && ( - <TableOfContents headings={toc.items} tocDepth={tocDepth} /> - )} - </TOCWrapper> - )} - </Container> - </Wrapper> - </LayoutWrapper> - </MDXProvider> - <FooterWrapper> - <Footer footerProps={footer} /> - </FooterWrapper> - </WebProvider> - ) -} diff --git a/src/components/link.tsx b/src/components/link.tsx deleted file mode 100644 index f42cf1943b..0000000000 --- a/src/components/link.tsx +++ /dev/null @@ -1,61 +0,0 @@ -import { Link as GatsbyLink } from 'gatsby' -import isAbsoluteUrl from 'is-absolute-url' -import React from 'react' -import CustomLink from './customLink' - -interface LinkProps { - to: string | null - activeClassName?: string - partiallyActive?: string - getProps?: any - wide?: boolean - sidenav?: boolean -} - -const Link = ({ - to, - activeClassName, - partiallyActive, - getProps, - sidenav = false, - ...props -}: LinkProps & React.ReactNode) => { - return (!to || isAbsoluteUrl(to)) && !sidenav ? ( - <CustomLink - href={to} - {...props} - mdx={true} - // target={!to?.includes('prisma.io') ? '_blank' : '_self'} - // rel={!to?.includes('prisma.io') ? 'noopener' : ''} - style={{ display: 'inline-block' }} - > - {props.children} - {to && isAbsoluteUrl(to) && (!to.includes('prisma.io') || to.includes('slack.prisma.io')) && ( - <svg - xmlns="http://www.w3.org/2000/svg" - width="12" - style={{ marginLeft: '4px' }} - height="12" - viewBox="0 0 12 12" - fill="currentColor" - color="inherit" - > - <path - fill="inherit" - d="M6 1h5v5L8.86 3.85 4.7 8 4 7.3l4.15-4.16L6 1Z M2 3h2v1H2v6h6V8h1v2a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1Z" - /> - </svg> - )} - </CustomLink> - ) : ( - <GatsbyLink - to={to} - activeClassName={activeClassName} - partiallyActive={partiallyActive} - getProps={getProps} - {...props} - /> - ) -} - -export default Link diff --git a/src/components/newsletter/FooterNewsletterForm.tsx b/src/components/newsletter/FooterNewsletterForm.tsx index b0a6f967ac..4370d6a56d 100644 --- a/src/components/newsletter/FooterNewsletterForm.tsx +++ b/src/components/newsletter/FooterNewsletterForm.tsx @@ -1,107 +1,12 @@ -import React, { useEffect, useRef, useState } from 'react' -import styled from 'styled-components' - -import { Button } from '../button' +import React, { useRef, useState } from 'react' +import styles from "./styles.module.scss" import { Icon } from '../Icon' -import config from '../../../config' +import useDocusaurusContext from '@docusaurus/useDocusaurusContext' namespace S { - export const Container = styled.div<{ error?: boolean }>` - form { - position: relative; - display: flex; - align-items: center; - flex-direction: column; - margin-bottom: 48px; - @media only screen and (min-width: 768px) { - flex-direction: row; - margin-bottom: 0; - } - } - .input-name { - margin-bottom: 24px; - width: 100%; - @media only screen and (min-width: 768px) { - max-width: 264px; - width: auto; - } - } - .input-email { - margin-bottom: 32px; - width: 100%; - @media only screen and (min-width: 768px) { - width: auto; - max-width: 312px; - } - } - .input-name, - .input-email { - position: relative; - width: 100%; - .leading-icon { - left: 24px; - color: ${(props) => props.theme.colors.blueGray[600]}; - display: none; - position: absolute; - top: 50%; - transform: translateY(-50%); - @media only screen and (min-width: 360px) { - display: flex; - } - } - @media only screen and (min-width: 768px) { - margin-right: 24px; - margin-bottom: 0; - width: auto; - } - } - .input-el { - box-sizing: border-box; - width: 100%; - line-height: ${(props) => props.theme.fontSizes[20]}; - font-size: 18px; - height: 48px; - border: none; - border-radius: 10px; - border: 1px solid ${(props) => props.theme.colors.gray[300]}; - outline: ${(props) => (props.error ? `1px solid ${props.theme.colors.red[700]}` : 0)}; - padding: 12px 25px 12px 58px; - - &:focus { - outline: 1px solid - ${(props) => - props.error ? props.theme.colors.red[700] : props.theme.colors.blueGray[800]}; - } - - &::placeholder { - color: ${(props) => props.theme.colors.gray[600]}; - } - } - button { - content: 'Subscribe for updates'; - max-height: 48px; - white-space: nowrap; - width: 100%; - @media only screen and (min-width: 768px) { - width: max-content; - } - .button { - background-color: transparent; - background-image: none; - color: inherit; - cursor: pointer; - font-weight: inherit; - line-height: inherit; - font-size: 100%; - margin: 0; - padding: 0; - border: 0; - } - } - ` } -const icon = (name: string) => <Icon size="1.125rem" color="currentColor" icon={name} /> +const icon = (name: string) => <Icon size="1.125rem" color="rgb(113, 128, 150)" icon={name} /> type ColorType = 'indigo' | 'teal' | 'white' | undefined type FooterNewsletterFormProps = { @@ -113,6 +18,7 @@ export const FooterNewsletterForm = ({ theme, color = 'indigo' }: FooterNewslett const [email, setEmail] = useState<string>('') const [submitted, setSubmitted] = useState<boolean>(false) const mailchimpForm = useRef(null) + const { siteConfig: { customFields } } = useDocusaurusContext(); const setFormSubmitted = (event: any) => { const options = { @@ -120,7 +26,8 @@ export const FooterNewsletterForm = ({ theme, color = 'indigo' }: FooterNewslett headers: { accept: 'application/json', 'content-type': 'application/json', - 'api-key': process.env.GATSBY_BREVO_API_KEY, + // Add API key to cloudfare deployment + 'api-key': customFields.BREVO_API_KEY, }, body: JSON.stringify({ email: email, @@ -143,13 +50,13 @@ export const FooterNewsletterForm = ({ theme, color = 'indigo' }: FooterNewslett } return ( - <S.Container theme={theme}> - <form target="hiddenFrame" ref={mailchimpForm} onSubmit={setFormSubmitted}> - <label className="input-email" htmlFor="MERGE0"> - <div className="leading-icon">{icon('fa-light fa-envelope')}</div> + <div> + <form target="hiddenFrame" ref={mailchimpForm} className={styles.form} onSubmit={setFormSubmitted}> + <label className={styles["input-email"]} htmlFor="MERGE0"> + <div className={styles["leading-icon"]}>{icon('fa-light fa-envelope')}</div> <input type="email" - className="input-el" + className={styles["input-el"]} name="EMAIL" id="MERGE0" value={email} @@ -159,17 +66,17 @@ export const FooterNewsletterForm = ({ theme, color = 'indigo' }: FooterNewslett autoCorrect="off" /> </label> - <Button type="primary" color={color === 'white' ? 'indigo' : color}> + <button className={styles.formBtn} color={color === 'white' ? 'indigo' : color}> <input type="submit" value={submitted ? 'Thank you!' : 'Subscribe for updates'} name="subscribe" id="mc-embedded-subscribe" - className="button" + className={styles.button} /> - </Button> + </button> </form> <iframe name="hiddenFrame" src="about:blank" style={{ display: 'none' }}></iframe> - </S.Container> + </div> ) } diff --git a/src/components/newsletter/mailChimp.ts b/src/components/newsletter/mailChimp.ts deleted file mode 100644 index 6690ddb1e6..0000000000 --- a/src/components/newsletter/mailChimp.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Subscribe to mailchimp - * - * TODO: better align with mailchimp, this is using an undocumented API - * https://stackoverflow.com/questions/5188418/jquery-ajax-post-not-working-with-mailchimp/16369887#16369887 - */ - -export default async function subscribe(email: string): Promise<any> { - await fetch( - `https://coo.us14.list-manage.com/subscribe/post-json?u=dbacf466dc6e90901d8936391&id=83e066a034&EMAIL=${encodeURIComponent( - email - )}&c=?`, - { - method: 'GET', - mode: 'no-cors', - } - ) - // no-cors doesn't give us any information, so this is just a fire & pray - return -} diff --git a/src/components/newsletter/styles.module.scss b/src/components/newsletter/styles.module.scss new file mode 100644 index 0000000000..583fd087e0 --- /dev/null +++ b/src/components/newsletter/styles.module.scss @@ -0,0 +1,105 @@ +.formBtn { + display: inline-flex; + -webkit-box-pack: center; + padding: 16px 24px; + justify-content: center; + max-width: 100%; + text-align: left; + z-index: 1; + margin: 4px; + -webkit-box-align: center; + align-items: center; + box-sizing: border-box; + border-radius: 6px; + text-decoration: none; + cursor: pointer; + position: relative; + line-height: 1; + transition: background-color 0.1s ease 0s, color 0.2s ease 0s; + font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + font-weight: 700; + font-size: 18px; + border: 1px solid rgb(90, 103, 216); + background-color: rgb(90, 103, 216); + color: white; + content: 'Subscribe for updates'; + max-height: 48px; + white-space: nowrap; + width: 100%; + @media only screen and (min-width: 768px) { + width: max-content; + } + .button { + background-color: transparent; + background-image: none; + color: inherit; + cursor: pointer; + font-weight: inherit; + line-height: inherit; + font-size: 100%; + margin: 0; + padding: 0; + border: 0; + } +} +.form { + position: relative; + display: flex; + align-items: center; + flex-direction: column; + margin-bottom: 48px; + @media only screen and (min-width: 768px) { + flex-direction: row; + margin-bottom: 0; + } +} +.input-name { + margin-bottom: 24px; + width: 100%; + @media only screen and (min-width: 768px) { + max-width: 264px; + width: auto; + } +} +.input-email { + margin-bottom: 32px; + width: 100%; + @media only screen and (min-width: 768px) { + width: auto; + max-width: 312px; + } +} +.input-name, +.input-email { + position: relative; + width: 100%; + .leading-icon { + left: 24px; + display: none; + position: absolute; + top: 50%; + transform: translateY(-50%); + @media only screen and (min-width: 360px) { + display: flex; + } + } + @media only screen and (min-width: 768px) { + margin-right: 24px; + margin-bottom: 0; + width: auto; + } +} +.input-el { + background: white; + box-sizing: border-box; + width: 100%; + font-size: 18px; + height: 48px; + border: none; + border-radius: 10px; + padding: 12px 25px 12px 58px; + + &:focus { + outline: 1px solid + } +} \ No newline at end of file diff --git a/src/components/newsletter/valid.ts b/src/components/newsletter/valid.ts deleted file mode 100644 index 24bdfcf64b..0000000000 --- a/src/components/newsletter/valid.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Test for an invalid email - */ - -export function email(email: string): string | Error { - email = email.toLowerCase() - const re = - /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ - if (!re.test(email)) { - return new Error(`invalid email: ${email}`) - } - return email -} diff --git a/src/components/pageBottom.tsx b/src/components/pageBottom.tsx deleted file mode 100644 index 929766c3e9..0000000000 --- a/src/components/pageBottom.tsx +++ /dev/null @@ -1,338 +0,0 @@ -import { useLocation } from '@reach/router' -import React, { MouseEvent, useCallback, useState } from 'react' -import { X } from 'react-feather' -import { toast, ToastContainer } from 'react-toastify' -import styled from 'styled-components' - -import config from '../../config' -import Down from '../icons/Down' -import Twitter from '../icons/Twitter' -import Up from '../icons/Up' -import { defaultTheme as theme } from '../theme' -import Link from './link' -import { ButtonWrapper } from './shortcodes/button' - -import 'react-toastify/dist/ReactToastify.css' - -const sentiments: any = { - unhappy: 'Unhappy', - happy: 'Happy', -} - -const twitterShareUrl = `https://twitter.com/intent/tweet?text=I%27ve%20found%20this%20%40prisma%20docs%20page%20helpful%21%20` - -const ToastForm = ({ sentiment, fbId, fbSubmitted }: any) => { - const currentDocsPageURL = encodeURIComponent(location ? location.href : '/') - - const [feedback, setFeedback] = useState('') - const handleFeedbackChange = (e: any) => setFeedback(e.target.value) - - const closeForm = (e: any) => toast.dismiss() - // Optional callback to add textual feedback - const sendFeedback = async (e: any) => { - e.preventDefault() - await fetch(config.feedback.feedbackUrl, { - method: 'POST', - mode: 'no-cors', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ id: fbId, feedback }), - }) - fbSubmitted(true) - } - return ( - <> - <Title> - <p> - {sentiment !== 'Happy' - ? `Thank you for letting us know. Any more details about what we could improve?` - : `Thank you for letting us know! Was there anything you particularly enjoyed?`} - </p> - <a onClick={closeForm}> - <X color={theme.colors.blue[300]} /> - </a> - -
- - - - {sentiment !== 'Happy' ? ( - - Open a Github Issue Instead - - ) : ( - - )} - -
- - ) -} - -const PageBottom = ({ editDocsPath }: any) => { - const [submittedFeedback, setSubmittedFeedback] = useState(false) - const [, setFeedbackId] = useState(null) - const [submittedSentiment, setSubmittedSentiment] = useState(false) - const [sentiment, setSentiment] = useState(sentiments['happy']) - let location = useLocation() - const pageUrl = location ? location.pathname : '/' - const closeForm = (e: any) => toast.dismiss() - const fbSumitted = (state: boolean) => { - setSubmittedFeedback(state) - toast.dismiss() - toast( - - 🎉 -

Message sent! Thank you for making Prisma better for the community.

- - - -
- ) - } - - // Send the initial sentiment - const sendSentiment = useCallback( - async (sentiment: any) => { - const createdSetiment = await fetch(config.feedback.sentimentUrl, { - method: 'POST', - mode: 'cors', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ pageUrl, sentiment }), - }) - .then((response) => response.json()) - .then((data) => data) - - toast() - - setFeedbackId(createdSetiment.id) - setSubmittedSentiment(true) - }, - [pageUrl, sentiment] - ) - - const handleSentiment = (e: MouseEvent) => { - const selectedSentiment = e.currentTarget.id - setSentiment(() => { - const newSentiment = sentiments[selectedSentiment] - sendSentiment(newSentiment) - return newSentiment - }) - } - - return ( - - {editDocsPath && ( - - Edit this page on GitHub - - )} - - ) -} - -export default PageBottom - -const PageBottomWrapper = styled.div` - display: flex; - font-size: ${theme.fontSizes[14]}; - flex-direction: row; - justify-content: space-between; - padding: ${theme.space[16]} ${theme.space[40]}; - align-items: center; - button svg { - cursor: pointer; - transition: width 2s linear 1s; - } - .edit-git, - .message { - color: ${theme.colors.gray[600]} !important; - } - - button { - color: ${theme.colors.white} !important; - } - @media (min-width: 0px) and (max-width: ${theme.breakpoints.tabletVertical}) { - padding: ${theme.space[16]}; - flex-direction: column; - align-items: flex-start; - .edit-git { - order: 1; - } - } -` - -const Feedback = styled.div` - h4 { - text-transform: uppercase; - font-weight: bold; - letter-spacing: 0.01em; - text-transform: uppercase; - margin: revert; - color: ${theme.colors.gray[500]} !important; - } - .sentiments { - button { - background: transparent; - border: 0; - &.active { - border-color: ${theme.colors.blue[500]}; - svg { - circle, - path { - stroke: ${theme.colors.blue[500]}; - } - } - } - &:hover svg { - border-radius: 50%; - background: rgba(204, 217, 223, 0.5); - } - &:disabled svg { - cursor: not-allowed; - } - } - } - @media (min-width: 0px) and (max-width: 767px) { - order: 2; - } -` - -const Wrapper = styled.div` - display: flex; - align-items: center; - justify-content: space-between; - align-items: flex-start; - cursor: default; -` - -const Content = styled.div` - flex: 1; - .feedback-container, - .yay-container { - width: 360px; - } - .feedback-toast { - background: #ffffff; - box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.25), 0px 2px 12px rgba(0, 0, 0, 0.12); - border-radius: 8px; - position: relative; - width: 360px; - height: 225px; - padding: 0; - - .feedback-body { - padding: 0; - } - - margin-top: ${theme.space[24]}; - align-items: center; - input { - width: 100%; - border: 0; - padding: ${theme.space[12]} 20px; - font-size: 100%; - font-weight: normal; - margin-bottom: 20px; - - &::placeholder { - color: ${theme.colors.gray[500]}; - } - } - button { - background: ${theme.colors.green[500]}; - border-radius: 6px; - padding: 8px; - font-size: 1rem; - font-weight: 600; - border-color: transparent; - &:hover { - background: ${theme.colors.green[600]}; - } - } - } - .yay-toast { - background: ${theme.colors.blue[100]}; - font-size: 14px; - color: ${theme.colors.blue[600]}; - min-width: 360px; - } -` - -const Title = styled.div` - background: ${theme.colors.blue[100]}; - display: flex; - padding: 20px; - p { - color: ${theme.colors.blue[600]}; - font-size: ${theme.fontSizes[14]}; - margin: 0; - } - - a { - cursor: pointer; - } -` - -const Button = styled(ButtonWrapper)` - display: inline-flex !important; - overflow: hidden; - text-transform: capitalize; - font-size: 1rem; - svg { - margin-right: 10px; - height: 1rem; - width: 1rem; - path { - stroke: ${theme.colors.blue[300]}; - } - } - background: ${theme.colors.blue[500]} !important; - margin: 0; - margin-left: 20px; - @media (min-width: 0px) and (max-width: 767px) { - font-size: ${theme.fontSizes[12]}; - text-transform: none; - svg { - width: 14px; - } - } -` - -const ButtonRow = styled.div` - display: flex; - padding: 20px; - align-items: center; - .git-link { - text-decoration: underline; - margin-left: 20px; - color: ${theme.colors.gray[700]} !important; - font-weight: 600; - font-size: 14px; - } -` - -const SuccessToast = styled.div` - display: flex; - align-items: center; - justify-content: space-between; - p { - font-size: 14px; - } - span { - font-size: 24px; - margin-right: 0.5rem; - } - a { - cursor: pointer; - } -` diff --git a/src/components/parentTitleComp.tsx b/src/components/parentTitleComp.tsx deleted file mode 100644 index 0ec02b3729..0000000000 --- a/src/components/parentTitleComp.tsx +++ /dev/null @@ -1,78 +0,0 @@ -import * as React from 'react' -import styled from 'styled-components' - -import { useAllArticlesQuery } from '../hooks/useAllArticlesQuery' -import { AllArticles } from '../interfaces/AllArticles.interface' -import { defaultTheme as theme } from '../theme' -import { getParentTitle } from '../utils/parentTitle' -import { Icon } from './Icon' -import Link from './link' -import CustomLink from './customLink' - -const BreadcrumbTitle = styled.div` - color: ${theme.colors.gray[600]} !important; - line-height: 1.6rem; - font-weight: normal; - margin: 0; - a, - button { - color: ${theme.colors.gray[600]} !important; - text-decoration: none; - - &:hover, - &:focus { - color: ${theme.colors.gray[700]} !important; - text-decoration: underline; - cursor: pointer; - } - } - - @media (prefers-color-scheme: dark) { - a, - button { - color: ${theme.colors.gray[500]} !important; - &:hover, - &:focus { - color: ${theme.colors.gray[600]} !important; - } - } - } -` - -interface ParentTitleProps { - slug: string - nonLink?: boolean - isSearchItem?: boolean -} - -const ParentTitle = ({ slug, nonLink, isSearchItem }: ParentTitleProps) => { - const { allMdx }: AllArticles = useAllArticlesQuery() - const parentTitle = getParentTitle(slug, allMdx) - if (parentTitle.length === 0) { - return null - } - return ( - - {!isSearchItem && ( - - - - )} - {!isSearchItem && {`/`} } - {parentTitle.map((part: any, index: number) => ( - - {part.link && !nonLink ? ( - - {part.title} - - ) : ( - {part.title} - )} - {parentTitle.length !== index + 1 ? ' / ' : ''} - - ))} - - ) -} - -export default ParentTitle diff --git a/src/components/search/hitComps.tsx b/src/components/search/hitComps.tsx deleted file mode 100644 index 5774af2e68..0000000000 --- a/src/components/search/hitComps.tsx +++ /dev/null @@ -1,75 +0,0 @@ -import { defaultTheme as theme } from '../../theme' -import * as React from 'react' -import { Snippet } from 'react-instantsearch-dom' -import styled from 'styled-components' - -import Link from '../link' -import ParentTitle from '../parentTitleComp' - -const HitComp = styled.div` - padding: ${theme.space[24]} ${theme.space[40]} !important; - font-family: ${theme.fonts.text}; - font-style: normal; - font-weight: normal; - font-size: ${theme.fontSizes[16]}; - line-height: ${theme.space[24]}; - border-bottom: 1px solid ${theme.colors.gray[300]}; - // max-height: 150px; - &:last-item { - border: 0; - } - a { - color: ${theme.colors.gray[900]} !important; - display: block; - } - h4 { - font-weight: normal; - } - h3 { - font-weight: 600; - line-height: 28px; - letter-spacing: -0.01em; - margin: 10px 0; - } - &:hover, - &:focus { - background: ${theme.colors.gray[100]}; - } - mark { - color: ${theme.colors.blue[600]} !important; - background: #ebf8ff; - padding: 2px; - font-weight: bold; - } - - .more { - color: ${theme.colors.blue[600]}; - font-size: ${theme.fontSizes[14]}; - width: fit-content; - margin: 10px 0 0; - } - - @media (min-width: 0px) and (max-width: ${theme.breakpoints.tabletVertical}) { - max-height: fit-content; - padding: ${theme.space[24]} !important; - } -` - -const DocHit = ({ hit, selected }: any) => - hit._distinctSeqID == 0 ? ( - - - -

- /{' '} - - - -

- - {hit.moreCount > 1 &&

... More results on this page

} - -
- ) : null - -export default DocHit diff --git a/src/components/search/index.tsx b/src/components/search/index.tsx deleted file mode 100644 index f4c9877227..0000000000 --- a/src/components/search/index.tsx +++ /dev/null @@ -1,299 +0,0 @@ -import { defaultTheme as theme } from '../../theme' -import algoliasearch from 'algoliasearch/lite' -import { navigate } from 'gatsby' -import qs from 'qs' -import React, { useEffect, useRef, useState } from 'react' -import { connectHits, connectStateResults, Index, InstantSearch } from 'react-instantsearch-dom' -import styled from 'styled-components' - -import config from '../../../config' -import DocHit from './hitComps' -import CustomSearchBox from './input' -import Overlay from './overlay' - -const HitsWrapper = styled.div` - display: none; - &.show { - display: grid; - margin-bottom: 100px; - } - max-height: 75vh; - overflow-y: scroll; - overflow-x: hidden; - z-index: 100002; - -webkit-overflow-scrolling: touch; - position: absolute; - left: 50%; - top: 86px; - - transform: translate(-50%, -0%); - max-width: 1240px; - width: 100%; - background: ${theme.colors.white}; - box-shadow: 0px 4px 8px rgba(47, 55, 71, 0.05), 0px 1px 3px rgba(47, 55, 71, 0.1); - border-radius: 8px; - // border-top-left-radius: 0; - // border-top-right-radius: 0; - * { - margin-top: 0; - padding: 0; - } - ul { - list-style: none; - margin: 0; - } - .no-results { - padding: 2rem; - } - .loader, - .loader:after { - border-radius: 50%; - width: 5em; - height: 5em; - } - .loader { - margin: 60px auto; - font-size: 10px; - position: relative; - text-indent: -9999em; - border-top: 0.5em solid rgba(215, 215, 215, 0.2); - border-right: 0.5em solid rgba(215, 215, 215, 0.2); - border-bottom: 0.5em solid rgba(215, 215, 215, 0.2); - border-left: 0.5em solid #d7d7d7; - -webkit-transform: translateZ(0); - -ms-transform: translateZ(0); - transform: translateZ(0); - -webkit-animation: load8 1.1s infinite linear; - animation: load8 1.1s infinite linear; - } - @-webkit-keyframes load8 { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); - } - } - @keyframes load8 { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); - } - } - @media (min-width: 0px) and (max-width: 1024px) { - // left: 0; - // top: 88px; - // max-width: 100%; - border-top: 1px solid ${theme.colors.gray[300]}; - border-top-right-radius: 0; - border-top-left-radius: 0; - } - - @media (prefers-color-scheme: dark) { - background: ${theme.colors.gray[700]}; - } -` - -const indexName = config.header.search.indexName -const DEBOUNCE_TIME = 400 -const algoliaClient = algoliasearch( - config.header.search.algoliaAppId, - config.header.search.algoliaSearchKey -) - -const searchClient = { - ...algoliaClient, - search(requests: any) { - if (requests.every(({ params }: any) => !params.query)) { - return Promise.resolve({ - results: requests.map(() => ({ - hits: [], - nbHits: 0, - nbPages: 0, - page: 0, - processingTimeMS: 0, - hitsPerPage: 0, - exhaustiveNbHits: false, - query: '', - params: '', - })), - }) - } - - return algoliaClient.search(requests) - }, -} - -const getHits = (children: any, res: any) => { - const allHits = res.hits - const newHits = allHits - .filter((h: any) => h._distinctSeqID == 0) - .map((x: any) => ({ - ...x, - moreCount: 0, - })) - allHits.map((h: any) => { - const first = newHits.find((firstG: any) => firstG.slug == h.slug) - if (first) { - first.moreCount++ - } - }) - res.hits = newHits - return children -} -const Results = connectStateResults( - ({ isSearchStalled, searchState: state, searchResults: res, children }: any) => - (isSearchStalled || res?.query === '' ?
Searching...
: null) || - (res && res.nbHits > 0 ? ( - getHits(children, res) - ) : ( -
- No results for '{state.query}' -
- )) -) - -const createURL = (state: any) => `?${qs.stringify(state)}` - -const searchStateToUrl = (location: any, searchState: any) => - searchState - ? `${ - location.pathname === '/docs' - ? location.pathname.replace('docs', '') - : location.pathname.replace('/docs', '') - }${createURL(searchState)}` - : `` - -const urlToSearchState = (location: any) => qs.parse(location.search.slice(1)) - -export default function Search({ - hitsStatus, - location, - path, - sidenavSearchOpened, - closeSidenavSearch, - setInputText, - wide, -}: any) { - const [searchState, setSearchState] = useState(urlToSearchState(location)) - const [query, setQuery] = useState(``) - const [showHits, setShowHits] = React.useState(false) - const [selectedIndex, setSelectedIndex] = React.useState(-1) - const hideSearch = () => { - setShowHits(false) - if (searchState.query === '') { - clearTimeout(debouncedSetStateRef.current) - debouncedSetStateRef.current = setTimeout(() => { - navigate(location.href.split('?')[0]) - }, DEBOUNCE_TIME) - } - setInputText(query) - closeSidenavSearch() - } - - const showSearch = () => setShowHits(true) - - const debouncedSetStateRef = useRef(null) - - const onSearchStateChange = (updatedSearchState: any) => { - setQuery(updatedSearchState.query) - clearTimeout(debouncedSetStateRef.current) - - debouncedSetStateRef.current = setTimeout(() => { - navigate(searchStateToUrl(location, updatedSearchState)) - }, DEBOUNCE_TIME) - - setSearchState(updatedSearchState) - } - - React.useEffect(() => { - hitsStatus(showHits) - }, [showHits, query]) - - React.useEffect(() => { - setSearchState(urlToSearchState(location)) - setQuery(searchState.query) - }, [location]) - - const incrementIndex = () => { - setSelectedIndex((prevCount: number) => { - const nbHits = document.querySelectorAll('.ais-Hits-list .ais-Hits-item')?.length - if (prevCount < nbHits - 1) { - return prevCount + 1 - } else { - return 0 - } - }) - } - const decrementIndex = () => { - const nbHits = document.querySelectorAll('.ais-Hits-list .ais-Hits-item')?.length - setSelectedIndex((prevCount: number) => { - if (prevCount > 0) { - return prevCount - 1 - } else { - return nbHits - 1 - } - }) - } - - const scrollListener = () => { - hideSearch() - } - - useEffect(() => { - document.addEventListener('scroll', scrollListener) - return () => document.removeEventListener('scroll', scrollListener) - }, []) - return ( - - - setShowHits(true)} - isOpened={showHits} - closeSearch={hideSearch} - upClicked={decrementIndex} - downClicked={incrementIndex} - path={location.pathname} - sidenavSearchOpened={sidenavSearchOpened} - wide={wide} - /> - {query && query !== '' && showHits && ( - - - - - - - - )} - - ) -} - -const Hits = connectHits( - ({ hits, hitComponent, onMouseHoverHit, selectedIndex, onMouseLeaverHits }: any) => ( -
    - {hits.map((hit: any, index: number) => ( -
  • - {React.createElement(hitComponent, { - hit, - selected: index === selectedIndex, - onMouseHover: () => onMouseHoverHit(index), - })} -
  • - ))} -
- ) -) diff --git a/src/components/search/input.tsx b/src/components/search/input.tsx deleted file mode 100644 index 04b028aeaf..0000000000 --- a/src/components/search/input.tsx +++ /dev/null @@ -1,315 +0,0 @@ -import { defaultTheme as theme } from '../../theme' -import * as React from 'react' -import { connectSearchBox } from 'react-instantsearch-dom' -import styled from 'styled-components' - -import useWindowDimensions from '../../hooks/useWindowDimensions' -import Clear from '../../icons/Clear' -import SearchPic from '../../icons/Search' -import SearchSlash from '../../icons/SearchSlash' - -const SearchBoxDiv = styled.div<{ minimal?: boolean; wide?: boolean }>` - width: 100%; - display: flex; - max-width: 1240px; - width: 100%; - margin: 0 auto; - padding: 12px 16px; - border-radius: 8px; - border: 1px solid #cbd5e0; - background: #fff; - transition: transform 50ms ease-out; - transform-origin: center left; - - form { - width: 100%; - position: relative; - height: 36px; - transition: transform 50ms ease-out; - } - //search input width - &.opened { - position: relative; - z-index: 100001; - max-width: ${(p) => (p.wide ? '1440px' : '1240px')}; - width: 100%; - background: ${theme.colors.white}; - box-shadow: 0px 25px 50px -12px #00000040; - border: 2px solid #667eea; - border-radius: 8px; - transform-origin: center; - transform: scaleY(1.1) - ${(props) => (props.minimal ? `translateX(-1px)` : `translate(-1px, -5px)`)}; - - .clear { - //background: ${theme.colors.gray[300]}; - border-radius: 6px; - // height: 36px; - // width: 36px; - display: flex; - align-items: center; - justify-content: center; - svg path { - stroke: ${theme.colors.gray[700]}; - } - } - form { - transform: scaleY(0.9); - } - } - @media (max-width: ${theme.breakpoints.mobile}) { - width: auto; - flex: 1; - form { - width: 100%; - } - } - - .clear { - display: none; - } - - form { - display: flex; - align-items: center; - - button.ais-SearchBox-submit { - display: none; - } - button.ais-SearchBox-reset { - background: transparent; - border: transparent; - outline: none; - } - - input { - width: 100%; - background: transparent; - outline: none; - padding: 0rem ${theme.space[32]}; - font-family: ${theme.fonts.text}; - font-style: normal; - font-weight: normal; - font-size: ${theme.fontSizes[16]}; - line-height: 100%; - border-width: 0; - &::placeholder { - content: 'Search Documentation...'; - color: ${theme.colors.gray[500]}; - opacity: 1; /* Firefox */ - } - } - - input[type='search']::-webkit-search-decoration, - input[type='search']::-webkit-search-cancel-button, - input[type='search']::-webkit-search-results-button, - input[type='search']::-webkit-search-results-decoration { - -webkit-appearance: none; - } - } - - .slash { - border: 1px solid ${theme.colors.gray[400]}; - border-radius: 4px; - color: ${theme.colors.gray[400]}; - min-width: 18px; - display: flex; - justify-content: center; - } - - @media (min-width: 0px) and (max-width: ${theme.breakpoints.tabletVertical}) { - .slash { - display: none; - } - } - - @media (prefers-color-scheme: dark) { - background: ${theme.colors.gray[800]}; - border-color: ${theme.colors.gray[700]}; - - form { - input { - color: ${theme.colors.gray[100]}; - &::placeholder { - color: ${theme.colors.gray[400]}; - } - } - - svg path { - stroke: ${theme.colors.gray[400]}; - } - } - &.opened { - background: ${theme.colors.gray[800]}; - .clear { - svg path { - stroke: ${theme.colors.gray[100]}; - } - } - } - } -` - -const SearchIcon = styled(SearchPic)` - min-width: 1em; - pointer-events: none; - //z-index: 100001; - position: absolute; -` - -const SearchSlashIcon = styled(SearchSlash)` - pointer-events: none; - //z-index: 100001; - position: absolute; - right: 0; - @media (prefers-color-scheme: dark) { - path { - stroke: ${theme.colors.gray[700]}; - } - } -` - -const ClearIcon = styled(Clear)` - cursor: pointer; -` - -const DEBOUNCE_DELAY = 500 -const ESCAPE_KEY = 27 -const focusShortcuts = ['s', 191] - -const SearchBox = ({ - refine, - onFocus, - currentRefinement, - isOpened, - closeSearch, - upClicked, - downClicked, - selectedInd, - path, - sidenavSearchOpened, - disconnectedForm, - wide, - ...rest -}: any) => { - const [value, setValue] = React.useState(currentRefinement) - const timeoutId = React.useRef(null) - const inputEl = React.useRef(null) - const { width } = useWindowDimensions() - const [placeholderText, setPlaceholderText] = React.useState('Search Documentation...') - - const onChange = (e: any) => { - const { value: newValue } = e.target - - // After the user manually cleared the input, call `refine` without waiting so that the search - // closes instantly. - if (newValue === '') { - return clearInput() - } - - // Otherwise, debounce the search to avoid triggering many queries at once, which could also - // make the UI freeze. - window.clearTimeout(timeoutId.current) - timeoutId.current = window.setTimeout(() => refine(newValue), DEBOUNCE_DELAY) - setValue(newValue) - inputEl.current.blur() - inputEl.current.focus() - } - - const clearInput = () => { - window.clearTimeout(timeoutId.current) - setValue('') - refine('') - } - - // Focus shortcuts on keydown - const onKeyDown = (e: any) => { - if (e && e.keyCode == ESCAPE_KEY) { - closeSearch() - } else if (e && e.keyCode === 40) { - downClicked() - } else if (e && e.keyCode === 38) { - upClicked() - } - - const shortcuts = focusShortcuts.map((key) => - typeof key === 'string' ? key.toUpperCase().charCodeAt(0) : key - ) - - const elt = e.target || e.srcElement - const tagName = elt.tagName - if ( - elt.isContentEditable || - tagName === 'INPUT' || - tagName === 'SELECT' || - tagName === 'TEXTAREA' - ) { - // already in an input - return - } - - const which = e.which || e.keyCode - if (shortcuts.indexOf(which) === -1) { - // not the right shortcut - return - } - - inputEl.current.focus() - e.stopPropagation() - e.preventDefault() - } - - const onSubmit = (e: any) => { - e.preventDefault() - e.stopPropagation() - inputEl.current.blur() - - return false - } - - React.useEffect(() => { - document.addEventListener('keydown', onKeyDown) - if (width > 640) { - setPlaceholderText('Search Documentation...') - } - if (value) { - onFocus() - } - return () => { - document.removeEventListener('keydown', onKeyDown) - } - }, []) - - if (sidenavSearchOpened) { - inputEl.current.focus() - onFocus() - } - - return ( - -
- - - - {value !== '' && isOpened && ( - - - - )} - {!isOpened && width > 768 && } - -
- ) -} - -const CustomSearchBox = connectSearchBox(SearchBox) -export default CustomSearchBox diff --git a/src/components/search/minimalInput.tsx b/src/components/search/minimalInput.tsx deleted file mode 100644 index 1a5471faaa..0000000000 --- a/src/components/search/minimalInput.tsx +++ /dev/null @@ -1,226 +0,0 @@ -import { defaultTheme as theme } from '../../theme' -import * as React from 'react' -import styled from 'styled-components' - -import SearchPic from '../../icons/Search' -import SearchSlash from '../../icons/SearchSlash' - -const SearchBoxDiv = styled.div` - width: 100%; - display: flex; - max-width: 1240px; - width: 100%; - margin: 0 auto; - padding: 8px 16px; - border-radius: 8px; - border: 1px solid #cbd5e0; - background: #fff; - - form { - width: 100%; - position: relative; - height: 36px; - } - //search input width - &.opened { - position: relative; - z-index: 100001; - max-width: 1240px; - width: 100%; - height: 77px; - background: ${theme.colors.white}; - padding: ${theme.space[20]}; - border-bottom: 1px solid ${theme.colors.gray[300]}; - border-radius: ${theme.radii.small}; - border-color: ${theme.colors.white}; - form { - max-width: 100%; - input { - color: ${theme.colors.gray[700]}; - } - } - - .clear { - background: ${theme.colors.gray[300]}; - border-radius: 6px; - height: 36px; - width: 36px; - display: flex; - align-items: center; - justify-content: center; - svg path { - stroke: ${theme.colors.gray[700]}; - } - } - } - @media (max-width: ${theme.breakpoints.mobile}) { - width: auto; - flex: 1; - form { - width: 100%; - } - } - - .clear { - display: none; - } - - form { - display: flex; - align-items: center; - - button.ais-SearchBox-submit { - display: none; - } - button.ais-SearchBox-reset { - background: transparent; - border: transparent; - outline: none; - } - - input { - width: 100%; - background: transparent; - outline: none; - padding: 0rem ${theme.space[32]}; - font-family: ${theme.fonts.text}; - font-style: normal; - font-weight: normal; - font-size: ${theme.fontSizes[16]}; - line-height: 100%; - border-width: 0; - &::placeholder { - content: 'Search Documentation...'; - color: ${theme.colors.gray[500]}; - opacity: 1; /* Firefox */ - } - } - - input[type='search']::-webkit-search-decoration, - input[type='search']::-webkit-search-cancel-button, - input[type='search']::-webkit-search-results-button, - input[type='search']::-webkit-search-results-decoration { - -webkit-appearance: none; - } - } - - .slash { - border: 1px solid ${theme.colors.gray[400]}; - border-radius: 4px; - color: ${theme.colors.gray[400]}; - min-width: 18px; - display: flex; - justify-content: center; - } - - @media (min-width: 0px) and (max-width: ${theme.breakpoints.tabletVertical}) { - .slash { - display: none; - } - } - - @media (prefers-color-scheme: dark) { - background: ${theme.colors.gray[800]}; - border-color: ${theme.colors.gray[700]}; - - form { - input { - color: ${theme.colors.gray[100]}; - &::placeholder { - color: ${theme.colors.gray[400]}; - } - } - svg path { - stroke: ${theme.colors.gray[400]}; - } - } - &.opened { - background: ${theme.colors.gray[800]}; - } - } -` - -const SearchIcon = styled(SearchPic)` - min-width: 1em; - pointer-events: none; - //z-index: 100001; - position: absolute; -` - -const SearchSlashIcon = styled(SearchSlash)` - pointer-events: none; - //z-index: 100001; - position: absolute; - right: 0; - @media (prefers-color-scheme: dark) { - path { - stroke: ${theme.colors.gray[700]}; - } - } -` - -const focusShortcuts = ['s', 191] - -const SearchBox = ({ showHeaderSearch, value }: any) => { - const inputEl = React.useRef(null) - const onKeyDown = (e: any) => { - const shortcuts = focusShortcuts.map((key) => - typeof key === 'string' ? key.toUpperCase().charCodeAt(0) : key - ) - - const elt = e.target || e.srcElement - const tagName = elt.tagName - if ( - elt.isContentEditable || - tagName === 'INPUT' || - tagName === 'SELECT' || - tagName === 'TEXTAREA' - ) { - // already in an input - return - } - - const which = e.which || e.keyCode - if (shortcuts.indexOf(which) === -1) { - // not the right shortcut - return - } - - inputEl.current.focus() - e.stopPropagation() - e.preventDefault() - } - - React.useEffect(() => { - document.addEventListener('keydown', onKeyDown) - return () => { - document.removeEventListener('keydown', onKeyDown) - } - }, []) - - React.useEffect(() => { - if (value) { - inputEl.current.focus() - } - }, [value]) - - return ( - -
- - - - -
- ) -} - -export default SearchBox diff --git a/src/components/search/overlay.tsx b/src/components/search/overlay.tsx deleted file mode 100644 index 2e49c5b698..0000000000 --- a/src/components/search/overlay.tsx +++ /dev/null @@ -1,47 +0,0 @@ -import * as React from 'react' -import styled from 'styled-components' - -interface Props { - visible: boolean - hideSearch: () => void - path?: string -} - -const Overlay = ({ visible, hideSearch, path }: Props) => { - const [transition, setTransition] = React.useState(false) - - React.useEffect(() => { - setTimeout(() => { - setTransition(true) - }, 1000) - }) - - return ( - - ) -} - -const StyledOverlay = styled.div<{ isVisible: boolean; isTransitioning: boolean; path?: string }>` - position: fixed; - top: 0; - left: 0; - right: 0; - bottom: 0; - background: rgba(8, 35, 51, 0.3); - opacity: 0; - pointer-events: none; - z-index: 10000; - margin-top: -80px; - height: 100vh; - - // ${(p) => p.path && p.path === 'home' && `margin-top: -80px; width: 100vw; height: 100vh;`} - ${(p) => p.isTransitioning && 'transition: opacity 0.25s ease-in-out;'} - ${(p) => (p.isVisible ? 'opacity: 1; pointer-events: all;' : 'opacity: 0; pointer-events: none;')} -` - -export default Overlay diff --git a/src/components/seo.tsx b/src/components/seo.tsx deleted file mode 100644 index f58d1d98b1..0000000000 --- a/src/components/seo.tsx +++ /dev/null @@ -1,96 +0,0 @@ -import * as React from 'react' -import favicon from '../images/favicon-32x32.png' -import { useStaticQuery, graphql } from 'gatsby' -import { useLocation } from '@reach/router' - -type SEOProps = { - title?: string - description?: string - homepage?: boolean -} - -const SEO = ({ title, description, homepage }: SEOProps) => { - const location = useLocation() - const { site } = useStaticQuery(query) - const { - siteMetadata: { - pathPrefix, - titlePrefix, - titleSuffix, - siteUrl, - keywords, - twitter: { site: tSite, creator: tCreator, image: tUrl }, - og: { - site_name: oSite, - type: oType, - image: { alt: oImgAlt, url: oUrl, type: oImgType, width: oImgWidth, height: oImgHeight }, - }, - }, - } = site - - let canonicalUrl = `${siteUrl}${location.pathname}`.replace(/\/$/, '') - - return ( - <> - - - {homepage ? '' : titlePrefix} - {title} - {homepage ? '' : titleSuffix} - - - {keywords && } - {/* Twitter */} - - - - - - - {/* Open Graph */} - - - - - - - - - - - - - - ) -} - -export default SEO - -const query = graphql` - query SEO { - site { - siteMetadata { - pathPrefix - titlePrefix - titleSuffix - siteUrl - twitter { - site - creator - image - } - og { - site_name - type - image { - url - alt - type - height - width - } - } - } - } - } -` diff --git a/src/components/shadow-card/index.tsx b/src/components/shadow-card/index.tsx index 28dd97e341..84edb335de 100644 --- a/src/components/shadow-card/index.tsx +++ b/src/components/shadow-card/index.tsx @@ -1,45 +1,10 @@ import React from 'react' -import styled from 'styled-components' - -import { defaultTheme as theme } from '../../theme' - -const CardLibWrapper = styled.div` - box-shadow: 0px 5px 3px rgba(23, 43, 77, 0.04), 0px 8px 5px rgba(23, 43, 77, 0.08); - background: #fff; - border-radius: 8px; - overflow: hidden; - width: 100%; - cursor: pointer; - max-width: 100%; - margin: 0; - &:hover { - transform: scale(1.02); - } - transition: transform 100ms ease; - .content { - padding: 32px 24px; - text-align: left; - p { - color: #4a5568; - } - a { - text-decoration: none; - } - - &:hover .link > span:first-of-type { - text-decoration: underline; - } - } - - @media (prefers-color-scheme: dark) { - background: ${theme.colors.gray[900]}; - } -` +import styles from "./styles.module.scss" const ShadowCard = ({ starter, className, ...rest }: any) => ( - +
{rest.children} - +
) export default ShadowCard diff --git a/src/components/shadow-card/styles.module.scss b/src/components/shadow-card/styles.module.scss new file mode 100644 index 0000000000..ef0c858e05 --- /dev/null +++ b/src/components/shadow-card/styles.module.scss @@ -0,0 +1,28 @@ +.cardLibWrapper { + box-shadow: 0px 5px 3px rgba(23, 43, 77, 0.04), 0px 8px 5px rgba(23, 43, 77, 0.08); + background: var(--shadow-card-bg); + border-radius: 8px; + overflow: hidden; + width: 100%; + cursor: pointer; + max-width: 100%; + margin: 0; + &:hover { + transform: scale(1.02); + } + transition: transform 100ms ease; + .content { + padding: 32px 24px; + text-align: left; + p { + color: #4a5568; + } + a { + text-decoration: none; + } + + &:hover .link > span:first-of-type { + text-decoration: underline; + } + } +} \ No newline at end of file diff --git a/src/components/shortcodes/admonition.tsx b/src/components/shortcodes/admonition.tsx deleted file mode 100644 index 0e2e4a69cc..0000000000 --- a/src/components/shortcodes/admonition.tsx +++ /dev/null @@ -1,112 +0,0 @@ -import React from 'react' -import { AlertCircle } from 'react-feather' -import styled from 'styled-components' - -import { defaultTheme as theme } from '../../theme' - -interface AdmonitionType { - type?: string -} - -type AdmonitionProps = React.ReactNode & AdmonitionType - -const colorMap: any = { - info: theme.colors.gray[200], - warning: theme.colors.orange[300], - alert: theme.colors.red[600], -} - -const Admonition = ({ children, type, ...props }: AdmonitionProps) => { - return ( - - {type === 'alert' && ( - - - - )} - {children && Array.isArray(children) ? ( - - {children.map((child: any, index: number) => - child.props.originalType === 'ul' ? ( - {child && child.props && child.props.children} - ) : ( - {child && child.props && child.props.children} - ) - )} - - ) : ( - children - )} - - ) -} - -export default Admonition - -const FlexContainer = styled.div` - display: flex; - flex-direction: column; -` - -const ChildDiv = styled.div` - margin: 0; -` - -const ChildList = styled.ul` - padding-left: 16px; -` - -const AdmonitionWrapper = styled.span<{ type?: string }>` - font-family: Inter; - font-style: normal; - font-size: 16px; - line-height: 24px; - color: ${theme.colors.gray[600]} !important; - padding-left: ${(p) => (p.type === 'alert' ? '3rem' : '1.5rem')}; - padding-bottom: 8px; - margin: 2rem 0px; - position: relative; - display: block; - max-width: 100%; - pre { - font-weight: normal; - } - - &::before { - content: ''; - position: absolute; - width: 8px; - height: 100%; - left: 0px; - background: ${(p) => (p.type ? colorMap[p.type] : colorMap['info'])} !important; - border-radius: 5px; - } - - &.alert { - min-height: 50px; - } - - .alert-circle { - position: absolute; - width: 34px; - height: 100%; - left: 0px; - display: flex; - justify-content: center; - padding: 12px 0; - background: ${(p) => (p.type ? colorMap[p.type] : colorMap['info'])} !important; - border-radius: 5px; - } - - code { - color: ${theme.colors.gray[600]} !important; - } - - p { - margin: 0; - } - - @media (prefers-color-scheme: dark) { - color: ${theme.colors.gray[500]} !important; - } -` diff --git a/src/components/shortcodes/button.tsx b/src/components/shortcodes/button.tsx deleted file mode 100644 index f1ccf9e104..0000000000 --- a/src/components/shortcodes/button.tsx +++ /dev/null @@ -1,118 +0,0 @@ -import { useLocation } from '@reach/router' -import { withPrefix } from 'gatsby' -import isAbsoluteUrl from 'is-absolute-url' -import * as path from 'path-browserify' -import * as React from 'react' -import styled from 'styled-components' - -import ArrowRight from '../../icons/ArrowRight' -import { defaultTheme as theme } from '../../theme' - -export interface ButtonProps { - href?: string - target?: string - block?: boolean - color?: ButtonColor - disabled?: boolean - arrow?: boolean - children?: any - onClick?: any - arrowLeft?: boolean - theme?: any -} - -type ButtonColor = 'red' | 'green' | 'grey' | 'grey-bg' | 'dark' -const colorMap = { - red: '#ffffff', - green: '#ffffff', - grey: '#3d556b', - 'grey-bg': '#ffffff', - dark: '#ffffff', -} - -const backgroundColorMap: any = { - red: '#ff4f56', - green: '#ff4f56', - grey: '#ffffff', - 'grey-bg': '#8fa6b2', - dark: 'rgb(12, 52, 75)', -} - -export const ButtonWrapper = styled.a<{ block?: boolean; disabled?: boolean; color?: ButtonColor }>` - padding: 11px 14px; - margin-right: 10px; - display: inline-flex; - align-items: center; - ${(p) => (p.block ? 'width: 100%;' : '')} - border: none; - text-decoration: none; - height: 40px; - font-size: ${theme.fontSizes[16]}; - box-sizing: border-box; - outline: none; - opacity: ${(p) => (p.disabled ? '0.2' : 1)}; - text-transform: uppercase; - letter-spacing: 0.4px; - background: ${(p) => backgroundColorMap[p.color || 'green']}; - color: ${(p) => colorMap[p.color || 'green']} !important; - line-height: 1; - font-size: 14px; - font-weight: 700; - cursor: ${(p) => (p.disabled ? 'default' : 'pointer')}; - pointer-events: ${(p) => (p.disabled ? 'none' : 'all')}; - border-radius: 6px; - transition: color 150ms ease 0s, background 150ms ease 0s, transform 100ms ease 0s; - white-space: nowrap; - word-break: keep-all; - max-width: 100%; - overflow-x: auto; - margin-bottom: 0.5rem; - - transition: opacity 0.3s ease; - -webkit-transition: opacity 0.3s ease; - -moz-transition: opacity 0.3s ease; - - &:hover { - opacity: 0.9; - } -` - -const getAbsPath = (href: any, location: any) => { - return withPrefix( - path - .resolve( - location.pathname - .replace('/docs', '') - .replace('docs', '') - .replace(/\/$/, '') - .split(path.sep) - .slice(0, -1) - .join(path.sep) || '/', - href - ) - .replace(/\/?(\?|$)/, '/$1') - .replace(/\/$/, '') - ) -} -const ButtonLink = ({ href, ...props }: ButtonProps) => { - const location = useLocation() - const newHref = isAbsoluteUrl(href || '') ? href : getAbsPath(href, location) - return ( - - {props.arrowLeft && } - {props.children} - {props.arrow && } - - ) -} - -const StyledArrow = styled(ArrowRight)` - margin-left: 12px; -` - -const StyledArrowLeft = styled(ArrowRight)` - margin-right: 12px; - transform: rotate(180deg); -` - -export default ButtonLink diff --git a/src/components/shortcodes/code.tsx b/src/components/shortcodes/code.tsx deleted file mode 100644 index 4657f85bb2..0000000000 --- a/src/components/shortcodes/code.tsx +++ /dev/null @@ -1,380 +0,0 @@ -import rangeParser from 'parse-numeric-range' -import Highlight, { defaultProps } from 'prism-react-renderer' -import theme from 'prism-react-renderer/themes/github' -import * as React from 'react' -import styled from 'styled-components' - -import Copy from '../../icons/Copy' -import { defaultTheme } from '../../theme' -import { stringify } from '../../utils/stringify' -import CopyButton from './copy' -import FileWithIcon from './fileWithIcon' - -import './prism/index.css' - -require('./prism/prism-prisma') - -interface CodeProps { - copy?: boolean -} - -type PreCodeProps = CodeProps & React.ReactNode - -const diffBgColorMap: any = { - '+': 'var(--code-added-bg-color)', - '-': 'var(--code-deleted-bg-color)', - '|': 'var(--code-highlight-bg-color)', - '✎': 'var(--code-edit-bg-color)', -} - -const symColorMap: any = { - '+': 'var(--code-added-color)', - '-': 'var(--code-deleted-color)', - '|': 'var(--code-highlight-color)', - '✎': 'var(--code-highlight-color)', -} - -const symbols: any = { - normal: '|', - add: '+', - delete: '-', - edit: '✎', -} - -function cleanTokens(tokens: any[]) { - const tokensLength = tokens.length - if (tokensLength === 0) { - return tokens - } - const lastToken = tokens[tokensLength - 1] - - if (lastToken.length === 1 && lastToken[0].empty) { - return tokens.slice(0, tokensLength - 1) - } - return tokens -} - -const propList = ['copy', 'bash-symbol', 'terminal', 'no-lines'] - -const Code = ({ children, className, ...props }: PreCodeProps) => { - const codeEl = React.useRef(null) - const preEl = React.useRef(null) - let language = className && className.replace(/language-/, '') - let breakWords = false - const [debugState, setDebugState] = React.useState('') - - let diffArray: any = [] - - if (props && props.metastring && props.metastring.includes('highlight')) { - const parts = props.highlight.split('|') - parts.forEach((part: any) => { - diffArray = [part.split(';'), ...diffArray] - }) - } - - if (propList.includes(language) && !props['no-break-terminal']) { - breakWords = true - } - - const code = stringify(children) - - const hasCopy = props['copy'] || language === 'copy' - const noCopy = props['no-copy'] - - let hasNoLine = true - const isTerminal = props['terminal'] || language === 'terminal' - const wrapContent = props['wrap'] - const hasTerminalSymbol = props['bash-symbol'] || language === 'bash-symbol' || isTerminal - const fileName = props['file'] || language === 'file' - - if (!fileName) { - hasNoLine = true - } else { - hasNoLine = props['no-lines'] || language === 'no-lines' - } - - const tokenCopyClass = `${hasCopy ? 'has-copy-button' : ''} ${breakWords ? 'break-words' : ''}` - - React.useEffect(() => { - if (codeEl.current !== null && preEl.current !== null) { - if (debugState.length === 0) - setDebugState( - `${codeEl.current.getBoundingClientRect().width},${ - preEl.current.getBoundingClientRect().width - 44 - }` - ) - } - }, []) - - return ( - - {fileName && ( -
- -
- )} -
- - {({ className: blockClassName, style, tokens, getLineProps, getTokenProps }) => ( -
-              {!noCopy && (
-                
-                  
-                    
-                    
-                  
-                
-              )}
-              
-                {cleanTokens(tokens).map((line: any, i: number) => {
-                  let lineClass = {
-                    backgroundColor: '',
-                    symbColor: '',
-                    className: '',
-                  }
-
-                  let isDiff = false
-                  let diffSymbol = ''
-                  if (
-                    (line[0] &&
-                      line[0].content.length &&
-                      (line[0].content[0] === '+' ||
-                        (line[0].content[0] === '-' && line[0].content[1] !== '-') ||
-                        line[0].content[0] === '|' ||
-                        line[0].content[0] === '✎')) ||
-                    (line[0] &&
-                      line[0].content === '' &&
-                      line[1] &&
-                      (line[1].content === '+' ||
-                        (line[1].content === '-' && line[2].content !== '-') ||
-                        line[1].content === '|' ||
-                        line[1].content === '✎'))
-                  ) {
-                    diffSymbol =
-                      line[0] && line[0].content.length ? line[0].content[0] : line[1].content
-                    lineClass = {
-                      backgroundColor: diffBgColorMap[diffSymbol],
-                      symbColor: symColorMap[diffSymbol],
-                      className: '',
-                    }
-                    isDiff = true
-                  }
-
-                  if (diffArray.length !== 0) {
-                    diffArray.forEach((arr: any) => {
-                      if (rangeParser(arr[0]).includes(i + 1)) {
-                        diffSymbol = symbols[arr[1]]
-                        lineClass = {
-                          backgroundColor: diffBgColorMap[diffSymbol],
-                          symbColor: symColorMap[diffSymbol],
-                          className: '',
-                        }
-                        isDiff = true
-                        lineClass.className = 'highlighted-line'
-                      }
-                    })
-                  }
-
-                  const lineProps = getLineProps({ line, key: i })
-
-                  lineProps.style = { ...lineClass }
-                  lineProps.className = lineProps.className + ' ' + lineClass.className
-
-                  return (
-                    
-                      {hasTerminalSymbol && !isDiff && $}
-                      {!hasTerminalSymbol && !isDiff && !hasNoLine && (
-                        {i + 1}
-                      )}
-                      {isDiff && !hasNoLine && (
-                        
-                          {['+', '-', '✎'].includes(diffSymbol) ? diffSymbol : i + 1}
-                        
-                      )}
-                      
-                        {line.map((token: any, key: any) => {
-                          if (isDiff) {
-                            if (
-                              (key === 0 || key === 1) &&
-                              (token.content.charAt(0) === '+' ||
-                                token.content.charAt(0) === '-' ||
-                                token.content.charAt(0) === '|' ||
-                                token.content.charAt(0) === '✎')
-                            ) {
-                              return (
-                                
-                              )
-                            }
-                          }
-                          return 
-                        })}
-                      
-                    
-                  )
-                })}
-              
-            
- )} -
-
-
- ) -} - -export default Code - -const CodeWrapper = styled.div` - margin-top: ${defaultTheme.space[24]}; - margin-bottom: ${defaultTheme.space[24]}; - .file { - font-weight: 600; - color: ${defaultTheme.colors.gray[600]}; - font-size: ${defaultTheme.fontSizes[14]}; - font-family: ${defaultTheme.fonts.text}; - margin-bottom: 0.5rem; - } -` - -const AbsoluteCopyButton = styled.div` - transition: opacity 100ms ease; - position: absolute; - top: 20px; - right: 16px; - z-index: 2; - - > div { - right: -${defaultTheme.space[8]}; - top: -6px; - } - - .dark { - display: none; - } - - .light { - display: block; - } - - @media (prefers-color-scheme: dark) { - .dark { - display: block; - } - - .light { - display: none; - } - } -` - -const Pre = styled.pre` - margin-top: ${defaultTheme.space[32]}; - text-align: left; - margin: 0 0 16px 0; - padding: 2rem 1rem 1rem 1rem; - webkit-overflow-scrolling: touch; - overflow-x: visible; - &.wrap-content { - overflow-x: auto; - code { - white-space: break-spaces; - .token-line { - display: inline-flex; - > span:last-child { - align-self: center; - } - } - } - } - &:not(.wrap-content) { - &::-webkit-scrollbar { - width: 10px; - height: 10px; - background-color: transparent; - } - &::-webkit-scrollbar-thumb { - border-radius: 10px; - background-color: #c5c6c8; - } - &::-webkit-scrollbar-track { - border-radius: 10px; - background-color: transparent; - } - &::-webkit-scrollbar-corner { - background-color: transparent; - border-color: transparent; - } - &.not-scrollable { - overflow-x: hidden; - code { - display: inline; - } - } - } -` -const Line = styled.div` - display: block; - @media (prefers-color-scheme: dark) { - &.highlighted-line { - .token.plain { - color: ${defaultTheme.colors.gray[900]}; - } - } - } -` - -const LineNo = styled.span` - font-weight: 500; - line-height: ${defaultTheme.space[24]}; - color: ${defaultTheme.colors.gray[400]}; - display: inline-block; - text-align: right; - user-select: none; - width: 24px; -` - -const LineContent = styled.span` - padding: 0 ${defaultTheme.space[16]}; - &.break-words { - display: inline-table; - white-space: break-spaces; - width: 95%; - } - - &.token-line { - line-height: 1.3rem; - height: 1.3rem; - } -` diff --git a/src/components/shortcodes/codeBlock.tsx b/src/components/shortcodes/codeBlock.tsx deleted file mode 100644 index 99f8bcd54f..0000000000 --- a/src/components/shortcodes/codeBlock.tsx +++ /dev/null @@ -1,64 +0,0 @@ -import { defaultTheme as theme } from '../../theme' -import * as React from 'react' -import styled from 'styled-components' - -interface CodeProps { - languages?: string[] -} - -type CodeBlockProps = CodeProps & React.ReactNode - -const CodeBlock = ({ languages, children }: CodeBlockProps) => { - const [activeIndex, setActiveIndex] = React.useState(0) - const child: any = React.Children.toArray(children)[activeIndex] - const code = child && child.props && child.props.children - - return ( - - {languages && Array.isArray(languages) && ( - - {languages.map((lang, index) => { - const setCurrentActive = () => setActiveIndex(index) - return ( -
- {lang} -
- ) - })} -
- )} - {code} -
- ) -} - -export default CodeBlock - -const Tabs = styled.div` - display: flex; - .tab { - margin-right: 10px; - color: ${theme.colors.gray[600]}; - cursor: pointer; - } - - .tab.active { - font-weight: 600; - color: ${theme.colors.gray[900]}; - } - - @media (prefers-color-scheme: dark) { - .tab.active { - color: ${theme.colors.gray[500]}; - } - } -` -const Wrapper = styled.div` - margin-top: 2rem; - position: relative; -` diff --git a/src/components/shortcodes/codeWithResult.tsx b/src/components/shortcodes/codeWithResult.tsx deleted file mode 100644 index 690d02e51c..0000000000 --- a/src/components/shortcodes/codeWithResult.tsx +++ /dev/null @@ -1,129 +0,0 @@ -import { defaultTheme as theme } from '../../theme' -import * as React from 'react' -import styled from 'styled-components' - -interface ExpandedProps { - expanded?: boolean -} - -interface ShowHideProps { - showText?: string - hideText?: string - outputResultText?: string -} - -type CodeWithResultProps = React.ReactNode & ExpandedProps & ShowHideProps - -const CodeWithResult = ({ - children, - expanded, - showText, - hideText, - outputResultText, -}: CodeWithResultProps) => { - const [showResult, setShowResult] = React.useState(expanded) - const cmd = - children && children.filter((child: any) => child.props && child.props.mdxType === 'cmd') - const result = - children && children.filter((child: any) => child.props && child.props.mdxType === 'cmdResult') - - const toggleResult = () => setShowResult(!showResult) - const toggleShowText = showText - ? showText - : outputResultText - ? `Show ${outputResultText} results` - : 'Show CLI results' - const toggleHideText = hideText - ? hideText - : outputResultText - ? `Hide ${outputResultText} results` - : 'Hide CLI results' - - return ( - -
{cmd}
-
-
- {showResult ? toggleHideText : toggleShowText} -
- {showResult &&
{result}
} -
-
- ) -} - -export default CodeWithResult - -const Wrapper = styled.div` - margin-top: 2rem; - .cmd .pre-highlight pre { - border-radius: 8px 8px 0px 0px; - } - - code { - padding-bottom: 1em; - } - - .codeWrapperDiv { - margin-top: 0; - } - - .result { - background-color: var(--main-font-color) !important; - color: var(--code-inline-bgd-color) !important; - border-radius: 0px 0px 8px 8px; - margin-top: -24px; - - pre { - background-color: var(--main-font-color) !important; - color: var(--code-inline-bgd-color) !important; - - .token.plain { - color: var(--code-inline-bgd-color) !important; - } - - .token.punctuation { - color: ${theme.colors.gray[500]} !important; - } - - border-radius: 0px 0px 8px 8px; - margin-top: 0; - } - - .show-btn { - font-family: Inter; - font-style: normal; - font-weight: 600; - font-size: 12px; - line-height: 100%; - letter-spacing: 0.01em; - color: var(--code-inner-color); - height: 24px; - display: flex; - align-items: center; - cursor: pointer; - padding: 1rem; - } - } - - @media (min-width: 0px) and (max-width: 767px) { - margin-left: -24px; - margin-right: -24px; - .pre-highlight { - margin-right: 0; - margin-left: 0; - } - } - - @media (prefers-color-scheme: dark) { - .result { - background-color: #2d3748 !important; - color: #e2e8f0 !important; - pre, - pre .token.plain { - background-color: #2d3748 !important; - color: #e2e8f0 !important; - } - } - } -` diff --git a/src/components/shortcodes/collapsible.tsx b/src/components/shortcodes/collapsible.tsx deleted file mode 100644 index 6e91c67924..0000000000 --- a/src/components/shortcodes/collapsible.tsx +++ /dev/null @@ -1,98 +0,0 @@ -import { defaultTheme as theme } from '../../theme' -import * as React from 'react' -import styled from 'styled-components' - -import ArrowRight from '../../icons/ArrowRight' - -type CollapseProps = React.ReactNode -let index = 0 - -const getRemainingChildren = (children: any) => - children.filter((child: any) => !(child.props && child.props.originalType === 'summary')) - -const CollapseBox = ({ children, ...props }: CollapseProps) => { - const titleChild = - children && children.find((child: any) => child.props && child.props.originalType === 'summary') - const title = titleChild && titleChild.props.children - return ( - - - - - - {getRemainingChildren(children)} - - - ) -} - -export default CollapseBox - -const Wrapper = styled.div` - margin-bottom: ${theme.space[16]}; -` - -const Tab = styled.div` - position: relative; - overflow: hidden; - .tab-content { - transition: max-height 0.35s; - } - &:before { - content: ''; - position: absolute; - width: 8px; - height: 100%; - left: 0px; - background: ${theme.colors.gray[100]}; - border-radius: ${theme.radii.small}; - } - p { - margin-top: ${theme.space[8]}; - } -` - -const Label = styled.label` - position: relative; - display: block; - color: #0c344b; - font-weight: 600; - line-height: 1.5; - padding-left: ${theme.space[32]}; - cursor: pointer; - @media (prefers-color-scheme: dark) { - color: ${theme.colors.gray[100]}; - } -` - -const TabContent = styled.div` - max-height: 0; - overflow: hidden; - color: ${theme.colors.gray[800]}; - transition: max-height 0.35s, padding 0.35s; - padding-left: 36px; - padding-bottom: 0; - @media (prefers-color-scheme: dark) { - color: ${theme.colors.gray[100]}; - } -` - -const Input = styled.input` - position: absolute; - opacity: 0; - z-index: -1; - &:checked ~ .tab-content { - max-height: 2000px; - padding-bottom: ${theme.space[8]}; - } -` - -const StyledArrow = styled(ArrowRight)` - position: absolute; - left: 18px; - top: 8px; - transition: transform 0.15s; - input:checked + & { - transform: rotate(90deg); - } -` diff --git a/src/components/shortcodes/copy.tsx b/src/components/shortcodes/copy.tsx deleted file mode 100644 index f62907e77c..0000000000 --- a/src/components/shortcodes/copy.tsx +++ /dev/null @@ -1,64 +0,0 @@ -import { defaultTheme as theme } from '../../theme' -import * as React from 'react' -import * as CopyToClipboard from 'react-copy-to-clipboard' -import styled from 'styled-components' - -interface CopyProps { - text: string -} - -type CopyButtonProps = CopyProps & React.ReactNode - -const CopyButton = ({ text, children }: CopyButtonProps) => { - const [copied, setCopied] = React.useState(false) - let copyTimer: any - - const onCopyContent = () => { - setCopied(true) - copyTimer = window.setTimeout(() => setCopied(false), 500) - } - - return ( - - - {copied && ( -
- Copied -
- )} - {children} -
-
- ) -} - -export default CopyButton - -const CopyComponent = styled.div` - font-family: ${theme.fonts.text}; - & { - position: relative; - cursor: pointer; - display: inline-block; - } - @keyframes copying { - 0% { - opacity: 0; - transform: translate(-50%, 0); - } - 50% { - opacity: 1; - } - 100% { - opacity: 0; - transform: translate(-50%, 30px); - } - } - .indicator { - position: absolute; - top: 20px; - left: 0; - transform: translate(-50%, 0); - animation: copying 700ms linear; - } -` diff --git a/src/components/shortcodes/fileWithIcon.tsx b/src/components/shortcodes/fileWithIcon.tsx deleted file mode 100644 index d449044dcd..0000000000 --- a/src/components/shortcodes/fileWithIcon.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import { defaultTheme as theme } from '../../theme' -import * as React from 'react' -import styled from 'styled-components' - -import Code from '../../icons/Code' -import Database from '../../icons/Database' -import Display from '../../icons/Display' -import File from '../../icons/File' -import Prisma from '../../icons/Prisma' - -interface FileWithIconProps { - text: string[] - icon: keyof typeof icons -} - -const icons = { - file: , - database: , - display: , - code: , - prisma: , -} -const FileNameWrapper = styled.span` - color: inherit; - display: inline-flex; - align-items: center; - svg { - margin-right: ${theme.space[8]}; - } - @media (max-width: ${theme.breakpoints.tabletVertical}) { - font-size: ${theme.fontSizes[14]}; - } -` - -const FileWithIcon = ({ icon, text }: FileWithIconProps) => ( - - {icons[icon]} - {text} - -) - -export default FileWithIcon diff --git a/src/components/shortcodes/footnote.tsx b/src/components/shortcodes/footnote.tsx deleted file mode 100644 index 7b9708fca7..0000000000 --- a/src/components/shortcodes/footnote.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import * as React from 'react' -import styled from 'styled-components' - -type FootNoteProps = React.ReactNode - -const FootNote = ({ children, ...props }: FootNoteProps) => { - return {children} -} - -export default FootNote - -const FootNoteWrapper = styled.div` - * { - font-size: 14px; - font-style: italic; - } -` diff --git a/src/components/shortcodes/index.tsx b/src/components/shortcodes/index.tsx deleted file mode 100644 index 75634f02a9..0000000000 --- a/src/components/shortcodes/index.tsx +++ /dev/null @@ -1,106 +0,0 @@ -import isAbsoluteUrl from 'is-absolute-url' -import React from 'react' - -import Link from '../link' -import Admonition from './admonition' -import ButtonLink from './button' -import Code from './code' -import CodeBlock from './codeBlock' -import CodeWithResult from './codeWithResult' -import CollapseBox from './collapsible' -import FileWithIcon from './fileWithIcon' -import FootNote from './footnote' -import NavigationLinksContainer from './navigationLinksContainer' -import ParallelBlocks from './parallelBlocks' -import Quiz from './quiz' -import Subsections from './subSections' -import SwitchTech from './switchTech' -import TabbedContent from './tabbedContent' -import Table from './table' -import Tip from './tip' -import TopBlock from './topBlock' -import { - Bolt, - BorderBox, - BoxTitle, - Database, - Grid, - LinkCard, - List, - SignalStream, - SquareLogo, - Tab, -} from './gettingstarted' -import PostgresSQLSimple from '../../icons/technologies/PostgresSQLSimple' -import MariaDBDark from '../../icons/technologies/MariaDBDark' -import MySQLSimple from '../../icons/technologies/MySQLSimple' -import SQLServer from '../../icons/technologies/SQLServer' -import PlanetScale from '../../icons/technologies/PlanetScale' -import CockroachDBgradient from '../../icons/technologies/CockroachDBgradient' -import MongoDBSimple from '../../icons/technologies/MongoDBSimple' - -const shortcodes = { - h1: () =>

, - h2: ({ id, ...props }: any) =>

, - h3: ({ id, ...props }: any) =>

, - h4: ({ id, ...props }: any) =>

, - a: ({ href, ...props }: any) => { - const to = href ? href.toString() : '' - return isAbsoluteUrl(to) ? ( - - ) : ( - - ) - }, - p: (props: any) =>

, - ul: (props: any) =>

    , - ol: (props: any) =>
      , - CodeBlock, - TabbedContent, - ParallelBlocks, - CodeWithResult, - SwitchTech, - FileWithIcon, - inlineCode: (props: any) => , - code: (props: any) => , - details: (props: any) => , - table: (props: any) => , - ButtonLink, - Subsections, - TopBlock, - FootNote, - Admonition, - img: (props: any) => - /^https?:\/\//i.test(props.src) ? ( - - - - ) : ( - - ), - AlgoliaTerm: () => , - Quiz, - Tip: (props: any) => {props.children}, - NavigationLinksContainer: (props: any) => ( - {props.children} - ), - Database, - Bolt, - SignalStream, - BorderBox, - BoxTitle, - LinkCard, - Grid, - Tab, - SquareLogo, - PostgresSQLSimple, - MariaDBDark, - MySQLSimple, - SQLServer, - PlanetScale, - CockroachDBgradient, - MongoDBSimple, - List, -} - -export default shortcodes diff --git a/src/components/shortcodes/navigationLinksContainer.tsx b/src/components/shortcodes/navigationLinksContainer.tsx deleted file mode 100644 index 83a89d47eb..0000000000 --- a/src/components/shortcodes/navigationLinksContainer.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import { defaultTheme as theme } from '../../theme' -import * as React from 'react' -import styled from 'styled-components' - -interface Props { - isFirstLink?: boolean -} - -const ButtonContainer = styled.section` - display: flex; - justify-content: ${(props) => (props.isFirstLink ? 'flex-end' : 'space-between')}; - align-items: center; - padding: 1rem 0 1rem 0; - border-top: solid 2px ${theme.colors.gray[100]}; - padding-top: 2rem; - margin: 2rem 0; - - @media (max-width: 992px) { - flex-direction: column; - - & > a { - margin-bottom: 1.5rem; - } - } -` - -const NavigationLinksContainer: React.FC = ({ children, isFirstLink }) => { - return {children} -} - -export default NavigationLinksContainer diff --git a/src/components/shortcodes/parallelBlocks.tsx b/src/components/shortcodes/parallelBlocks.tsx deleted file mode 100644 index eb6c124ecf..0000000000 --- a/src/components/shortcodes/parallelBlocks.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import { defaultTheme as theme } from '../../theme' -import * as React from 'react' -import styled from 'styled-components' - -type CodeBlockProps = React.ReactNode - -const ParallelBlocks = ({ children }: CodeBlockProps) => { - const blockContent = - children && children.filter((child: any) => child.props && child.props.originalType === 'block') - return ( - - {blockContent.map((block: any, i: number) => ( - -
      {block.props.content}
      -
      {block.props.children}
      -
      - ))} -
      - ) -} - -export default ParallelBlocks - -const Block = styled.div` - flex: 1 1 0px; - width: calc(50% - 0.25rem); - .blockHeading { - font-weight: 600; - font-size: ${theme.fontSizes[14]}; - svg { - margin-right: ${theme.space[8]}; - } - } - - .blockContent { - height: calc(100% - 2em); - - .pre-highlight, - pre { - height: 100%; - } - } - - @media (max-width: ${theme.breakpoints.tabletVertical}) and (min-width: 0px) { - .pre-highlight { - margin: 0; - } - &:first-of-type .pre-highlight { - margin-right: 0; - margin-left: -${theme.space[24]}; - } - &:last-of-type .pre-highlight { - margin-left: 0; - margin-right: -${theme.space[24]}; - } - } -` -const Wrapper = styled.div` - display: flex; - gap: 0.5rem; - margin-top: ${theme.space[32]}; -` diff --git a/src/components/shortcodes/prism/index.css b/src/components/shortcodes/prism/index.css deleted file mode 100644 index c1ff848d27..0000000000 --- a/src/components/shortcodes/prism/index.css +++ /dev/null @@ -1,188 +0,0 @@ -.pre-highlight { - position: relative; -} -code[class*='language-'], -pre[class*='language-'], -pre[class*='language-'] code { - color: var(--main-font-color) !important; - font-family: 'JetBrainsMono', SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', - 'Courier New', monospace; - font-variant: no-common-ligatures no-discretionary-ligatures no-historical-ligatures no-contextual; - font-size: 14px; - text-align: left; - white-space: pre; - word-spacing: normal; - word-break: normal; - word-wrap: normal; - line-height: 1.5; - - -moz-tab-size: 4; - -o-tab-size: 4; - tab-size: 4; - - -webkit-hyphens: none; - -moz-hyphens: none; - -ms-hyphens: none; - hyphens: none; - - border-radius: 8px; - display: inline-grid; - grid-template-rows: max-content; - width: 100%; - overflow: auto; -} - -code[class*='language-'].is-terminal, -pre[class*='language-'].is-terminal, -pre[class*='language-'].is-terminal code { - background-color: var(--main-font-color) !important; - color: var(--code-inline-bgd-color) !important; -} - -code[class*='language-'].is-terminal::selection, -pre[class*='language-'].is-terminal::selection, -code[class*='language-'].is-terminal ::selection, -pre[class*='language-'].is-terminal ::selection { - background-color: #a0aec0; -} - -@media (prefers-color-scheme: dark) { - code[class*='language-'].is-terminal, - pre[class*='language-'].is-terminal, - pre[class*='language-'].is-terminal code { - background-color: #2d3748 !important; - color: var(--main-font-color) !important; - } - .token.punctuation { - color: #a0aec0 !important; - } -} -.is-terminal .line-no { - color: var(--header-btn-color) !important; -} - -.is-terminal .copy-button svg rect { - fill: var(--tag-media-color); -} -/* Code blocks */ -pre[class*='language-'] { - padding: 1em 0; - margin: 0; - overflow: auto; -} - -:not(pre) > code[class*='language-'], -pre[class*='language-'] { - background: var(--code-bgd-color) !important; -} - -/* Inline code */ -:not(pre) > code[class*='language-'] { - padding: 0.1em; - border-radius: 0.3em; - white-space: normal; -} - -code.inline-code, -.inline-code, -inlinecode { - display: inline; - vertical-align: baseline; - padding: 0.05em 0.3em 0.2em 0.3em; - background: var(--code-inline-bgd-color); - font-size: 14px; - font-feature-settings: 'clig' 0, 'calt' 0; - font-variant: no-common-ligatures no-discretionary-ligatures no-historical-ligatures no-contextual; - font-family: 'JetBrainsMono'; - font-style: normal; - line-height: 24px; - border-radius: 5px; - color: var(--main-font-color); - font-weight: 500; -} - -inlinecode { - font-size: inherit; -} - -.inline-code { - background-color: var(--border-color); -} - -.top-section h1 inlinecode { - font-size: 2rem; -} - -.token.comment, -.token.prolog, -.token.doctype, -.token.cdata { - color: var(--code-inner-color) !important; - font-style: normal !important; -} - -.token.namespace { - opacity: 0.7; -} - -.token.property, -.token.tag, -.token.type-args, -.token.number, -.token.constant, -.token.symbol, -.token.deleted { - color: var(--code-token4-color) !important; -} - -.token.selector, -.token.attr-name, -.token.string, -.token.char, -.token.builtin, -.token.inserted { - color: var(--code-token5-color) !important; -} - -.token.operator, -.token.entity, -.token.url, -.language-css .token.string, -.style .token.string { - color: var(--code-token6-color) !important; -} - -.token.atrule, -.token.attr-value, -.token.keyword { - color: var(--code-token1-color) !important; -} - -.token.function, -.token.class-name, -.token[class*='class-name'], -.token.boolean { - color: var(--code-token2-color) !important; -} - -.token.regex, -.token.important, -.token.variable { - color: var(--code-token7-color) !important; -} - -.token.important, -.token.bold { - font-weight: bold; -} -.token.italic { - font-style: italic; -} - -.token.entity { - cursor: help; -} - -.token.annotation { - color: var(--code-token3-color) !important; -} diff --git a/src/components/shortcodes/prism/prism-prisma.js b/src/components/shortcodes/prism/prism-prisma.js deleted file mode 100644 index 53f3ad6198..0000000000 --- a/src/components/shortcodes/prism/prism-prisma.js +++ /dev/null @@ -1,27 +0,0 @@ -import Prism from 'prism-react-renderer/prism' -;(typeof global !== 'undefined' ? global : window).Prism = Prism -Prism.languages.prisma = Prism.languages.extend('clike', { - keyword: /\b(?:datasource|enum|generator|model|type|view)\b/, - 'type-class-name': /(\s+)[A-Z]\w+/, ///(\b)(\s+)[A-Z]\w+/ -}) - -Prism.languages.javascript['class-name'][0].pattern = - /(\b(?:model|datasource|enum|generator|type|model|view)\s+)[\w.\\]+/ - -Prism.languages.insertBefore('prisma', 'function', { - annotation: { - pattern: /(^|[^.])@+\w+/, - lookbehind: true, - alias: 'punctuation', - }, -}) - -Prism.languages.insertBefore('prisma', 'punctuation', { - 'type-args': /\b(?:references|fields|onDelete|onUpdate):/, -}) - -Prism.languages.insertBefore('prisma', 'type-class-name', { - 'not-class': /\n(\s+)[A-Z]\w+/, -}) - -Prism.languages.json5 = Prism.languages.js diff --git a/src/components/shortcodes/quiz.tsx b/src/components/shortcodes/quiz.tsx deleted file mode 100644 index 291bf2ea1f..0000000000 --- a/src/components/shortcodes/quiz.tsx +++ /dev/null @@ -1,308 +0,0 @@ -import { defaultTheme as theme } from '../../theme' -import * as React from 'react' -import styled from 'styled-components' - -type AnswerOptions = { - answer?: string - isCorrect: boolean -} - -interface QuestionAndAnswer { - question: string - answerOptions: AnswerOptions[] -} - -interface ChosenAnswerProps { - isCorrect: boolean - answerSubmitted?: boolean -} - -const Wrapper = styled.section` - display: flex; - flex-direction: column; - justify-content: 'flex-start; - padding: 1rem; - background-color: ${theme.colors.gray[100]}; - border-radius: 8px; - min-height: 100px; - border-left: 8px solid ${theme.colors.gray[500]}; - margin: 2rem 0; -` - -const QuestionTitle = styled.h3` - display: flex; - align-items: center; - font-size: 1.25rem; - width: 100%; - margin: 0.55rem; -` - -const AnswersWrapper = styled.label` - & > span { - align-self: center; - margin-left: 0.5rem; - } -` - -const NotificationWrapper = styled.div` - margin: ${(props) => (props.isCorrect ? '1rem 0.25rem' : '1rem 0.5rem')}; -` - -const Row = styled.div` - display: flex; - align-items: center; - height: 30px; - position: relative; - margin-left: 0.5rem; - - & > span { - font-size: 0.85rem; - } -` - -const RadioButtonLabel = styled.label` - position: absolute; - top: 15%; - width: 20px; - height: 20px; - border-radius: 50%; - background: white; - border: 2px solid ${theme.colors.gray[600]}; -` -const RadioButton = styled.input` - opacity: 0; - z-index: 1; - border-radius: 50%; - width: 20px; - height: 20px; - margin-left: 0.3125rem; - margin-right: 0.25rem; - cursor: pointer; - position: relative; - - ${(props) => - props.checked && - ` - &:checked + ${RadioButtonLabel} { - background: #3182ce; - border: 1px solid #c3dafe; - &::after { - content: ""; - display: block; - border-radius: 50%; - width: 10px; - height: 10px; - margin: 4px; - box-shadow: 1px 3px 3px 1px rgba(0, 0, 0, 0.1); - background: white; - } - } - `} - - ${(props) => - props.isCorrect === true && - props.answerSubmitted && - props.answerSubmitted === true && - ` - & + ${RadioButtonLabel} { - background: #15bd76; - border: 1px solid #A3F5D3; - &::after { - color: white; - content: "✔"; - font-size: 0.6rem; - display: flex; - justify-content: center; - align-items: center; - border-radius: 50%; - width: 10px; - height: 10px; - margin: 4px - } - } - `} - - ${(props) => - props.isCorrect === false && - props.answerSubmitted && - props.answerSubmitted === true && - ` - & + ${RadioButtonLabel} { - background: #ff4f56; - border: 1px solid #F5B7B7; - &::after { - color: white; - content: "✖"; - font-size: 0.6rem; - display: flex; - justify-content: center; - align-items: center; - border-radius: 50%; - width: 10px; - height: 10px; - margin: 0.2rem 0.2rem 0.3rem 0.28rem; - } - } - `} -` - -const Button = styled.button` - font-size: 1rem; - font-weight: 600; - padding: 0.5rem 0.75rem; - display: inline-block; - background: ${theme.colors.gray[300]}; - text-align: left; - border-radius: 5px; - line-height: 1.5; - cursor: pointer; - text-decoration: none; - outline: none; - border: none; - color: ${theme.colors.gray[700]}; - transition: 0.2s ease-out; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); - &:hover { - background: ${theme.colors.gray[400]}; - } - &:active { - transform: scale(0.98); - } - &:disabled { - background: ${theme.colors.gray[400]}; - color: ${theme.colors.gray[700]}; - cursor: default; - } -` - -const NotificationContainer = styled.div` - display: flex; - width: 250px; - justify-content: flex-start; - align-items: center; - background: ${theme.colors.gray[100]}; - position: relative; - - ${(props) => - props.isCorrect === true && - ` - &::after { - order: 0; - background: #15bd76; - border: 1px solid #A3F5D3; - color: white; - content: "✔"; - font-size: 0.8rem; - display: flex; - justify-content: center; - align-items: center; - border-radius: 50%; - width: 20px; - height: 20px; - margin: 0 0.75rem 0 0.3rem; - } - `} - - ${(props) => - props.isCorrect === false && - ` - &::after { - order: 0; - background: #ff4f56; - border: 1px solid #F5B7B7; - color: white; - content: "✖"; - font-size: 0.8rem; - display: flex; - justify-content: center; - align-items: center; - border-radius: 50%; - width: 20px; - height: 20px; - margin: 0 0.75rem 0 0; - } - `} - - & > p { - order: 1; - font-size: 1rem; - font-weight: 600; - color: ${(props) => (props.isCorrect ? '#15bd76' : '#ff4f56')}; - } -` - -const AnswerNotification = ({ isCorrect }: ChosenAnswerProps) => ( - -

      {isCorrect ? `Yay, that's correct!` : `Oh no, that's incorrect!`}

      -
      -) - -const Quiz = ({ question, answerOptions }: QuestionAndAnswer) => { - const [chosenAnswer, setChosenAnswer] = React.useState({ - answer: '', - isCorrect: false, - }) - const [answerSubmitted, setAnswerSubmitted] = React.useState(false) - const [disabled, setDisabled] = React.useState(false) - - const handleSelectChange = (event: React.ChangeEvent) => { - setChosenAnswer({ - answer: event.target.value, - isCorrect: false, - }) - } - - const onSubmit = () => { - setAnswerSubmitted(true) - setDisabled(true) - const foundAnswer = answerOptions.find( - (answer) => answer.answer === chosenAnswer.answer - )?.isCorrect - if (foundAnswer) { - setChosenAnswer({ - isCorrect: true, - }) - } else { - setChosenAnswer({ - isCorrect: false, - }) - } - } - - return ( - - - {question} - - {answerOptions.map((item, index) => ( - - - handleSelectChange(event)} - /> - - {item.answer} - - - ))} - - {answerSubmitted ? ( - - ) : ( - - )} - - - ) -} - -export default Quiz diff --git a/src/components/select.tsx b/src/components/shortcodes/select.tsx similarity index 56% rename from src/components/select.tsx rename to src/components/shortcodes/select.tsx index 0045fe618b..ad26acf4e0 100644 --- a/src/components/select.tsx +++ b/src/components/shortcodes/select.tsx @@ -1,8 +1,5 @@ import * as React from 'react' import Select, { components } from 'react-select' -import styled from 'styled-components' - -import { defaultTheme as theme } from '../theme' interface SelectProps { items: any[] @@ -43,49 +40,19 @@ const SelectComponent = (props: SelectProps) => { ) } return ( - +
      - {children} -
      - - ) -} - -export default Table - -const TableWrapper = styled.div` - overflow-x: auto; - margin-top: 1em; - @media (min-width: 0px) and (max-width: ${theme.breakpoints.tabletVertical}) { - margin-right: -${theme.space[24]}; - margin-left: -${theme.space[24]}; - - table { - border-left: 0; - border-right: 0; - border-radius: 0 !important; - } - } - @media (prefers-color-scheme: dark) { - table, - th, - td, - tr { - border-color: ${theme.colors.gray[800]}; - color: ${theme.colors.gray[100]}; - } - } - - code.inline-code, - .inline-code, - inlinecode { - font-size: 13px; - } - &::-webkit-scrollbar { - width: 10px; - height: 10px; - background-color: transparent; - } - &::-webkit-scrollbar-thumb { - border-radius: 10px; - background-color: #c5c6c8; - } - &::-webkit-scrollbar-track { - border-radius: 10px; - background-color: transparent; - } - &::-webkit-scrollbar-corner { - background-color: transparent; - border-color: transparent; - } - &.not-scrollable { - overflow-x: hidden; - code { - display: inline; - } - } -` diff --git a/src/components/techSwitcher.tsx b/src/components/shortcodes/techSwitcher.tsx similarity index 65% rename from src/components/techSwitcher.tsx rename to src/components/shortcodes/techSwitcher.tsx index 8a0cf0fa05..c171dff4cc 100644 --- a/src/components/techSwitcher.tsx +++ b/src/components/shortcodes/techSwitcher.tsx @@ -1,23 +1,16 @@ import * as React from 'react' -import styled from 'styled-components' -import { Typescript } from '../icons/technologies/Typescript' import SelectComponent from './select' -import PostgreSQL from '../icons/technologies/PostgreSQL' -import MySQL from '../icons/technologies/MySQL' -import SQLite from '../icons/technologies/SQLite' -import MongoDB from '../icons/technologies/MongoDB' -import JS from '../icons/technologies/JS' -import SQLServer from '../icons/technologies/MSSQL' -import PlanetScale from '../icons/technologies/PlanetScale' -import CockroachDB from '../icons/technologies/CockroachDB' import { components } from 'react-select' -import ArrowDown from '../icons/ArrowDown' +import Link from '@docusaurus/Link' +import styles from "./styles.module.scss" interface TechSwitchProps { type: string onChangeTech: (item: any) => void technologies: string[] defaultTech: string + url?: string + dbSelected?: string } interface TechItem { @@ -25,15 +18,15 @@ interface TechItem { } const icons = { - node: , - typescript: , - mysql: , - postgresql: , - sqlite: , - mongodb: , - sqlserver: , - planetscale: , - cockroachdb: , + node: `/docs/img/technologies/nodejs.svg`, //, + typescript: `/docs/img/technologies/typescript.svg`, //, + mysql: `/docs/img/technologies/mysql.svg`, //, + postgresql: `/docs/img/technologies/postgresql.svg`, //, + sqlite: `/docs/img/technologies/sqlite.svg`, //, + mongodb: `/docs/img/technologies/mongodb.svg`, //, + sqlserver: `/docs/img/technologies/sqlserver.svg`, //, + planetscale: `/docs/img/technologies/planetscale.svg`, //, + cockroachdb: `/docs/img/technologies/cockroachdb.svg`, //, } const technologyTypes = { @@ -61,26 +54,28 @@ export const technologyNames = { cockroachdb: 'CockroachDB', } -const TechnologySwitch = ({ type, onChangeTech, technologies, defaultTech }: TechSwitchProps) => { +const TechnologySwitch = ({ type, onChangeTech, technologies, defaultTech, url, dbSelected }: TechSwitchProps) => { const langDefault = { technology: defaultTech || 'typescript' } const dbDefault = { technology: defaultTech || 'postgresql' } const defaultItem = type === 'lang' ? langDefault : dbDefault - const [selectedItem, setSelectedItem] = React.useState(defaultItem) const renderItem = (item: TechItem) => { + const href = type === "lang" ? `${url}${item.technology}-${dbSelected}` : `${url}${item.technology}` return ( - - {icons[item.technology]} - {technologyNames[item.technology]} - +
      + + + {technologyNames[item.technology]} + +
      ) } const DropdownIndicator = (props: any) => { return ( - + {/* */} ) } @@ -116,7 +111,7 @@ const TechnologySwitch = ({ type, onChangeTech, technologies, defaultTech }: Tec } return ( - +
      - +
      ) } -const Container = styled.div` - margin: 16px 1rem 0 0; - width: 180px; - text-overflow: ellipsis; - - @media only screen and (max-width: 767px) { - margin: 8px 0 0; - width: 100%; - } -` - -const SelectItem = styled.div` - display: flex; - align-items: center; - - svg { - margin-right: 10px; - } -` export default TechnologySwitch diff --git a/src/components/shortcodes/tip.tsx b/src/components/shortcodes/tip.tsx deleted file mode 100644 index f3ba3a70fc..0000000000 --- a/src/components/shortcodes/tip.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import { defaultTheme as theme } from '../../theme' -import * as React from 'react' -import styled from 'styled-components' - -const Wrapper = styled.section` - padding: 1rem; - background-color: ${theme.colors.gray[100]}; - border-radius: 8px; - min-height: 100px; - margin: 2rem 0; - position: relative; - - &::before { - content: '💡'; - position: absolute; - display: flex; - justify-content: center; - align-items: center; - font-size: 1.1rem; - top: -15px; - left: -10px; - width: 50px; - height: 50px; - border-bottom-right-radius: 50%; - background-color: white; - z-index: 999; - } - - & > div { - margin-left: 1.5rem; - } - - @media (prefers-color-scheme: dark) { - background-color: ${theme.colors.gray[800]}; - } -` - -const Tip = ({ children }: any) => { - return ( - -
      {children}
      -
      - ) -} - -export default Tip diff --git a/src/components/shortcodes/topBlock.tsx b/src/components/shortcodes/topBlock.tsx deleted file mode 100644 index c9f77f31c4..0000000000 --- a/src/components/shortcodes/topBlock.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import React from 'react' - -type TopBlockProps = { - children: any -} - -const TopBlock = ({ children, ...props }: TopBlockProps) => { - return
      {children}
      -} - -export default TopBlock diff --git a/src/components/sidebar/index.tsx b/src/components/sidebar/index.tsx deleted file mode 100644 index 8e8541cc66..0000000000 --- a/src/components/sidebar/index.tsx +++ /dev/null @@ -1,121 +0,0 @@ -import { defaultTheme as theme } from '../../theme' -import * as React from 'react' -import styled from 'styled-components' - -import config from '../../../config' -import { useAllArticlesQuery } from '../../hooks/useAllArticlesQuery' -import { AllArticles } from '../../interfaces/AllArticles.interface' -import Tree from './tree' - -const SidebarContainer = styled.aside` - width: 272px; - height: 100%; -` - -const Sidebar = styled.div` - margin: 0; - overflow: auto; - height: auto; - - /* .tablet-only { - display: none; - background: ${theme.colors.gray[100]}; - justify-content: space-between; - padding: ${theme.space[48]} ${theme.space[64]}; - - > ul { - width: 50%; - margin-right: 50px; - - &:last-of-type { - padding-left: ${theme.space[40]}; - } - } - - @media (min-width: 641px) and (max-width: 1024px) { - display: flex; - } - } */ - - .mobile-only { - display: none; - width: 100%; - background: ${theme.colors.gray[100]}; - padding: ${theme.space[8]} ${theme.space[16]}; - @media only screen and (max-width: 1024px) { - display: flex; - > ul { - width: 100%; - } - } - } -` - -const List = styled.ul` - list-style: none; - padding: 0 7px 0 ${theme.space[16]}; - margin: -${theme.space[20]} 0 0; - @media only screen and (min-width: 1024px) { - padding-top: 16px; - } -` - -const SidebarLayout = ({ isMobile, location, slug }: any) => { - const { allMdx }: AllArticles = useAllArticlesQuery() - const bucketName = - location && location.state && location.state.bucketName ? location.state.bucketName : '/' - let bucketEdges = allMdx.edges?.filter((edge) => edge.node.fields.slug.includes(bucketName)) - let bucketEdgesMobile = bucketEdges - const bucketNames = config.header.secondLevelHeaderMenuItems.map((item: any) => item.bucketName) - - if (slug) { - const slugBucketPart = `/${slug.split('/')[1]}` - const selectedBucket = bucketNames.filter((bn: any) => bn === slugBucketPart)[0] - - const bucket = config.header.secondLevelHeaderMenuItems.filter( - (item: any) => item.bucketName === selectedBucket - )[0] - - if (selectedBucket) { - if (bucket && bucket.includeSideNav) { - bucketEdges = allMdx.edges?.filter((edge) => { - return ( - edge.node.fields.slug.includes(selectedBucket) || - edge.node.fields.slug.includes(bucket.includeSideNav) - ) - }) - } else { - bucketEdges = allMdx.edges?.filter((edge) => { - return edge.node.fields.slug.includes(selectedBucket) - }) - } - - bucketEdgesMobile = bucketEdges?.filter( - (edge) => edge.node.fields.slug !== `${selectedBucket}/index` - ) - } - } - - if (!isMobile && slug === '/') { - bucketEdges = [] - } - return !isMobile ? ( - - - - - - - - ) : ( - -
      - - - -
      -
      - ) -} - -export default SidebarLayout diff --git a/src/components/sidebar/tree.tsx b/src/components/sidebar/tree.tsx deleted file mode 100644 index 154e09da83..0000000000 --- a/src/components/sidebar/tree.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import React, { useState } from 'react' -import TreeNode from './treeNode' -import { AllEdges } from '../../interfaces/AllArticles.interface' -import { useLocation } from '@reach/router' -import { calculateTreeData } from '../../utils/treeData' - -let defaultCollapsed: any = {} - -const Tree = ({ edges }: AllEdges) => { - const location = useLocation() - let [treeData] = useState(() => { - return calculateTreeData(edges, defaultCollapsed, location) - }) - - const [collapsed, setCollapsed] = useState(defaultCollapsed) - const toggle = (label: string, toggleContent: boolean, parents?: string[]) => { - setCollapsed({ - ...collapsed, - [label]: !toggleContent ? false : !collapsed[label], - }) - if (parents) { - parents.forEach((parent) => { - if (parent && collapsed[parent] !== null) { - setCollapsed({ - ...collapsed, - [parent]: false, - }) - } - }) - } - } - return -} - -export default Tree diff --git a/src/components/sidebar/treeNode.tsx b/src/components/sidebar/treeNode.tsx deleted file mode 100644 index 32a8318597..0000000000 --- a/src/components/sidebar/treeNode.tsx +++ /dev/null @@ -1,312 +0,0 @@ -import { defaultTheme as theme } from '../../theme' -import { useLocation } from '@reach/router' -import { graphql, useStaticQuery, withPrefix } from 'gatsby' -import * as React from 'react' -import styled from 'styled-components' - -import config from '../../../config' -import ArrowDown from '../../icons/ArrowDown' -import ArrowRight from '../../icons/ArrowRight' -import { urlGenerator } from '../../utils/urlGenerator' -import Link from '../link' - -const List = styled.ul` - list-style: none; - padding: 0; - margin: ${theme.space[12]} 0 ${theme.space[24]}; - &.has-border { - border-left: 2px solid ${theme.colors.gray[300]}; - margin-left: -${theme.space[12]}; - } -` - -const ListItem = styled.li` - font-size: ${theme.fontSizes[14]}; - line-height: 1.25; - margin-bottom: ${theme.space[12]}; - position: relative; - a { - transition: color 150ms ease 0s; - color: ${theme.colors.gray[600]} !important; - text-decoration: none; - vertical-align: middle; - &:hover { - color: ${theme.colors.gray[900]} !important; - } - - .tag { - position: absolute; - right: 0; - color: ${theme.colors.gray[500]}; - font-size: ${theme.fontSizes[14]}; - font-style: normal; - font-weight: 600; - background: ${theme.colors.gray[200]}; - border-radius: ${theme.radii.small}; - padding: 2px 5px; - text-transform: capitalize; - &.small { - font-size: 12px; - } - } - - .item-collapser { - background: transparent; - position: absolute; - left: -15px; - top: 7px; - padding: 0; - border: 0; - - .right, - .down { - transition: opacity 0.5s linear; - } - - .right.open, - .down.close { - display: none; - opacity: 0; - } - - .right.close, - .down.open { - display: block; - opacity: 1; - position: absolute; - margin-top: -4px; - } - - .down.open { - margin-top: -2px; - } - - &:hover, - &:focus, - &:active { - outline: none; - } - } - } - .active-item { - color: ${theme.colors.blue[600]} !important; - font-weight: 700; - } - &.top-level { - margin-top: ${theme.space[32]}; - > a { - font-size: 1.125rem; - color: ${theme.colors.gray[900]} !important; - font-weight: 600; - letter-spacing: -0.01em; - } - > ul { - margin-top: ${theme.space[12]}; - } - } - &.bottom-level { - margin-left: ${theme.space[20]}; - } - &.static-link { - margin-top: ${theme.space[20]}; - } - &.static-link > a { - color: ${theme.colors.gray[900]} !important; - text-transform: uppercase; - font-weight: bold; - font-size: ${theme.fontSizes[12]}; - line-height: ${theme.space[14]}; - letter-spacing: 0.02em; - &:hover { - color: ${theme.colors.gray[900]} !important; - } - } - &.last-level { - padding-left: ${theme.space[24]}; - - // .last-level { - // /*this one is last for real*/ - // padding-left: ${theme.space[16]}; - // } - } - .collapse-title { - position: relative; - cursor: pointer; - svg { - transition: transform 0.2s ease; - } - } - - @media (prefers-color-scheme: dark) { - a { - color: ${theme.colors.gray[500]} !important; - &:hover { - color: ${theme.colors.gray[400]} !important; - } - .tag { - color: ${theme.colors.gray[100]} !important; - background: ${theme.colors.gray[800]} !important; - } - } - .active-item { - color: ${theme.colors.indigo[400]} !important; - } - &.top-level, - &.static-link { - > a { - color: ${theme.colors.gray[100]} !important; - &:hover { - color: ${theme.colors.gray[100]} !important; - } - } - } - } -` - -const TreeNode = ({ - className = '', - setCollapsed, - collapsed, - url, - slug, - title, - navTitle, - items, - label, - topLevel, - staticLink, - duration, - preview, - deprecated, - earlyaccess, - highlight, - lastLevel, - hidePage, - codeStyle, - parents, -}: any) => { - const SpecialPaths = config.siteMetadata.SpecialPaths - - let isCollapsed = collapsed[label] - const hasChildren = items.length !== 0 - - const collapse = () => { - Object.keys(collapsed).map((lbl) => { - if ((lbl !== label && !parents) || (lbl !== label && parents && !parents.includes(lbl))) { - collapsed[lbl] = collapsed[lbl] == false ? (collapsed[lbl] = true) : collapsed[lbl] - } - }) - setCollapsed(label, false, parents) - } - - const justExpand = (e: any) => { - setCollapsed(label, true) - e.preventDefault() - e.stopPropagation() - } - - const location = useLocation() - const level = slug ? slug.split('/').indexOf(label) : '' - - const calculatedClassName = `${className || ''} ${topLevel ? 'top-level' : ''} ${ - staticLink ? 'static-link' : '' - } ${lastLevel ? 'last-level' : ''} ${level > 2 ? 'more-padding' : ''}` - - items.sort((a: any, b: any) => { - if (a.label < b.label) { - return -1 - } - if (a.label > b.label) { - return 1 - } - return 0 - }) - - const hasExpandButton = title && hasChildren && !staticLink && !topLevel - let hasBorder: boolean = false - if (hasExpandButton) { - items.map((item: any) => (item.lastLevel = true)) - hasBorder = true - } - - // Fix for issue https://github.com/prisma/prisma2-docs/issues/161 - const [isOpen, setIsOpen] = React.useState('close') - React.useEffect(() => { - let mounted = true - - if (mounted) { - setIsOpen(isCollapsed ? 'close' : 'open') - } - - return function cleanup() { - mounted = false - } - }, [isCollapsed]) - - React.useEffect(() => { - if (lastLevel && isCurrent && hasExpandButton && collapsed[label]) setCollapsed(label, true) - }, []) - - const specialCases = - slug && - (SpecialPaths.find((e: string) => - urlGenerator(slug) - .replace(/\/index$/, '') - .endsWith(e) - ) - ? '/' - : '') - - const isCurrent = - location && - slug && - location.pathname.includes(urlGenerator(slug).replace(/\/index$/, '') + specialCases) - - return url === '/' ? null : ( - - {title && label !== 'index' && !hidePage && ( - - {hasExpandButton ? ( - - - {navTitle || title} - - ) : ( - - {navTitle || title} - - )} - {duration && {duration}} - {preview && Preview} - {deprecated && Deprecated} - {earlyaccess && Early Access} - {highlight && New} - - )} - - {!isCollapsed && hasChildren ? ( - - {items.map((item: any, index: number) => ( - - ))} - - ) : null} - - ) -} -export default TreeNode diff --git a/src/components/switcherBlock.tsx b/src/components/switcherBlock.tsx deleted file mode 100644 index f2a05b8a55..0000000000 --- a/src/components/switcherBlock.tsx +++ /dev/null @@ -1,159 +0,0 @@ -import * as React from 'react' -import styled from 'styled-components' -import TechnologySwitch from './techSwitcher' -import { urlGenerator } from '../utils/urlGenerator' -import { withPrefix } from 'gatsby' - -const SwitcherWrapper = styled.div` - display: flex; - flex-direction: column; - @media only screen and (max-width: 767px) { - width: 100%; - } -` - -const SwitcherBlock = ({ langSwitcher, dbSwitcher, location, navigate, slug }: any) => { - const currentPath = location.pathname.replace(/\/$/, '') - let [pathTechParams] = currentPath.split('/').splice(-1) - - const isTechPath = currentPath !== withPrefix(urlGenerator(slug)) - const getTechFromParam = (type: string, defaultVal: string) => { - let tech = defaultVal - - if (isTechPath) { - if (type === 'lang') { - ;[tech] = pathTechParams.split('-').splice(dbSwitcher ? -2 : -1) - } - - if (type === 'db') { - ;[tech] = pathTechParams.split('-').splice(-1) - } - } - return tech - } - - const [langSelected, setLangSelected] = React.useState( - langSwitcher ? getTechFromParam('lang', langSwitcher[0]) : 'typescript' - ) - const [dbSelected, setDbSelected] = React.useState( - dbSwitcher ? getTechFromParam('db', dbSwitcher[0]) : 'postgresql' - ) - - const goToNewPath = () => { - let newParams = `${langSwitcher ? `${langSelected}${dbSwitcher ? '-' : ''}` : ''}${ - dbSwitcher ? `${dbSelected}` : '' - }` - - if (langSwitcher && !dbSwitcher) { - // for paths without tech or lang in the url - to redirect to one with default tech and lang - if (!langSwitcher.includes(pathTechParams.split('-').slice(-1)[0])) { - pathTechParams = `${pathTechParams}-${langSwitcher[0]}` - } - } else if (!langSwitcher && dbSwitcher) { - // for paths without tech or lang in the url - to redirect to one with default tech and lang - if (!dbSwitcher.includes(pathTechParams.split('-').slice(-1)[0])) { - pathTechParams = `${pathTechParams}-${dbSwitcher[0]}` - } - } else if (langSwitcher && dbSwitcher) { - // for paths without tech or lang in the url - to redirect to one with default tech and lang - if (!dbSwitcher.includes(pathTechParams.split('-').slice(-1)[0])) { - pathTechParams = `${pathTechParams}-${langSwitcher[0]}-${dbSwitcher[0]}` - } - } - - if (!pathTechParams.includes(newParams)) { - navigate(withPrefix(`${urlGenerator(slug)}-${newParams}${location.hash}`), { - replace: location.pathname === urlGenerator(slug), - }) - } - } - - // TODO : Simplify the function! - const techChanged = (item: any, type: string) => { - const elements = document.querySelectorAll('[id^="techswitch"]') - elements.forEach((element: any) => element.classList.remove('show')) - const elemToShow = [].slice.call(elements).filter((elem: any) => { - const elmId = elem.id.split('-no-')[0] - if (type === 'lang') { - if (dbSwitcher) { - if (elmId.includes('-*-')) { - // lang is any - return elmId.includes(`-${dbSelected}`) - } else { - return ( - elmId.includes(`-${item.technology}`) && - (elmId.includes(`-${dbSelected}`) || elmId.includes(`-*`)) - ) - } - } else { - return elmId.includes(`-${item.technology}`) - } - } else if (type === 'db') { - if (langSwitcher) { - if (elmId.slice(-1) === '*') { - // db is any - return elmId.includes(`-${langSelected}`) - } else { - return ( - elmId.includes(`-${item.technology}`) && - (elmId.includes(`-${langSelected}`) || elmId.includes(`-*`)) - ) - } - } else { - return elmId.includes(`-${item.technology}`) - } - } - }) - elemToShow && elemToShow.forEach((eShow: any) => eShow.classList.add('show')) - goToNewPath() - } - - const langChanged = (item: any) => { - techChanged(item, 'lang') - setLangSelected(item.technology) - } - - const dbChanged = (item: any) => { - techChanged(item, 'db') - setDbSelected(item.technology) - } - - React.useEffect(() => { - let mounted = true - - if (langSwitcher && !dbSwitcher && mounted) { - langChanged({ technology: langSelected }) - } else if (dbSwitcher && !langSwitcher && mounted) { - dbChanged({ technology: dbSelected }) - } else if (dbSwitcher && langSwitcher && mounted) { - langChanged({ technology: langSelected }) - dbChanged({ technology: dbSelected }) - } - - return function cleanup() { - mounted = false - } - }, [langSelected, dbSelected]) - return ( - - {langSwitcher && ( - - )} - {dbSwitcher && ( - - )} - - ) -} - -export default SwitcherBlock diff --git a/src/components/toc.tsx b/src/components/toc.tsx deleted file mode 100644 index db1a058100..0000000000 --- a/src/components/toc.tsx +++ /dev/null @@ -1,229 +0,0 @@ -import { defaultTheme as theme } from '../theme' -import * as React from 'react' -import styled from 'styled-components' - -import { TableOfContents } from '../interfaces/Article.interface' -import { stringify } from '../utils/stringify' - -const ChapterTitle = styled.div` - font-family: ${theme.fonts.text}; - font-style: normal; - font-weight: bold; - font-size: ${theme.fontSizes[14]}; - line-height: 100%; - letter-spacing: 0.01em; - text-transform: uppercase; - color: ${theme.colors.gray[900]}; - margin: 0 0; - @media (prefers-color-scheme: dark) { - color: ${theme.colors.gray[300]}; - } -` - -const HeadingList = styled.ul` - padding: 0 0 1em; - list-style-type: none; - margin: 0; - li { - font-size: ${theme.fontSizes[14]}; - padding: ${theme.space[12]} 0 0; - line-height: 1rem; - ul { - margin-left: ${theme.space[12]}; - } - a { - text-decoration: none; - color: ${theme.colors.gray[600]}; - &:hover { - color: ${theme.colors.gray[900]}; - } - } - } - @media (prefers-color-scheme: dark) { - li a { - color: ${theme.colors.gray[500]}; - &:hover { - color: ${theme.colors.gray[600]}; - } - } - } -` - -interface ItemProps { - isActive: boolean -} - -const ListItem = styled.li` - > a { - text-decoration: none; - background-image: linear-gradient(currentColor, var(--dark-color)); - background-position: 0% 100%; - background-repeat: no-repeat; - background-size: 0% 2px; - transition: background-size 0.7s; - ${(props) => (props.isActive ? 'background-size: 100% 2px;' : null)} - & > inlinecode { - background: ${(props) => (props.isActive ? `var(--dark-color)` : '')}; - color: ${(props) => (props.isActive ? 'var(--main-bgd-color)' : '#000')}; - } - } - - @media (prefers-color-scheme: dark) { - > a > inlinecode { - color: var(--main-font-color); - } - } -` - -const Headings = ({ headings, activeId, depth = 2 }: any) => { - const isActive = (url: string) => url?.replace(/inlinecode/g, '').slice(1) === activeId - const isAnyChildActive = (children: any[]) => children.some((child: any) => isActive(child.url)) - const finalDepth = depth ?? 2 - const navItems = (headings: any, activeId: any, depth: any) => ( - - {headings.map((heading: any) => ( - - - - {heading.items && - heading.items.length > 0 && - depth > 2 && - //isAnyChildActive(heading.items) && - navItems(heading.items, activeId, depth - 1)} - - ))} - - ) - return navItems(headings, activeId, finalDepth) -} - -const getIds = (headings: TableOfContents[], tocDepth: number) => { - return headings.reduce((acc: any, item: any) => { - if (item.url) { - // url has a # as first character, remove it to get the raw CSS-id - acc.push(item.url.replace(/inlinecode/g, '').slice(1)) - } - if (item.items && tocDepth > 1) { - acc.push(...getIds(item.items, tocDepth - 1)) - } - return acc - }, []) -} - -const useIntersectionObserver = ( - setActiveId: any, - idList: any[], - tocDepth: number, - headings: any -) => { - const headingElementsRef: any = React.useRef({}) - const depth = tocDepth ?? 2 - const allHeadings = headings - - const intersectionActive = React.useRef(undefined) - - const getKeyByValue: any = (obj: any, value: string) => - Object.keys(obj).find((key) => obj[key] === value) - const deepExists: any = (obj: any, query: string) => - Object.values(obj).some((v: any) => - typeof v === 'object' ? deepExists(v, query) : v === query - ) - React.useEffect(() => { - const callback = (headings: any) => { - headingElementsRef.current = headings.reduce((map: any, headingElement: any) => { - map[headingElement.target.id] = headingElement - return map - }, headingElementsRef.current) - - // Get all headings that are currently visible on the page - let visibleHeadings: any[] = [] - Object.keys(headingElementsRef.current).forEach((key) => { - const headingElement = headingElementsRef.current[key] - if (headingElement.isIntersecting) visibleHeadings.push(headingElement) - }) - - const getIndexFromId = (id: any) => idList.findIndex((heading) => heading === id) - // If there is only one visible heading, this is our "active" heading - const filteredVisible = visibleHeadings.filter( - (e) => parseInt(e.target.tagName.charAt(1)) <= depth - ) - - if (visibleHeadings.length) { - const visibleId = `#${visibleHeadings[0].target.id}` - const visibleHeadingN = document - .getElementById(visibleHeadings[0].target.id) - ?.tagName.charAt(1) - const firstH = allHeadings.filter((e: any, idx: number) => - deepExists(e, visibleId) ? e : false - ) - let secondH - if (!filteredVisible.length) { - if ( - visibleHeadings.length && - firstH.length && - firstH[0].url !== visibleId && - depth > 2 && - deepExists(allHeadings, visibleId) - ) { - secondH = firstH[0].items.filter((e: any, idx: number) => - deepExists(e, visibleId) ? e : false - ) - setActiveId(secondH[0].url.slice(1).replaceAll('inlinecode', '')) - intersectionActive.current = secondH[0].url.slice(1).replaceAll('inlinecode', '') - } else if ( - visibleHeadings.length && - firstH.length && - firstH[0].url !== visibleId && - depth === 2 && - deepExists(allHeadings, visibleId) && - parseInt(visibleHeadingN ? visibleHeadingN : '0') > depth + 1 - ) { - setActiveId(firstH[0].url.slice(1).replaceAll('inlinecode', '')) - intersectionActive.current = firstH[0].url.slice(1).replaceAll('inlinecode', '') - } else { - setActiveId(firstH[0].url.slice(1).replaceAll('inlinecode', '')) - intersectionActive.current = firstH[0].url.slice(1).replaceAll('inlinecode', '') - } - } else { - setActiveId(filteredVisible[0].target.id) - intersectionActive.current = filteredVisible[0].target.id - } - } else { - if (intersectionActive.current === Object.keys(headingElementsRef.current)[0]) { - setActiveId('') - } - } - } - - const observer = new IntersectionObserver(callback) - - idList.forEach((id: string) => { - const el: HTMLElement | null = document.getElementById(id) - if (el) { - observer.observe(el) - } - }) - - return () => observer.disconnect() - }, [setActiveId]) -} - -const TOC = ({ headings, tocDepth }: any) => { - const [activeId, setActiveId] = React.useState() - const idList = getIds(headings, tocDepth || 2) - React.useEffect(() => { - console.log(tocDepth) - }, []) - useIntersectionObserver(setActiveId, idList, tocDepth, headings) - return ( - - ) -} - -export default TOC diff --git a/src/components/tooltip/Tooltip.tsx b/src/components/tooltip/Tooltip.tsx index f6b5f17804..bc304908e6 100644 --- a/src/components/tooltip/Tooltip.tsx +++ b/src/components/tooltip/Tooltip.tsx @@ -4,8 +4,7 @@ import { mergeProps } from '@react-aria/utils' import { useTooltipTriggerState } from '@react-stately/tooltip' import React, { ReactPortal, useEffect, useLayoutEffect, useRef, useState } from 'react' import { createPortal } from 'react-dom' - -import { ArrowWrapper, TooltipWrapper } from './TooltipStyles' +import styles from './styles.module.scss' const ARROW_SIZE = 5 // in px const SPACING = 8 @@ -107,10 +106,10 @@ export function Tooltip({ id, children, target, position }: TooltipProps): React }, []) return typeof window === 'object' ? createPortal( -
      {children}
      -
      , +

, document.body ) : null @@ -150,7 +149,8 @@ type ArrowProps = { function Arrow({ arrowProps, position }: ArrowProps) { return ( - + >
) -} +} \ No newline at end of file diff --git a/src/components/tooltip/TooltipStyles.tsx b/src/components/tooltip/TooltipStyles.tsx index 10004558d9..e69de29bb2 100644 --- a/src/components/tooltip/TooltipStyles.tsx +++ b/src/components/tooltip/TooltipStyles.tsx @@ -1,57 +0,0 @@ -import styled from 'styled-components' -import { defaultTheme } from '../../theme' - -export const animationStyle: any = { - bottom: ` - animation: slide-top 0.1s cubic-bezier(0, 0, 0.2, 1) forwards; - @keyframes slide-top { - 0% { transform: translateY(-5px); opacity: 0 } - 25% { opacity: 1 } - 100% { transform: translateY(0px); opacity: 1 } - } - `, - top: ` - animation: slide-bottom 0.1s cubic-bezier(0, 0, 0.2, 1) forwards; - @keyframes slide-bottom { - 0% { transform: translateY(5px); opacity: 0 } - 25% { opacity: 1 } - 100% { transform: translateY(0px); opacity: 1 } - } - `, - right: ` - animation: slide-left 0.1s cubic-bezier(0, 0, 0.2, 1) forwards; - @keyframes slide-left { - 0% { transform: translateX(-5px); opacity: 0 } - 25% { opacity: 1 } - 100% { transform: translateX(0px); opacity: 1 } - } - `, - left: ` - animation: slide-right 0.1s cubic-bezier(0, 0, 0.2, 1) forward; - @keyframes slide-right { - 0% { transform: translateX(5px); opacity: 0 } - 25% { opacity: 1 } - 100% { transform: translateX(0px); opacity: 1 } - } - `, -} - -export const TooltipWrapper = styled.div<{ placement: string }>` - ${(props) => props.placement && animationStyle[props.placement]} - .children-wrapper { - display: flex; - align-items: center; - border-radius: 0.375rem; - padding: 0.375rem 0.75rem; - background: ${defaultTheme.colors.gray[800]}; - color: white; - white-space: nowrap; - font-size: 0.875rem; /* 14px */ - line-height: 1.25rem; /* 20px */ - } -` - -export const ArrowWrapper = styled.div` - position: absolute; - border-color: #2d3748; -` diff --git a/src/components/tooltip/styles.module.scss b/src/components/tooltip/styles.module.scss new file mode 100644 index 0000000000..deeef524ad --- /dev/null +++ b/src/components/tooltip/styles.module.scss @@ -0,0 +1,52 @@ +.bottom { + animation: slide-top 0.1s cubic-bezier(0, 0, 0.2, 1) forwards; + @keyframes slide-top { + 0% { transform: translateY(-5px); opacity: 0 } + 25% { opacity: 1 } + 100% { transform: translateY(0px); opacity: 1 } + } +} + +.top { + animation: slide-bottom 0.1s cubic-bezier(0, 0, 0.2, 1) forwards; + @keyframes slide-bottom { + 0% { transform: translateY(5px); opacity: 0 } + 25% { opacity: 1 } + 100% { transform: translateY(0px); opacity: 1 } + } +} + +.right { + animation: slide-left 0.1s cubic-bezier(0, 0, 0.2, 1) forwards; + @keyframes slide-left { + 0% { transform: translateX(-5px); opacity: 0 } + 25% { opacity: 1 } + 100% { transform: translateX(0px); opacity: 1 } + } +} + +.left { + animation: slide-right 0.1s cubic-bezier(0, 0, 0.2, 1) forward; + @keyframes slide-right { + 0% { transform: translateX(5px); opacity: 0 } + 25% { opacity: 1 } + 100% { transform: translateX(0px); opacity: 1 } + } +} + +.childrenWrapper { + display: flex; + align-items: center; + border-radius: 0.375rem; + padding: 0.375rem 0.75rem; + background: var(--gray-800); + color: white; + white-space: nowrap; + font-size: 0.875rem; /* 14px */ + line-height: 1.25rem; /* 20px */ +} + +.arrowWrapper { + position: absolute; + border-color: #2d3748; +} \ No newline at end of file diff --git a/src/components/topSection.tsx b/src/components/topSection.tsx index 02f2b21373..4bc00f766e 100644 --- a/src/components/topSection.tsx +++ b/src/components/topSection.tsx @@ -1,88 +1,30 @@ -import { defaultTheme as theme } from '../theme' import * as React from 'react' -import styled from 'styled-components' +import styles from '../css/topSection.module.scss' -import ParentTitle from './parentTitleComp' -import SwitcherBlock from './switcherBlock' +import SwitcherBlock from './shortcodes/switcherBlock' -const TopSectionWrapper = styled.div` - position: relative; - - .tech-switch-block { - position: relative; - } - - @media (min-width: 0px) and (max-width: ${theme.breakpoints.mobile}) { - .tech-switch-block { - width: 100%; - } - } -` -const Header = styled.div` - display: flex; - justify-content: space-between; - align-items: start; - @media (min-width: 0px) and (max-width: ${theme.breakpoints.mobile}) { - flex-direction: column; - align-items: baseline; - } -` - -const MainTitle = styled.h1` - font-family: ${theme.fonts.display}; - font-size: ${theme.fontSizes[40]} !important; - font-style: normal; - font-weight: bold; - letter-spacing: -0.02em; - color: ${theme.colors.gray[900]}; - margin: 0; - margin-top: 4px; - &.inline-code { - font-size: ${theme.fontSizes[32]}; - padding: 0px 0.2em; - line-height: 3rem; - } - @media (min-width: 0px) and (max-width: ${theme.breakpoints.tabletVertical}) { - font-size: ${theme.fontSizes[24]}; - } - - @media (prefers-color-scheme: dark) { - color: ${theme.colors.gray[100]}; - } -` const TopSection = ({ location, - navigate, - title, slug, langSwitcher, dbSwitcher, - codeStyle, - hideTitle = false, }: any) => { return ( - - -
- {!hideTitle ? ( -
- {title} -
- ) : null} -
+
+
+
{(langSwitcher || dbSwitcher) && ( )}
-
-
+ + ) } diff --git a/src/css/admonition.css b/src/css/admonition.css new file mode 100644 index 0000000000..ff5a35577e --- /dev/null +++ b/src/css/admonition.css @@ -0,0 +1,118 @@ +:root { + --if-alert-color: #2D3748; + --ifm-alert-padding-horizontal: 22px; + --ifm-alert-padding-vertical: 10px; +} +.admonitionHeading_node_modules-\@docusaurus-theme-classic-lib-theme-Admonition-Layout-styles-module:not(:last-child) { + margin-bottom: 0 !important; + font-family: Inter; + font-size: 20px; + text-transform: capitalize; + font-weight: 700; + height: 22px; + line-height: 24px; + text-align: left; +} +.alert { + --ifm-link-hover-color: #2E5297; + border-top: 2px solid var(--ifm-alert-border-color); + border-bottom: 2px solid var(--ifm-alert-border-color); + border-right: 2px solid var(--ifm-alert-border-color); + border-left: 10px solid var(--ifm-alert-border-color); +} +.alert a { + text-decoration-color: var(--link-color); +} +.alert a:hover { + color: var(--ifm-link-hover-color) !important; + text-decoration: underline; + text-decoration-color: var(--ifm-link-hover-color) !important; +} +[data-theme='light'] .alert--warning { + --ifm-alert-background-color: #FFFAF0; + --ifm-alert-background-color-highlight: rgba(255, 186, 0, 0.15); + --ifm-alert-foreground-color: #DD6B20; + --ifm-alert-border-color: #F6AD55; +} +[data-theme='light'] .alert--info { + --ifm-alert-background-color: var(--gray-100); + --ifm-alert-background-color-highlight: rgba(84, 199, 236, 0.15); + --ifm-alert-foreground-color: var(--gray-600); + --ifm-alert-border-color: #CBD5E0; +} + +[data-theme='light'] .alert--success { + --ifm-alert-background-color: #D9F9F6; + --ifm-alert-background-color-highlight: rgba(84, 199, 236, 0.15); + --ifm-alert-foreground-color: #38A169; + --ifm-alert-border-color: #68D391; +} + +[data-theme='light'] .alert--danger { + --ifm-alert-background-color: #FFF5F5; + --ifm-alert-background-color-highlight: rgba(84, 199, 236, 0.15); + --ifm-alert-foreground-color: #E53E3E; + --ifm-alert-border-color: #FC8181; +} + +[data-theme='dark'] { + --if-alert-color: white; +} + +.alert { + width: max-content; + max-width: 100%; +} + +[data-theme='dark'] .alert { + --ifm-link-hover-color: #5196d7; +} +[data-theme='dark'] .alert--warning { + --ifm-alert-background-color: rgba(246, 173, 85, 0.1); + --ifm-alert-background-color-highlight: rgba(255, 186, 0, 0.15); + --ifm-alert-foreground-color: #F6AD55; + --ifm-alert-border-color: #DD6B20; +} +[data-theme='dark'] .alert--info { + --ifm-alert-background-color: #2D3748; + --ifm-alert-background-color-highlight: rgba(84, 199, 236, 0.15); + --ifm-alert-foreground-color: var(--gray-400); + --ifm-alert-border-color: #718096; +} + +[data-theme='dark'] .alert--success { + --ifm-alert-background-color: rgba(113, 232, 223, 0.1); + --ifm-alert-background-color-highlight: rgba(113, 232, 223, 0.1); + --ifm-alert-foreground-color: #68D391; + --ifm-alert-border-color: #38A169; +} + +[data-theme='dark'] .alert--danger { + --ifm-alert-background-color: rgba(252, 129, 129, 0.1); + --ifm-alert-background-color-highlight: rgba(84, 199, 236, 0.15); + --ifm-alert-foreground-color: #FC8181; + --ifm-alert-border-color: #E53E3E; +} + +.alert > div:first-child > span > svg { + height: 22px !important; + width: auto !important; +} + +.alert > div:first-child > span { + height: 22px !important; +} + +.alert > div:first-child { + display: flex; + align-items: center; + margin-bottom: 0 !important; +} + +.alert > div:last-child { + color: var(--ifm-alert-color); +} + +.alert > div:last-child > p { + margin-top: 8px; +} diff --git a/src/css/all.css b/src/css/all.css new file mode 100644 index 0000000000..96e6b7665c --- /dev/null +++ b/src/css/all.css @@ -0,0 +1,1170 @@ +.fa { + font-family: var(--fa-style-family, 'Font Awesome 6 Pro'); + font-weight: var(--fa-style, 900); + } + + .fa, + .fa-classic, + .fa-sharp, + .fas, + .fa-solid, + .far, + .fa-regular, + .fasr, + .fal, + .fa-light, + .fasl, + .fat, + .fa-thin, + .fad, + .fa-duotone, + .fass, + .fa-sharp-solid, + .fab, + .fa-brands { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: var(--fa-display, inline-block); + font-style: normal; + font-variant: normal; + line-height: 1; + text-rendering: auto; + } + + .fas, + .fa-classic, + .fa-solid, + .far, + .fa-regular, + .fal, + .fa-light, + .fat, + .fa-thin { + font-family: 'Font Awesome 6 Pro'; + } + + .fab, + .fa-brands { + font-family: 'Font Awesome 6 Brands'; + } + + .fad, + .fa-classic.fa-duotone, + .fa-duotone { + font-family: 'Font Awesome 6 Duotone'; + } + + .fass, + .fasr, + .fasl, + .fa-sharp { + font-family: 'Font Awesome 6 Sharp'; + } + + .fass, + .fa-sharp { + font-weight: 900; + } + + .fa-1x { + font-size: 1em; + } + + .fa-2x { + font-size: 2em; + } + + .fa-3x { + font-size: 3em; + } + + .fa-4x { + font-size: 4em; + } + + .fa-5x { + font-size: 5em; + } + + .fa-6x { + font-size: 6em; + } + + .fa-7x { + font-size: 7em; + } + + .fa-8x { + font-size: 8em; + } + + .fa-9x { + font-size: 9em; + } + + .fa-10x { + font-size: 10em; + } + + .fa-2xs { + font-size: 0.625em; + line-height: 0.1em; + vertical-align: 0.225em; + } + + .fa-xs { + font-size: 0.75em; + line-height: 0.08333em; + vertical-align: 0.125em; + } + + .fa-sm { + font-size: 0.875em; + line-height: 0.07143em; + vertical-align: 0.05357em; + } + + .fa-lg { + font-size: 1.25em; + line-height: 0.05em; + vertical-align: -0.075em; + } + + .fa-xl { + font-size: 1.5em; + line-height: 0.04167em; + vertical-align: -0.125em; + } + + .fa-2xl { + font-size: 2em; + line-height: 0.03125em; + vertical-align: -0.1875em; + } + + .fa-fw { + text-align: center; + width: 1.25em; + } + + .fa-ul { + list-style-type: none; + margin-left: var(--fa-li-margin, 2.5em); + padding-left: 0; + } + + .fa-ul > li { + position: relative; + } + + .fa-li { + left: calc(var(--fa-li-width, 2em) * -1); + position: absolute; + text-align: center; + width: var(--fa-li-width, 2em); + line-height: inherit; + } + + .fa-border { + border-color: var(--fa-border-color, #eee); + border-radius: var(--fa-border-radius, 0.1em); + border-style: var(--fa-border-style, solid); + border-width: var(--fa-border-width, 0.08em); + padding: var(--fa-border-padding, 0.2em 0.25em 0.15em); + } + + .fa-pull-left { + float: left; + margin-right: var(--fa-pull-margin, 0.3em); + } + + .fa-pull-right { + float: right; + margin-left: var(--fa-pull-margin, 0.3em); + } + + .fa-beat { + -webkit-animation-name: fa-beat; + animation-name: fa-beat; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out); + animation-timing-function: var(--fa-animation-timing, ease-in-out); + } + + .fa-bounce { + -webkit-animation-name: fa-bounce; + animation-name: fa-bounce; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); + } + + .fa-fade { + -webkit-animation-name: fa-fade; + animation-name: fa-fade; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); + } + + .fa-beat-fade { + -webkit-animation-name: fa-beat-fade; + animation-name: fa-beat-fade; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); + } + + .fa-flip { + -webkit-animation-name: fa-flip; + animation-name: fa-flip; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out); + animation-timing-function: var(--fa-animation-timing, ease-in-out); + } + + .fa-shake { + -webkit-animation-name: fa-shake; + animation-name: fa-shake; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, linear); + animation-timing-function: var(--fa-animation-timing, linear); + } + + .fa-spin { + -webkit-animation-name: fa-spin; + animation-name: fa-spin; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 2s); + animation-duration: var(--fa-animation-duration, 2s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, linear); + animation-timing-function: var(--fa-animation-timing, linear); + } + + .fa-spin-reverse { + --fa-animation-direction: reverse; + } + + .fa-pulse, + .fa-spin-pulse { + -webkit-animation-name: fa-spin; + animation-name: fa-spin; + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, steps(8)); + animation-timing-function: var(--fa-animation-timing, steps(8)); + } + + @media (prefers-reduced-motion: reduce) { + .fa-beat, + .fa-bounce, + .fa-fade, + .fa-beat-fade, + .fa-flip, + .fa-pulse, + .fa-shake, + .fa-spin, + .fa-spin-pulse { + -webkit-animation-delay: -1ms; + animation-delay: -1ms; + -webkit-animation-duration: 1ms; + animation-duration: 1ms; + -webkit-animation-iteration-count: 1; + animation-iteration-count: 1; + -webkit-transition-delay: 0s; + transition-delay: 0s; + -webkit-transition-duration: 0s; + transition-duration: 0s; + } + } + + @-webkit-keyframes fa-beat { + 0%, + 90% { + -webkit-transform: scale(1); + transform: scale(1); + } + + 45% { + -webkit-transform: scale(var(--fa-beat-scale, 1.25)); + transform: scale(var(--fa-beat-scale, 1.25)); + } + } + + @keyframes fa-beat { + 0%, + 90% { + -webkit-transform: scale(1); + transform: scale(1); + } + + 45% { + -webkit-transform: scale(var(--fa-beat-scale, 1.25)); + transform: scale(var(--fa-beat-scale, 1.25)); + } + } + + @-webkit-keyframes fa-bounce { + 0% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); + } + + 10% { + -webkit-transform: scale( + var(--fa-bounce-start-scale-x, 1.1), + var(--fa-bounce-start-scale-y, 0.9) + ) + translateY(0); + transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) + translateY(0); + } + + 30% { + -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) + translateY(var(--fa-bounce-height, -0.5em)); + transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) + translateY(var(--fa-bounce-height, -0.5em)); + } + + 50% { + -webkit-transform: scale( + var(--fa-bounce-land-scale-x, 1.05), + var(--fa-bounce-land-scale-y, 0.95) + ) + translateY(0); + transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) + translateY(0); + } + + 57% { + -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); + transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); + } + + 64% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); + } + + 100% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); + } + } + + @keyframes fa-bounce { + 0% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); + } + + 10% { + -webkit-transform: scale( + var(--fa-bounce-start-scale-x, 1.1), + var(--fa-bounce-start-scale-y, 0.9) + ) + translateY(0); + transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) + translateY(0); + } + + 30% { + -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) + translateY(var(--fa-bounce-height, -0.5em)); + transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) + translateY(var(--fa-bounce-height, -0.5em)); + } + + 50% { + -webkit-transform: scale( + var(--fa-bounce-land-scale-x, 1.05), + var(--fa-bounce-land-scale-y, 0.95) + ) + translateY(0); + transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) + translateY(0); + } + + 57% { + -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); + transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); + } + + 64% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); + } + + 100% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); + } + } + + @-webkit-keyframes fa-fade { + 50% { + opacity: var(--fa-fade-opacity, 0.4); + } + } + + @keyframes fa-fade { + 50% { + opacity: var(--fa-fade-opacity, 0.4); + } + } + + @-webkit-keyframes fa-beat-fade { + 0%, + 100% { + opacity: var(--fa-beat-fade-opacity, 0.4); + -webkit-transform: scale(1); + transform: scale(1); + } + + 50% { + opacity: 1; + -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125)); + transform: scale(var(--fa-beat-fade-scale, 1.125)); + } + } + + @keyframes fa-beat-fade { + 0%, + 100% { + opacity: var(--fa-beat-fade-opacity, 0.4); + -webkit-transform: scale(1); + transform: scale(1); + } + + 50% { + opacity: 1; + -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125)); + transform: scale(var(--fa-beat-fade-scale, 1.125)); + } + } + + @-webkit-keyframes fa-flip { + 50% { + -webkit-transform: rotate3d( + var(--fa-flip-x, 0), + var(--fa-flip-y, 1), + var(--fa-flip-z, 0), + var(--fa-flip-angle, -180deg) + ); + transform: rotate3d( + var(--fa-flip-x, 0), + var(--fa-flip-y, 1), + var(--fa-flip-z, 0), + var(--fa-flip-angle, -180deg) + ); + } + } + + @keyframes fa-flip { + 50% { + -webkit-transform: rotate3d( + var(--fa-flip-x, 0), + var(--fa-flip-y, 1), + var(--fa-flip-z, 0), + var(--fa-flip-angle, -180deg) + ); + transform: rotate3d( + var(--fa-flip-x, 0), + var(--fa-flip-y, 1), + var(--fa-flip-z, 0), + var(--fa-flip-angle, -180deg) + ); + } + } + + @-webkit-keyframes fa-shake { + 0% { + -webkit-transform: rotate(-15deg); + transform: rotate(-15deg); + } + + 4% { + -webkit-transform: rotate(15deg); + transform: rotate(15deg); + } + + 8%, + 24% { + -webkit-transform: rotate(-18deg); + transform: rotate(-18deg); + } + + 12%, + 28% { + -webkit-transform: rotate(18deg); + transform: rotate(18deg); + } + + 16% { + -webkit-transform: rotate(-22deg); + transform: rotate(-22deg); + } + + 20% { + -webkit-transform: rotate(22deg); + transform: rotate(22deg); + } + + 32% { + -webkit-transform: rotate(-12deg); + transform: rotate(-12deg); + } + + 36% { + -webkit-transform: rotate(12deg); + transform: rotate(12deg); + } + + 40%, + 100% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + } + + @keyframes fa-shake { + 0% { + -webkit-transform: rotate(-15deg); + transform: rotate(-15deg); + } + + 4% { + -webkit-transform: rotate(15deg); + transform: rotate(15deg); + } + + 8%, + 24% { + -webkit-transform: rotate(-18deg); + transform: rotate(-18deg); + } + + 12%, + 28% { + -webkit-transform: rotate(18deg); + transform: rotate(18deg); + } + + 16% { + -webkit-transform: rotate(-22deg); + transform: rotate(-22deg); + } + + 20% { + -webkit-transform: rotate(22deg); + transform: rotate(22deg); + } + + 32% { + -webkit-transform: rotate(-12deg); + transform: rotate(-12deg); + } + + 36% { + -webkit-transform: rotate(12deg); + transform: rotate(12deg); + } + + 40%, + 100% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + } + + @-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } + } + + @keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } + } + + .fa-rotate-90 { + -webkit-transform: rotate(90deg); + transform: rotate(90deg); + } + + .fa-rotate-180 { + -webkit-transform: rotate(180deg); + transform: rotate(180deg); + } + + .fa-rotate-270 { + -webkit-transform: rotate(270deg); + transform: rotate(270deg); + } + + .fa-flip-horizontal { + -webkit-transform: scale(-1, 1); + transform: scale(-1, 1); + } + + .fa-flip-vertical { + -webkit-transform: scale(1, -1); + transform: scale(1, -1); + } + + .fa-flip-both, + .fa-flip-horizontal.fa-flip-vertical { + -webkit-transform: scale(-1, -1); + transform: scale(-1, -1); + } + + .fa-rotate-by { + -webkit-transform: rotate(var(--fa-rotate-angle, none)); + transform: rotate(var(--fa-rotate-angle, none)); + } + + .fa-stack { + display: inline-block; + height: 2em; + line-height: 2em; + position: relative; + vertical-align: middle; + width: 2.5em; + } + + .fa-stack-1x, + .fa-stack-2x { + left: 0; + position: absolute; + text-align: center; + width: 100%; + z-index: var(--fa-stack-z-index, auto); + } + + .fa-stack-1x { + line-height: inherit; + } + + .fa-stack-2x { + font-size: 2em; + } + + .fa-inverse { + color: var(--fa-inverse, #fff); + } + + /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ + .fa-arrow-up-right::before { + content: '\e09f'; + } + + .fa-arrows-rotate::before { + content: '\f021'; + } + + .fa-bars::before { + content: '\f0c9'; + } + + .fa-bolt::before { + content: '\f0e7'; + } + + .fa-book-open::before { + content: '\f518'; + } + + .fa-book-open-alt::before { + content: '\e0c0'; + } + + .fa-book-open-cover::before { + content: '\e0c0'; + } + + .fa-box::before { + content: '\f466'; + } + + .fa-chart-line-up::before { + content: '\e0e5'; + } + + .fa-chart-simple::before { + content: '\e473'; + } + + .fa-chevron-down::before { + content: '\f078'; + } + + .fa-circle-exclamation::before { + content: '\f06a'; + } + + .fa-comment::before { + content: '\f075'; + } + + .fa-comment-alt-edit::before { + content: '\f4a4'; + } + + .fa-comment-quote::before { + content: '\e14c'; + } + + .fa-database::before { + content: '\f1c0'; + } + + .fa-discord::before { + content: '\f392'; + } + + .fa-envelope::before { + content: '\f0e0'; + } + + .fa-exclamation-circle::before { + content: '\f06a'; + } + + .fa-file-binary::before { + content: '\e175'; + } + + .fa-folder-magnifying-glass::before { + content: '\e18b'; + } + + .fa-folder-search::before { + content: '\e18b'; + } + + .fa-github::before { + content: '\f09b'; + } + + .fa-globe::before { + content: '\f0ac'; + } + + .fa-grid-2::before { + content: '\e196'; + } + + .fa-hands-heart::before { + content: '\f4c3'; + } + + .fa-hands-holding-heart::before { + content: '\f4c3'; + } + + .fa-headset::before { + content: '\f590'; + } + + .fa-layer-group::before { + content: '\f5fd'; + } + + .fa-message-edit::before { + content: '\f4a4'; + } + + .fa-message-pen::before { + content: '\f4a4'; + } + + .fa-navicon::before { + content: '\f0c9'; + } + + .fa-refresh::before { + content: '\f021'; + } + + .fa-server::before { + content: '\f233'; + } + + .fa-signal-stream::before { + content: '\f8dd'; + } + + .fa-slack::before { + content: '\f198'; + } + + .fa-slack-hash::before { + content: '\f198'; + } + + .fa-slash::before { + content: '\f715'; + } + + .fa-question::before { + content: '\3f' + } + + .fa-star::before { + content: '\f005'; + } + + .fa-plus::before { + content: '\2b'; + } + + .fa-rocket::before { + content: '\f135'; + } + + .fa-download::before { + content: '\f019'; + } + + .fa-book::before { + content: '\f02d'; + } + + .fa-arrow-right-arrow-left::before { + content: '\f0ec'; + } + + .fa-eye::before { + content: '\f06e'; + } + + .fa-sync::before { + content: '\f021'; + } + + .fa-terminal::before { + content: '\f120'; + } + + .fa-triangle::before { + content: '\f2ec'; + } + + .fa-twitter::before { + content: '\f099'; + } + + .fa-user::before { + content: '\f007'; + } + + .fa-users-viewfinder::before { + content: '\e595'; + } + + .fa-youtube::before { + content: '\f167'; + } + + .fa-whatsapp::before { + content: '\f232'; + } + + .fa-zap::before { + content: '\f0e7'; + } + + .sr-only, + .fa-sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; + } + + .sr-only-focusable:not(:focus), + .fa-sr-only-focusable:not(:focus) { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; + } + + .fab, + .fa-brands { + font-weight: 400; + } + + :root, + :host { + --fa-style-family-brands: 'Font Awesome 6 Brands'; + --fa-font-brands: normal 400 1em/1 'Font Awesome 6 Brands'; + } + + @font-face { + font-family: 'Font Awesome 6 Brands'; + font-style: normal; + font-weight: 400; + font-display: block; + src: url('/fonts/fa-brands-400.woff2') format('woff2'), + url('/fonts/fa-brands-400.woff2') format('woff2'); + } + @font-face { + font-family: 'Font Awesome 6 Pro'; + font-style: normal; + font-weight: 900; + font-display: block; + src: url('/fonts/fa-solid-900.woff2') format('woff2'), + url('/fonts/fa-solid-900.woff2') format('woff2'); + } + + .fa-rabbit-fast:before, + .fa-rabbit-running:before { + content: '\f709'; + } + + .fa-discord::before { + content: '\f392'; + } + + .fa-github::before { + content: '\f09b'; + } + + .fa-slack::before { + content: '\f198'; + } + + .fa-slack-hash::before { + content: '\f198'; + } + + .fa-twitter::before { + content: '\f099'; + } + + .fa-youtube::before { + content: '\f167'; + } + + .fa-x-twitter::before { + content: '\e61b'; + } + + /*! + * Font Awesome Pro 6.4.0 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license (Commercial License) + * Copyright 2023 Fonticons, Inc. + */ + :root, + :host { + --fa-style-family-classic: 'Font Awesome 6 Pro'; + --fa-font-light: normal 300 1em/1 'Font Awesome 6 Pro'; + } + + @font-face { + font-family: 'Font Awesome 6 Pro'; + font-style: normal; + font-weight: 300; + font-display: block; + src: url('/fonts/fa-light-300.woff2') format('woff2'); + } + + .fal, + .fa-light { + font-weight: 300; + } + + /*! + * Font Awesome Pro 6.4.0 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license (Commercial License) + * Copyright 2023 Fonticons, Inc. + */ + :root, + :host { + --fa-style-family-classic: 'Font Awesome 6 Pro'; + --fa-font-regular: normal 400 1em/1 'Font Awesome 6 Pro'; + } + + @font-face { + font-family: 'Font Awesome 6 Pro'; + font-style: normal; + font-weight: 400; + font-display: block; + src: url('/fonts/fa-regular-400.woff2') format('woff2'); + } + + .far, + .fa-regular { + font-weight: 400; + } + .fa-arrow-right:before { + content: '\f061'; + } + + +@font-face { + font-family: 'Inter'; + src: url('/fonts/Inter-MediumItalic.woff2') format('woff2'); + font-weight: 500; + font-style: italic; + font-display: swap; +} + +@font-face { + font-family: 'Inter'; + src: url('/fonts/Inter-Medium.woff2') format('woff2'); + font-weight: 500; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: 'Inter'; + src: url('/fonts/Inter-Bold.woff2') format('woff2'); + font-weight: bold; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: 'Inter'; + src: url('/fonts/Inter-Regular.woff2') format('woff2'); + font-weight: normal; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: 'Inter'; + src: url('/fonts/Inter-Italic.woff2') format('woff2'); + font-weight: normal; + font-style: italic; + font-display: swap; +} + +@font-face { + font-family: 'Inter'; + src: url('/fonts/Inter-BoldItalic.woff2') format('woff2'); + font-weight: bold; + font-style: italic; + font-display: swap; +} + +@font-face { + font-family: 'Inter Semi'; + src: url('/fonts/Inter-SemiBoldItalic.woff2') format('woff2'); + font-weight: 600; + font-style: italic; + font-display: swap; +} + +@font-face { + font-family: 'Inter Semi'; + src: url('/fonts/Inter-SemiBold.woff2') format('woff2'); + font-weight: 600; + font-style: normal; + font-display: swap; +} + + +@font-face { + font-family: 'Barlow'; + src: url('/fonts/Barlow-Regular.woff2') format('woff2'); + font-weight: normal; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: 'Barlow'; + src: url('/fonts/Barlow-Bold.woff2') format('woff2'); + font-weight: bold; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: 'JetBrainsMono'; + font-weight: 400; + font-style: normal; + font-display: swap; + src: url('/fonts/JetBrainsMono-Regular.woff2'), url('/fonts/JetBrainsMono-Regular.woff2'); +} \ No newline at end of file diff --git a/src/css/collapsible.module.scss b/src/css/collapsible.module.scss new file mode 100644 index 0000000000..6b9346ef30 --- /dev/null +++ b/src/css/collapsible.module.scss @@ -0,0 +1,58 @@ +.wrapper { + margin-bottom: 1rem; +} + +.tab { + position: relative; + overflow: hidden; + .tabContent { + transition: max-height 0.35s; + } + &:before { + content: ''; + position: absolute; + width: 8px; + height: 100%; + left: 0px; + background: #F7FAFC; + border-radius: 4px; + } + p { + margin-top: 0.5rem; + } +} + +.label { + position: relative; + display: block; + color: #0c344b; + font-weight: 600; + line-height: 1.5; + padding-left: 2rem; + cursor: pointer; + @media (prefers-color-scheme: dark) { + color: #F7FAFC; + } +} + +.tabContent { + max-height: 0; + overflow: hidden; + color: #2D3748; + transition: max-height 0.35s, padding 0.35s; + padding-left: 36px; + padding-bottom: 0; + @media (prefers-color-scheme: dark) { + color: #F7FAFC; + } +} + +.input { + position: absolute; + opacity: 0; + z-index: -1; + &:checked ~ .tab-content { + max-height: 2000px; + padding-bottom: 0.5rem; + } +} \ No newline at end of file diff --git a/src/css/custom.css b/src/css/custom.css new file mode 100644 index 0000000000..3809d54123 --- /dev/null +++ b/src/css/custom.css @@ -0,0 +1,1443 @@ +/** + * Any CSS included here will be global. The classic template + * bundles Infima by default. Infima is a CSS framework designed to + * work well for content-centric websites. +*/ +header { + display: flex; + justify-content: space-between; + align-items: start; +} +@media (min-width: 0px) and (max-width: 360px) { + header { + flex-direction: column; + align-items: baseline; + } +} + +details:has(summary) > div > div { + margin-top: 0 !important; + padding-top: 0 !important; + border-top: none !important; +} +details > summary::before { + --docusaurus-details-decoration-color: var(--ifm-alert-border-color) !important; +} + +.table-icon path { + fill: var(--main-font-color); +} +main { + padding-top: 64px; + padding-left: 16px; + padding-right: 16px; +} + + @media (min-width: 997px) { + main:has( > div > .row ){ + max-width: calc(100% - var(--doc-sidebar-width) - 20px) !important; + } + main:has( > div > .row .col--3){ + max-width: calc(100% - var(--doc-sidebar-width)) !important; + } + main { + padding-left: 32px; + padding-top: 0; + } +} +.theme-back-to-top-button { + position: absolute; + display: none; +} + code { + border: none !important; + padding: .05em .3em .2em; + } + + +pre { + background-color: var(--code-bg) !important; + color: var(--gray-500) !important; + /* LINK color: Blue + LINK hover: Dark Blue */ +} + +.header-github-link::before { + content: ''; + width: 24px; + height: 24px; + display: flex; + background-color: var(--ifm-navbar-link-color); + mask-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E"); + transition: background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default); +} + +.header-github-link:hover::before { + background-color: var(--ifm-navbar-link-hover-color); +} + +.theme-doc-sidebar-container { + border-right: none !important; +} + + + +.menu__link { + font-size: 0.875rem; + line-height: 1.25; + margin-bottom: 0.75rem; + margin-left: 10px; + padding: 0; + position: relative; +} +.menu__link:hover { + color: var(--main-font-color) !important; +} + +.menu__link--sublist { + margin-bottom: 0; +} +.menu__link:not(.navbar-login-btn):hover { + background: none; +} + +.theme-doc-sidebar-item-category-level-1 > .menu__list { + border-left: none; + padding-left: 0; +} + +.theme-doc-sidebar-item-category-level-1.menu__list-item { + margin-top: 1.25rem !important; + margin-bottom: 0.75rem; +} + +.theme-doc-sidebar-item-category-level-2 > .menu__list-item-collapsible > .menu__link { + font-weight: bold; + font-size: 0.75rem; + line-height: 0.875rem; + color: var(--ifm-color-content) !important; + letter-spacing: 0.02em; + text-transform: uppercase; + margin-bottom: 0; + margin-top: 8px; +} + +.theme-doc-sidebar-item-category-level-2 > ul { + border-left: none; +} +.menu__list-item-collapsible > a:not([href]), .firstTitle > div > a { + font-size: 1.125rem; + font-weight: 600; + letter-spacing: -0.01em; + color: var(--ifm-color-content) !important; + margin-bottom: 0; +} + +.menu__list { + border-left: 2px solid rgb(226, 232, 240); + margin-top: 8px; +} + +@media (min-width: 996px) { +.theme-doc-sidebar-container nav { + font-family: Inter, sans-serif; + padding-right: 8px !important; + scrollbar-width: auto; + } +} + +.theme-doc-sidebar-menu { + border-left: none !important; +} + +.menu__list-item-collapsible:hover, .menu__list-item-collapsible--active, .menu__link--active:not(.menu__link--sublist), .menu__link--active:not(.menu__link--sublist):hover { + background: none; +} +.menu__list-item { + margin-top: 0 !important; +} + +.menu__list-item-collapsible { + flex-direction: row-reverse; + margin-bottom: 0.75rem; + align-items: center; + position: relative; +} + +.theme-doc-toc-mobile > button::after { + background-position: center; + background-repeat: no-repeat; + background-size: contain; + width: 20px; + height: 20px; +} + +.menu__link--sublist-caret:after { + content: none; +} +.menu__link--sublist-caret:before { + position: absolute; + content: ""; + width: 0px; + height: 0px; + color: inherit; + border-top: 6px solid currentColor; + border-right: 4px solid transparent; + border-bottom: 6px solid transparent; + border-left: 4px solid transparent; + top: 25%; + margin-right: 6px; + right: 100%; +} + +.menu__caret:hover { + background-color: transparent; +} + +.theme-doc-sidebar-item-category-level-1 > ul > .menu__list-item > .menu__list-item-collapsible > a::before { + content: none; +} + +/* .menu__link--sublist-caret::before { + content: none; +} */ + +.menu__caret { + position: absolute; + content: ""; + width: 0px; + padding: 0; + transform: rotate(-90deg); + border-radius: 0; + height: 0px; + color: rgb(113, 128, 150) !important; + border-top: 4.5px solid currentColor; + border-right: 4.5px solid transparent; + border-bottom: 4.5px solid transparent; + border-left: 4.5px solid transparent; + top: 3px; + right: 100%; + margin-right: -8px; +} + +html { + font-family: 'Inter', sans-serif; + -ms-text-size-adjust: none; + -webkit-text-size-adjust: none; + box-sizing: border-box; + overflow-y: scroll; + /* Issue 894 */ + font-size: 16px; +} + +::selection, +pre[class*='language-']::selection, +pre[class*='language-'] ::selection, +code[class*='language-']::selection, +code[class*='language-'] ::selection { + color: var(--white-color); + background: var(--selection-bgd-color); +} + +pre { + margin: 0; +} + +a { + color: var(--link-color); +} +.theme-doc-markdown > *:not(.top-section) a { + text-decoration: underline; +} +h3 { + display: block; + margin-block-start: 1em; + margin-block-end: 1em; +} + +h4 { + margin-block-start: 1.33em; + margin-block-end: 1.33em; +} + +h5 { + margin-block-start: 1.67em; + margin-block-end: 1.67em; +} + +h6 { + margin-block-start: 2.33em; + margin-block-end: 2.33em; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + margin-inline-start: 0px; + margin-inline-end: 0px; +} + +html { + line-height: unset; + -webkit-text-size-adjust: none; +} + +body { + font-family: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI'; +} +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: 'Inter', sans-serif; + font-weight: 500; +} + +h1.inline-code { + display: inline-block; +} + +h2 { + margin: 0; + margin-block-end: 0; + margin-block-start: 0; +} + +section h2, +section h3, +section h4, +section h5, +section h6 { + font-weight: 600; + text-decoration: none; + color: var(--main-font-color); +} + +section h2 { + margin-bottom: 0; +} + +.title-link { + /* margin-left: -24px; + margin-right: 5px; */ + opacity: 0; +} + +h2:hover .title-link, +h3:hover .title-link, +h4:hover .title-link, +h5:hover .title-link, +h6:hover .title-link { + opacity: 1; +} + +h2 code, +h3 code, +h4 code, +h5 code, +h6 code { + font-size: inherit; +} + +* { + box-sizing: border-box; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +img { + max-width: 100%; + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; +} + +p { + margin: 1rem 0; +} + +p, +li { + font-family: 'Inter', sans-serif; + font-style: normal; + font-weight: normal; + font-size: 16px; + line-height: 24px; +} + +kbd { + background: var(--white-color); + color: var(--gray-800); + box-shadow: 0px 1px 1px rgba(47, 55, 71, 0.6), 0px 1px 4px rgba(47, 55, 71, 0.2); + border-bottom: 1px solid rgba(47, 55, 71, 0.2); + border-radius: 4px; + padding: 2px 6px; + vertical-align: baseline; + font-size: 14px !important; + font-family: 'JetBrainsMono' !important; +} + +table { + word-break: normal; + border: 1px solid var(--border-color); + border-radius: 8px; + border-spacing: 0px; + margin: 0 0px 20px; + white-space: inherit; + min-width: min-content; + max-width: 100%; + width: fit-content; +} + + +table code { + color: var(--main-font-color); + line-height: 24px; +} + +table * { + font-size: 13px; +} + +table ul { + padding-left: 12px; +} + +table th { + text-align: left; + font-size: 14px; + font-weight: 600; + border: none; + padding: 12px; +} + +table tr { + border: none; +} + +table thead tr { + border: none; +} + +table td { + border-top: 1px solid var(--border-color); + border-bottom: none; + border-right: none; + border-left: none; + padding: 12px; + vertical-align: top; +} + +blockquote { + font-family: Inter; + font-style: normal; + font-weight: 600; + font-size: 16px; + line-height: 24px; + color: var(--code-inner-color); + padding-left: 2rem; + padding-bottom: 8px; + padding-bottom: 8px; + margin: 2rem 0px; + position: relative; +} + +blockquote pre { + font-weight: normal; +} + +blockquote::before { + content: ''; + position: absolute; + width: 8px; + height: 100%; + left: 0px; + background: var(--code-bgd-color); + border-radius: 5px; +} + +blockquote code { + color: var(--code-inner-color); +} + +blockquote p { + margin: 0; +} + +hr { + margin: 2rem 0; + margin-left: -40px; + margin-right: -40px; + border: 0; + height: 1px; + background: var(--border-color); +} + + +.indigo:hover, .navbar__link--active.indigo, .menu__link--active.indigo { + color: var(--navbar-indigo-color); +} + +.teal:hover, .navbar__link--active.teal, .menu__link--active.teal { + color: var(--navbar-teal-color); +} + +.navbar__item { + padding: 8px; + border-radius: 8px; + font-family: Inter; + font-size: 16px; + line-height: 100%; + font-weight: 600; + text-decoration: none; + white-space: nowrap; + cursor: pointer; +} +.navbar__link--active { + background: var(--navbar-tab-bg); +} + +.navbar__items { + gap: 16px; +} +@media (max-width: 996px) { + .navbar__items:not(.navbar__items--right) { + width: 100%; + flex-direction: row-reverse; + justify-content: space-between; + } + .navbar__inner { + position: relative; + } + .navbar__items--right > :last-child { + left: 0; + z-index: 1; + top: calc(100% + 24px); + } + .navbar__items--right > :last-child > *{ + width: 100%; + } + .navbar-sidebar__backdrop { + z-index: 1; + } + +} + +.logo-link { + font-family: Inter, sans-serif; + font-size: 22px; + font-style: normal; + font-weight: 500; + padding-left: 22px; + position: relative; + line-height: 100%; + color: var(--ifm-navbar-link-color); + transition: transform 0.18s ease-out 0s; + background: transparent; + border: none; + padding: 0px; + cursor: pointer; + position: absolute; + left: 124px; +} +@media (max-width: 996px) { + /* .logo-link { + top: -60px; + left: 119px; + background-color: transparent !important; + } + .logo-link:hover { + transform: none !important; + } */ + .logo-link { + display: inline-block !important; + left: 108px; + } +} + +.logo-link:hover { + transform: translateY(-2px); + color: var(--main-font-color); +} + + +.navbar__logo { + width: var(--doc-sidebar-width); + padding-right: 53px; + margin-right: -1rem; + +} +@media (prefers-color-scheme: dark) { + .navbar__logo { + filter: brightness(100); + } +} +@media (max-width: 996px) { + .navbar__logo { + width: auto; + padding-right: 0; + margin: 0 auto; + } +} +@media (prefers-color-scheme: dark) { + :root[data-theme='light'] .navbar__logo { + filter: none; + } +} + + +.first-item { + margin-left: -16px; +} +@media (max-width: 996px) { + .first-item { + margin-left: 0; + } +} + + +.menu::-webkit-scrollbar { + width: 0.4rem; + height: 0.4rem; + background-color: transparent; +} +.menu::-webkit-scrollbar-thumb { + border-radius: 10px; + background-color: #c5c6c8; +} +.menu::-webkit-scrollbar-track { + border-radius: 10px; + background-color: transparent; +} +.menu::-webkit-scrollbar-corner { + background-color: transparent; + border-color: transparent; +} + +.breadcrumbs__item { + cursor: default; +} +.breadcrumbs__item:has(> span.breadcrumbs__link) { + /* display: none; */ + /* background-color: pink; */ +} + + +.breadcrumbs__link { + padding: 0; + font-size: 16px; + line-height: 1.6rem; + font-weight: normal; + margin: 0px; + color: rgb(113, 128, 150) !important; +} + +.breadcrumbs__item > .breadcrumbs__link:hover { + background: none; +} +.breadcrumbs__item--active > .breadcrumbs__link { + background: none; + padding: 0; +} +.DocSearch-Logo path, .DocSearch-Logo rect { + fill: var(--docsearch-muted-color); +} +.navbar { + box-shadow: none; + border-bottom: 1px solid var(--border-color); + padding-left: 16px; + padding-right: 16px; +} +@media (max-width: 996px) { + .navbar { + padding-right: 16px; + } +} + +.breadcrumbs__item:not(:last-child):after { + background: var(--ifm-breadcrumb-separator) center no-repeat; + opacity: 1; + height: 20px; + transform: translateY(5px); + filter: none; +} + +.breadcrumbs__item[itemscope] > .breadcrumbs__link:hover { + text-decoration: underline; + background: none; + cursor: pointer; + color: rgb(74, 85, 104) !important; +} + +.breadcrumbs__link > svg { + top: 4px; +} + +/* FOOTER */ + +.footer__title { + text-transform: uppercase; + font-weight: 400; + font-size: 1rem; + color: white; + letter-spacing: 0.08em; + margin-top: 0px; + margin-bottom: 3px; + font-family: Barlow, sans-serif; +} + +.footer__item { + color: white; + font-size: 1.125rem; + display: flex; + cursor: pointer; + font-weight: 500; + box-sizing: border-box; + text-decoration: none; + line-height: 1.38889; + padding: 1rem 0px; +} +@media only screen and (min-width: 940px) { + .footer__item { + padding: 0.5rem 0px; + } +} + +.internal > i { + display: none; +} + +.footer__links { + position: relative; + margin: 0; +} + + +.footer__logo { + margin: 0 0 8px 0 !important; + height: 28px; +} + +.footer__col:last-child { + position: absolute; + height: var(--footer-bottom-height); + display: flex; + align-items: center; + top: calc(100% + 220px); + justify-content: flex-end; + padding: 0; + width: auto; + right: 0; +} +@media (min-width: 768px) { + .footer__col:last-child { + top: calc(100% + 280px); + } +} +@media (min-width: 1040px) { + .footer__col:last-child { + top: calc(100% + 300px); + } +} + + + +.footer__col:last-child > .footer__title { + display: none; +} + +.footer__col:last-child > ul { + display: flex; + gap: 20px; + font-size: 1.375rem; + color: white; +} +.footer__col:last-child .footer__item a { + font-size: 1.375rem; + color: white; +} +.footer__col:last-child .footer__item a:hover { + color: var(--brand-primary); + text-decoration: none; +} + +@media (max-width: 940px) { + .footer__col { + flex: none; + } +} + + +.footer__copyright { + text-align: left; + font-size: 1.125rem; +} + +.footer__logo { + margin: 0 0 1.45rem; +} + +.navbar__items--right { + padding-right: 90px; + flex-direction: row-reverse; + position: relative; +} +@media (max-width: 996px) { + .navbar__items--right { + padding-right: 0px; + position: static; + } +} + +.navbar-login-btn { + position: absolute; + margin-bottom: 0; + right: 0; + top: 50%; + transform: translateY(-50%); +} +@media (max-width: 996px) { + .navbar-login-btn { + top: unset; + bottom: 0; + left: 0; + margin-left: 0; + width: calc(100% - 16px); + font-family: Barlow !important; + font-size: 14px !important; + font-weight: 700 !important; + line-height: 20px !important; + letter-spacing: 0em !important; + justify-content: center; + } +} + +.navbar-login-btn:hover { + color: white; +} + +.navbar-login-btn svg { + display: none; +} + +.teal-btn { + padding: 6px 12px; + border-radius: 6px; + font-family: Barlow; + font-size: 14px; + font-weight: 700; + line-height: 20px; + background-color: #16A394; + letter-spacing: 0em; + border: 1px solid rgb(22, 163, 148); + transition: all var(--ifm-transition-fast) var(--ifm-transition-timing-default); + text-align: center; + color: white; +} + +.teal-btn:hover { + border: 1px solid rgb(24, 115, 103); + background-color: rgb(24, 115, 103); + color: white; +} + + +/* TABS */ +.tabs-container { + width: fit-content; + max-width: 100%; +} + +.tabs-container > div:has(.code-children) { + padding: 0; +} + +:root[data-theme='light'] .tabs-container > div { + border-color: #E2E8F0; +} +.tabs-container > div { + padding: 32px; + margin-top: 0 !important; + background-color: var(--main-bgd-color); + border: 1px solid var(--ifm-tabs-bg-color-active); + border-radius: 0px 8px 8px; + font-family: Inter; + font-size: 14px; + font-weight: 400; + line-height: 20px; + letter-spacing: 0em; + text-align: left; +} + +.tabs-container p { + margin: 0; +} + +.tabs__item { + padding: 6px 12px; + margin-right: 4px; + font-weight: 600; + font-size: 0.875rem; + align-items: center; + border-radius: 4px 4px 0px 0px !important; + background-color: var(--ifm-tabs-bg-color); + border: none !important; + /* color: rgb(113, 128, 150); */ + cursor: pointer; + -webkit-box-align: center; + align-items: center; + display: flex; +} + +.tabs__item:hover { + background: var(--ifm-tabs-bg-color-active); + color: var(--ifm-tabs-color-active); +} + +.tabs__item--active { + background: var(--ifm-tabs-bg-color-active); + color: var(--ifm-tabs-color-active); +} + +.tabs__item--active:hover { + background: var(--ifm-tabs-bg-color-active); + color: var(--ifm-tabs-color-active); +} + +.table-of-contents { + border: none; +} +.table-of-contents li { + padding: 0.75rem 0px 0px; + margin: 0; + line-height: 0; +} +.table-of-contents > li { + padding-top: 1.25rem; +} +.table-of-contents::before { + content: "On this page"; + font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + font-style: normal; + font-weight: bold; + font-size: 0.875rem; + line-height: 100%; + letter-spacing: 0.01em; + text-transform: uppercase; + color: var(--ifm-color-content); + margin: 0px; +} +@media (max-width: 996px) { + .table-of-contents::before { + content: unset; + } +} + +.table-of-contents__link:not(:has(> code)) { + background-image: linear-gradient(currentColor,var(--dark-color)); + background-position: 0% 100%; +} +.table-of-contents__link { + text-decoration: none; + color: rgb(113, 128, 150); + font-size: 0.875rem; + line-height: 1rem; + display: inline; + width: fit-content; + background-repeat: no-repeat; + background-size: 0% 2px; + transition: background-size 0.7s ease 0s; +} +@media (prefers-color-scheme: dark) { + .table-of-contents__link { + color: rgb(160, 174, 192); + } +} + +.table-of-contents__link--active { + background-size: 100% 2px; +} + +.DocSearch-Button:hover { + background: var(--docsearch-searchbox-background); +} + +.theme-doc-sidebar-item-link-level-2:first-of-type { + display: none; +} + +.main-wrapper { + background-color: var(--ifm-background-color); + /* background-color: var(--main-bgd-color); */ +} + +.pagination-nav__link { + border: 1px solid var(--border-color); +} + +.pagination-nav__sublabel { + color: var(--ifm-color-content); +} + +.theme-doc-markdown > p { + color: var(--ifm-color-content); +} + +@media (max-width: 996px) { +.navbar-sidebar__brand { + padding-left: 16px; + padding-right: 16px; + } +} + +@media (max-width: 996px) { +.navbar-sidebar__brand > .margin-right--md { + margin-left: auto; + } +} + +@media (max-width: 996px) { +.navbar-sidebar__brand > .navbar-sidebar__close { + margin-left: unset; + } +} + +.mantine-Modal-header .mantine-Text-root { + -webkit-tap-highlight-color: transparent; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + color: inherit; + text-decoration: none; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; + font-weight: 700; + font-size: 1.375rem !important; + line-height: 1.4; + margin: 0px; +} + +.mantine-Modal-header .mantine-Image-image { + margin-bottom: 0 !important; + margin-top: 0 !important; + width: revert !important; + height: revert !important; +} + +.mantine-Modal-body >div:last-child .mantine-Text-root { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; + -webkit-tap-highlight-color: transparent; + color: rgb(134, 142, 150); + font-size: 0.75rem !important; + line-height: 1.55; + text-decoration: none; + font-weight: 500; +} + +.mantine-Image-image { + width: 40px !important; + height: 40px !important; + margin-bottom: -8px !important; + margin-top: -3px !important; +} + +.preview-badge ::after{ + position: absolute; + right: 0px; + font-size: 12px; + font-style: normal; + font-weight: 600; + color: var(--badge-color); + background: var(--badge-bg-color); + border-radius: 5px; + padding: 2px 5px; + text-transform: capitalize; + content: "Preview" +} + + +.table-of-contents__link--active.table-of-contents__link--active:hover code { + color: white !important; +} + +.table-of-contents__link:hover, .table-of-contents__link:hover code { + color: rgb(26, 32, 44) !important; +} + +.table-of-contents__link--active code { + color: white; + background: var(--dark-color); +} + +.pagination-nav__label { + color: var(--main-font-color); +} + +/* Buttons */ + +.button { + border-color: var(--ifm-btn-border-color); + padding: 24px 16px !important; + background-color: transparent; + color: var(--main-font-color); + display: flex; + gap: 10px; + width: fit-content; + align-items: center; +} + +.button:hover { + border-color: var(--ifm-btn-border-color-active); + color: var(--main-font-color); +} + +.button p { + font-family: Barlow !important; + font-size: 18px !important; + font-weight: 600; + line-height: 24px; + margin: 0; + text-align: left; +} + +.hidden-sidebar { + display: none !important; +} + +.theme-doc-markdown { + position: relative; +} + +.top-section { + right: 0; + display: flex; + justify-content: space-between; + align-items: start; + flex-direction: column; +} +@media (min-width: 996px) { + .top-section { + flex-direction: row; + } +} + +.theme-doc-markdown > h1, +.theme-doc-markdown > header > h1 { + font-family: Barlow, system-ui, Arial, sans-serif; + font-style: normal; + font-weight: bold; + letter-spacing: -0.02em; + color: var(--primary-font-color); + margin: 4px 0px 0px; + font-size: 2.5rem !important; + --ifm-h1-font-size: 2.5rem !important; +} + +.tech-select__single-value a { + margin: 2px; + padding-bottom: 2px; + padding-top: 2px; + visibility: visible; + /* color: rgb(51, 51, 51); */ + /* color: var(--gray-900); */ + color: inherit; + flex: 1 1 auto; + display: inline-grid; + grid-area: 1 / 1 / 2 / 3; + grid-template-columns: 0px min-content; + box-sizing: border-box; +} + +.tech-select__option a { + color: inherit !important; + background: transparent; + width: 100%; +} +.tech-select__option { + color: var(--gray-800); + background: transparent; + transition: none !important; + cursor: pointer; +} + + +.tech-select__option:hover{ + color: var(--gray-100) !important; + background-color: #2584ff; +} + +.tech-select__option--is-selected { + color: var(--gray-100); + transition: none !important; + background-color: #2584ff; +} + +@media (prefers-color-scheme: dark) { + .select-container { + .tech-select__control { + background-color: var(--gray-800); + border-color: var(--gray-700); + } + .tech-select__single-value { + color: var(--gray-100); + } + .tech-select__menu { + background-color: var(--gray-800); + + .tech-select__option { + background-color: var(--gray-800); + color: var(--gray-100); + &:hover { + background-color: var(--gray-700); + color: var(--gray-100); + } + } + } + } + [data-theme='light'] { + .select-container { + .tech-select__control { + background-color: transparent; + border-color: hsl(0, 0%, 80%); + } + .tech-select__single-value { + color: rgb(51, 51, 51); + } + .tech-select__menu { + background-color: transparent; + + .tech-select__option { + background-color: var(--gray-100); + color: rgb(51, 51, 51); + &:hover { + background-color: #2584ff; + color: var(--gray-100); + } + } + .tech-select__option--is-selected { + color: var(--gray-100); + background-color: #2584ff; + } + } + } + } +} + +[data-theme='dark'] { + .select-container { + .tech-select__control { + background-color: var(--gray-800); + border-color: var(--gray-700); + } + .tech-select__single-value { + color: var(--gray-100); + } + .tech-select__menu { + background-color: var(--gray-800); + + .tech-select__option { + background-color: var(--gray-800); + color: var(--gray-100); + &:hover { + background-color: var(--gray-700); + color: var(--gray-100); + } + } + } + } + +} + +.DocSearch .DocSearch-HitsFooter > a { + display: none; +} + +.select-container { + > div:first-child { + height: 38px; + border-color: #e2e8f0; + border-radius: 5px; + } +} + +article h1, +article h2, +article h3, +article h4, +article h5, +article h6 { + font-size: revert; + font-family: 'Inter', sans-serif; + color: var(--main-font-color); + font-weight: 600; + text-decoration: none; +} + +#kapa-widget-container { + position: fixed; + bottom: 20px; + right: 20px; + padding: 0px; + border: 2px; + z-index: 199; +} +.mantine-Text-root { + font-size: 1rem !important; +} +#kapa-widget-container .mantine-Button-root { + border: 2px solid #71e8df !important; + border-radius: 8px; + height: 4rem !important; + width: 4rem !important; +} + +[data-collapsed] { + background: transparent; + padding: 0; + margin: var(--ifm-spacing-vertical) 0 !important; + border: none !important; + box-shadow: none; + position: relative; +} + +[data-collapsed] > * { + padding-left: 2rem !important; + color: var(--ifm-alert-color); + font-weight: 600; +} + +[data-collapsed] > summary::before { + left: 16px !important; + top: 0.25rem !important; +} + +[data-collapsed]::before { + content: ""; + position: absolute; + width: 8px; + height: 100%; + left: 0px; + background: rgb(247, 250, 252); + border-radius: 5px; +} + +.language-terminal code > * { + position: relative; + margin-left: 16px; + width: fit-content; +} +.language-terminal code > *::before { + position: absolute; + content: "$"; + left: var(--ifm-pre-padding); +} +.language-terminal code .token { + margin-left: var(--ifm-pre-padding); +} + +h2 code { + font-size: revert !important; +} + +.anchor code { + background: var(--code-inline-bgd-color); + border-radius: 5px; + color: var(--main-font-color); + display: inline-block; + font-family: JetBrainsMono; + font-size: 14px; + font-style: normal; + font-variant: no-common-ligatures no-discretionary-ligatures no-historical-ligatures no-contextual; + line-height: 24px; + padding: .05em .3em .2em; + vertical-align: baseline; + transform: translateY(-2px); +} + +.videoWrapper { + width: 100%; + max-width: 560px; + margin: 0 auto; +} + +.videoWrapper iframe { + width: 100%; +} + +@media (max-width: 996px) { + .clean-btn { + z-index: 1; + font-weight: 600; + font-size: 18px; + position: relative; + } + .navbar { + position: relative; + } + .navbar::after { + content: ""; + height: 68px; + background-color: var(--ifm-navbar-background-color); + z-index: 0; + position: absolute; + left: 0; + width: 100%; + top: 100%; + } + + .navbar-sidebar__items:not(.navbar-sidebar__items--show-secondary) .menu__list { + border: none; + } + .navbar-sidebar__items:not(.navbar-sidebar__items--show-secondary) .menu__link--active { + text-align: left; + margin-left: 10px; + background: var(--navbar-tab-bg); + display: inline-block; + padding: 8px; + border-radius: 4px; + font-weight: 600; + } + .navbar-sidebar__items:not(.navbar-sidebar__items--show-secondary) .menu__link:not(.menu__link--active) { + font-family: Inter; + font-size: 14px; + font-weight: 600; + margin-left: 10px; + line-height: 18px; + letter-spacing: 0em; + text-align: left; + } + .menu__link:not(.navbar-login-btn):not(.menu__link--active) { + color: var(--ifm-navbar-link-color); + } + .menu__link { + font-size: 16px !important; + } + .navbar-sidebar__items > .menu:first-child .menu__link { + padding: 8px; + } + .menu__caret { + top: 6px; + + } + .theme-doc-sidebar-item-category-level-1.menu__list-item { + margin-top: 0 !important; + } + .menu__list-item-collapsible > a:not([href]), .firstTitle > div > a { + font-size: 20px !important; + } + .navbar-sidebar--show .logo-link { + display: none !important; + } + .navbar-sidebar { + z-index: 1; + } +} diff --git a/src/css/docsearch.css b/src/css/docsearch.css new file mode 100644 index 0000000000..b7556891a4 --- /dev/null +++ b/src/css/docsearch.css @@ -0,0 +1,128 @@ +/* SEARCH BAR STYLING */ + +[data-theme='light'] .DocSearch mark { + background: rgb(235, 248, 255); + padding: 2px; + font-weight: bold; + color: rgb(49, 130, 206) !important; +} + +[data-theme='dark'] .DocSearch mark { + background: rgba(235, 248, 255, 0.05); + padding: 2px; + font-weight: bold; + color: rgb(49, 130, 206) !important; +} + + +.DocSearch-HitsFooter > a { + display: none; +} + +.DocSearch-Hit-source { + display: none; +} +.DocSearch-Hit-icon { + display: none; +} +.DocSearch-Hit a { + /* padding: var(--docsearch-spacing); */ +} +.DocSearch-SearchBar { + margin-bottom: 16px; +} +.DocSearch-LoadingIndicator svg, .DocSearch-MagnifierLabel svg { + width: 16px !important; + height: 16px !important; +} +.DocSearch-LoadingIndicator svg, .DocSearch-MagnifierLabel svg path { + stroke: rgb(74, 85, 104); +} + +[data-theme='light'] .searchQueryInput_node_modules-\@docusaurus-theme-search-algolia-lib-theme-SearchPage-styles-module, .searchVersionInput_node_modules-\@docusaurus-theme-search-algolia-lib-theme-SearchPage-styles-module { + border-color: rgba(226, 232, 240, 1) !important; +} +.searchQueryInput_node_modules-\@docusaurus-theme-search-algolia-lib-theme-SearchPage-styles-module:focus, .searchVersionInput_node_modules-\@docusaurus-theme-search-algolia-lib-theme-SearchPage-styles-module:focus { + border-color: rgba(113, 128, 150, 1) !important; +} +[data-theme='dark'] .searchQueryInput_node_modules-\@docusaurus-theme-search-algolia-lib-theme-SearchPage-styles-module, .searchVersionInput_node_modules-\@docusaurus-theme-search-algolia-lib-theme-SearchPage-styles-module { + border-color: rgba(9, 10, 21, 1) !important; +} + +.algoliaLogo_node_modules-\@docusaurus-theme-search-algolia-lib-theme-SearchPage-styles-module { + filter: grayscale(100%); + opacity: 0.4; +} + +html[data-theme='light'] { + --ifm-toc-border-color: rgba(226, 232, 240, 1); + --docsearch-highlight-color: var(--docsearch-hit-background); + --docsearch-modal-width: 1248px; + + --docsearch-text-color: var(--ifm-font-color-base); + /* --docsearch-highlight-color: var(--teal-600); */ + --docsearch-searchbox-shadow: inset 0 0 0 2px #718096; + --docsearch-muted-color: var(--ifm-color-secondary-darkest); + --docsearch-container-background: rgba(94, 100, 112, 0.7); + /* Modal */ + --docsearch-modal-background: var(--gray-200); + /* Search box */ + --docsearch-searchbox-background: var(--ifm-color-secondary); + --docsearch-searchbox-focus-background: var(--ifm-color-white) !important; + /* Hit */ + --docsearch-hit-color: var(--ifm-font-color-base); + --docsearch-hit-active-color: rgb(49, 130, 206); + --docsearch-hit-background: var(--ifm-color-white); + /* Footer */ + --docsearch-footer-background: var(--ifm-color-white); +} +html[data-theme='dark'] { + --docsearch-modal-width: 1248px; + + --docsearch-text-color: var(--ifm-font-color-base); + --docsearch-muted-color: var(--gray-500); + --docsearch-container-background: rgba(47, 55, 69, 0.7); + /* Modal */ + --docsearch-modal-background: #090A15; + /* Search box */ + --docsearch-searchbox-background: var(--ifm-background-color); + --docsearch-searchbox-focus-background: var(--gray-800) !important; + /* Hit */ + --docsearch-hit-color: var(--ifm-font-color-base); + --docsearch-hit-active-color: rgb(49, 130, 206); + --docsearch-hit-background: var(--ifm-color-emphasis-100); + /* Footer */ + --docsearch-footer-background: #1A202C; + --docsearch-key-gradient: linear-gradient( + -26.5deg, + var(--ifm-color-emphasis-200) 0%, + var(--ifm-color-emphasis-100) 100% + ); + --docsearch-highlight-color: var(--docsearch-hit-background); + --docsearch-searchbox-shadow: inset 0 0 0 2px #718096; + --docsearch-footer-shadow: 0px -4px 8px 0px #00000033, 0px 1px 0px 0px #494C6A80 inset; + --docsearch-modal-shadow: 0px 3px 8px 0px #000309, 1px 1px 0px 0px #2C2E40 inset; +} +@media (prefers-color-scheme: dark) { + html[data-theme='dark'] { + --docsearch-modal-background: #090A15; + --docsearch-footer-background: #1A202C; + --docsearch-footer-shadow: 0px -4px 8px 0px #00000033, 0px 1px 0px 0px #494C6A80 inset; + --docsearch-modal-shadow: 0px 3px 8px 0px #000309, 1px 1px 0px 0px #2C2E40 inset; + --docsearch-muted-color: var(--gray-500); + --docsearch-searchbox-background: var(--ifm-background-color); + + --docsearch-key-shadow: inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,0.3); + --docsearch-searchbox-focus-background: var(--gray-800) !important; + } + html[data-theme='light'] { + --docsearch-footer-background: var(--ifm-color-white); + --docsearch-modal-background: var(--gray-200); + --docsearch-modal-shadow: inset 1px 1px 0 0 hsla(0,0%,100%,0.5),0 3px 8px 0 #555a64; + --docsearch-muted-color: var(--ifm-color-secondary-darkest); + --docsearch-searchbox-background: var(--ifm-color-secondary); + + --docsearch-searchbox-focus-background: var(--ifm-color-white) !important; + --docsearch-key-shadow: inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,0.4); + } +} \ No newline at end of file diff --git a/src/css/gettingStarted.module.scss b/src/css/gettingStarted.module.scss new file mode 100644 index 0000000000..f14523214e --- /dev/null +++ b/src/css/gettingStarted.module.scss @@ -0,0 +1,160 @@ +.borderBox { + padding: 24px 24px 32px 24px; + border-radius: 8px; + background: var(--main-bgd-color); + a { + text-decoration: underline; + } + > * { + font-family: Inter; + text-align: left; + letter-spacing: 0em; + line-height: 20px; + font-size: 14px; + :first-child { + margin-top: 0; + } + :last-child { + margin-bottom: 0; + } + } +} + +.boxTitle { + font-family: Barlow, system-ui, Arial, sans-serif; + font-style: normal; + font-weight: bold; + font-size: 2.5rem !important; + line-height: 48px; + letter-spacing: -0.8px; +} + +.grid { + gap: 16px; + display: grid; + margin-top: 24px; + grid-template-columns: none; + @media (min-width: 600px) { + grid-template-columns: 1fr 1fr; + } + a { + + border-color: var(--ifm-btn-border-color); + background: transparent; + color: var(--main-font-color); + &:hover { + border-color: var(--ifm-btn-border-color-active); + background: transparent; + } + } +} + +.linkCardWrapper { + border: 1px solid var(--border-color); + padding: 20px 24px; + border-radius: 8px; + color: var(--main-font-color); + transition: all 300ms ease-out; + display: flex; + flex-direction: column; + text-decoration: none !important; + background: transparent; + &:hover { + border-color: var(--ifm-btn-border-color-active); + background: transparent; + } + .title { + display: inline-block; + h6 { + font-size: 18px; + display: inline-block; + margin: 0; + font-family: Barlow; + font-weight: 600; + line-height: 24px; + letter-spacing: 0px; + text-align: left; + } + } + p { + font-family: Inter; + font-size: 14px; + font-weight: 400; + line-height: 20px; + letter-spacing: 0em; + margin-bottom: 0; + text-align: left; + } +} + +.tab { + padding: 15px; + background-color: var(--main-bgd-color); + border: 1px solid var(--indigo-600); + border-radius: 0px 8px 8px 8px; + font-family: Inter; + font-size: 14px; + font-weight: 400; + line-height: 20px; + letter-spacing: 0em; + text-align: left; + p { + margin-top: 0; + } +} + +.squareWrapper { + width: 90px; + height: 90px; + text-decoration: none; + padding: 22px; + display: inline-block; + border: 1px solid var(--border-color); + background: var(--header-bg-color); + border-radius: 8px; + transition: all 300ms ease-out; + cursor: pointer; + + border-color: var(--ifm-btn-border-color); + background: transparent; + color: var(--main-font-color); + &:hover { + border-color: var(--ifm-btn-border-color-active); + background: transparent; + } + &:active, + &:focus { + background: var(--code-inline-bgd-color); + border-color: var(--indigo-700); + } + img { + width: 100%; + height: 100%; + margin-bottom: 0; + object-fit: contain; + } +} + +.list { + display: grid; + gap: 16px; + margin-top: 16px; + justify-content: space-between; + grid-template-columns: repeat(2, auto); + @media (min-width: 1240px) { + grid-template-columns: repeat(6, auto); + } + @media (min-width: 1025px) and (max-width: 1240px) { + grid-template-columns: repeat(3, auto); + } + @media (min-width: 768px) and (max-width: 1025px) { + grid-template-columns: repeat(6, auto); + } + @media (min-width: 480px) and (max-width: 768px) { + grid-template-columns: repeat(4, auto); + } + @media (min-width: 410px) and (max-width: 479px) { + grid-template-columns: repeat(3, auto); + } + +} \ No newline at end of file diff --git a/src/css/primitives.ts b/src/css/primitives.ts new file mode 100644 index 0000000000..94f318527f --- /dev/null +++ b/src/css/primitives.ts @@ -0,0 +1,253 @@ +export const gray = { + "100": "#F7FAFC", + "200": "#EDF2F7", + "300": "#E2E8F0", + "400": "#CBD5E0", + "500": "#A0AEC0", + "600": "#718096", + "700": "#4A5568", + "800": "#2D3748", + "900": "#1A202C", +} +export const black = "#1A202C" + +export const blueGray = { + "100": "#F7FAFC", + "200": "#EDF2F7", + "300": "#E2E8F0", + "400": "#CBD5E0", + "500": "#A0AEC0", + "600": "#718096", + "700": "#4A5568", + "800": "#2D3748", + "900": "#1A202C", +} + +export const teal = { + "100": "#D9F9F6", + "200": "#B7F4EE", + "300": "#92EFE6", + "400": "#71E8DF", + "500": "#04C8BB", + "600": "#16A394", + "700": "#187367", + "800": "#154F47", + "900": "#154F47", +} + +export const purple = { + "100": "#FAE8FA", + "200": "#F5C9F4", + "300": "#F4A0F1", + "400": "#E76DE3", + "500": "#C742C1", + "600": "#B024AD", + "700": "#891A8A", + "800": "#5B115F", + "900": "#5B115F", +} + +export const indigo = { + "100": "#EBF4FF", + "200": "#C3DAFE", + "300": "#A3BFFA", + "400": "#7F9CF5", + "500": "#667EEA", + "600": "#5A67D8", + "700": "#4C51BF", + "800": "#434190", + "900": "#434190", +} + +export const green = { + "100": "#F0FFF4", + "200": "#C6F6D5", + "300": "#9AE6B4", + "400": "#68D391", + "500": "#48BB78", + "600": "#38A169", + "700": "#276749", + "800": "#22543D", + "900": "#22543D", +} + +export const orange = { + "100": "#FFFAF0", + "200": "#FEEBC8", + "300": "#FBD38D", + "400": "#F6AD55", + "500": "#ED8936", + "600": "#DD6B20", + "700": "#C05621", + "800": "#9C4221", + "900": "#9C4221", +} + +export const red = { + "100": "#FFF5F5", + "200": "#FED7D7", + "300": "#FEB2B2", + "400": "#FC8181", + "500": "#F56565", + "600": "#E53E3E", + "700": "#C53030", + "800": "#9B2C2C", + "900": "#9B2C2C", +} + +export const pink = { + "100": "#FFF5F7", + "200": "#FED7E2", + "300": "#FBB6CE", + "400": "#F687B3", + "500": "#ED64A6", + "600": "#D53F8C", + "700": "#B83280", + "800": "#97266D", + "900": "#702459", +} + +export const blue = { + "100": "#EBF8FF", + "200": "#BEE3F8", + "300": "#90CDF4", + "400": "#63B3ED", + "500": "#4299E1", + "600": "#3182CE", + "700": "#2B6CB0", + "800": "#2C5282", + "900": "#2A4365", +} + +export const yellow = { + "100": "#FFFFF0", + "200": "#FEFCBF", + "300": "#FAF089", + "400": "#F6E05E", + "500": "#ECC94B", + "600": "#D69E2E", + "700": "#B7791F", + "800": "#975A16", + "900": "#744210", +} + +export const colors = { + gray, + red, + indigo, + teal, + blueGray, + green, + purple, + orange, + pink, + yellow, + black, + white: "#fff", + blue, + text: { + primary: `white`, + secondary: `#E2E8F0`, + terciary: `#A0AEC0`, + disabled: `#4A5568`, + darkPrimary: gray[800], + darkSecondary: gray[600] + }, + surface: { + primary: "#090A15", + brand: { + gray: "#1A202C", + darker: "#7F9CF5", + light: "#282B6B", + default: "#5A67D8" + } + } +} + +export const fonts = { + text: `"Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"`, + display: `"Barlow", system-ui, Arial, sans-serif`, + mono: `"JetBrains Mono", Monaco, Consolas, "Liberation Mono", "Courier New", monospace`, + heading: `'Barlow', sans-serif`, +} + +export const baseFontSizes = { + 12: ".75rem", + 14: ".875rem", + 16: "1rem", + 18: "1.125rem", + 20: "1.25rem", + 22: "1.375rem", + 24: "1.5rem", + 26: "1.625rem", + 28: "1.75rem", + 30: "1.875rem", + 32: "2rem", + 36: "2.25rem", + 38: "2.375rem", + 40: "2.5rem", + 48: "3rem", + 56: "3.5rem", + 64: "4rem", + 72: "4.5rem", +} + +export const fontSizes = { + ...baseFontSizes, + small: baseFontSizes[14], + body: baseFontSizes[16], + large: baseFontSizes[20], + display: baseFontSizes[48], + displaySmall: baseFontSizes[24], + displayLarge: baseFontSizes[72], +} + +export const baseSpace = { + 0: "0rem", + 1: "1px", + 2: "0.125rem", + 4: "0.25rem", + 5: `${5 / 16}rem`, // Maybe don't use this even though it's from design? + 6: `${6 / 16}rem`, // Maybe don't use this even though it's from design? + 8: "0.5rem", + 12: "0.75rem", + 14: "0.875rem", + 15: `${15 / 16}rem`, + 16: "1rem", + 18: "1.125rem", + 20: "1.25rem", + 22: "1.375rem", + 24: "1.5rem", + 26: `${26 / 16}rem`, + 30: `${30 / 16}rem`, + 32: "2rem", + 40: "2.5rem", + 45: `${45 / 16}rem`, + 48: "3rem", + 64: "4rem", + 80: "5rem", + 96: "6rem", + 128: "8rem", + 160: "10rem", + 192: "12rem", + 224: "14rem", + 256: "16rem", +} + +export const space = { + ...baseSpace, + none: baseSpace[0], + one: baseSpace[1], + small: baseSpace[8], + medium: baseSpace[12], + large: baseSpace[20], +} + +export const breakpoints = { + mobile: 360, + tabletVertical: 768, + desktopSmall: 940, + tabletHorizontal: 1024, + desktopLarge: 1440, + +} \ No newline at end of file diff --git a/src/css/prism.css b/src/css/prism.css new file mode 100644 index 0000000000..ffe04df2ec --- /dev/null +++ b/src/css/prism.css @@ -0,0 +1,194 @@ +.pre-highlight { + position: relative; +} + +code[class*='language-'], +pre[class*='language-'], +pre[class*='language-'] code { + color: var(--main-font-color) !important; + font-family: 'JetBrainsMono', SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', + 'Courier New', monospace; + font-variant: no-common-ligatures no-discretionary-ligatures no-historical-ligatures no-contextual; + font-size: 14px; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; + + border-radius: 8px; + display: inline-grid; + grid-template-rows: max-content; + width: 100%; + overflow: auto; +} + +code[class*='language-'].is-terminal, +pre[class*='language-'].is-terminal, +pre[class*='language-'].is-terminal code { + background-color: var(--main-font-color) !important; + color: var(--code-inline-bgd-color) !important; +} + +code[class*='language-'].is-terminal::selection, +pre[class*='language-'].is-terminal::selection, +code[class*='language-'].is-terminal ::selection, +pre[class*='language-'].is-terminal ::selection { + background-color: #a0aec0; +} + +@media (prefers-color-scheme: dark) { + + code[class*='language-'].is-terminal, + pre[class*='language-'].is-terminal, + pre[class*='language-'].is-terminal code { + background-color: #2d3748 !important; + color: var(--main-font-color) !important; + } +} + +.is-terminal .line-no { + color: var(--header-btn-color) !important; +} + +.is-terminal .copy-button svg rect { + fill: var(--tag-media-color); +} + +/* Code blocks */ +pre[class*='language-'] { + padding: 1em 0 0 0; + margin: 0; + overflow: auto; +} + +pre[class*='language-'] > code { + padding-bottom: 1em; +} + +:not(pre)>code[class*='language-'], +pre[class*='language-'] { + background: var(--code-bgd-color) !important; +} + +/* Inline code */ +:not(pre)>code[class*='language-'] { + padding: 0.1em; + border-radius: 0.3em; + white-space: normal; +} + +code.inline-code, +.inline-code, +inlinecode { + display: inline; + vertical-align: baseline; + padding: 0.05em 0.3em 0.2em 0.3em; + background: var(--code-inline-bgd-color); + font-size: 14px; + font-feature-settings: 'clig' 0, 'calt' 0; + font-variant: no-common-ligatures no-discretionary-ligatures no-historical-ligatures no-contextual; + font-family: 'JetBrainsMono'; + font-style: normal; + line-height: 24px; + border-radius: 5px; + color: var(--main-font-color); + font-weight: 500; +} + +inlinecode { + font-size: inherit; +} + +.inline-code { + background-color: var(--border-color); +} + +.top-section h1 inlinecode { + font-size: 2rem; +} + +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: var(--code-inner-color) !important; + font-style: normal !important; +} + +.token.namespace { + opacity: 0.7; +} + +.token.property, +.token.tag, +.token.type-args, +.token.number, +.token.constant, +.token.symbol, +.token.deleted { + color: var(--code-token4-color) !important; +} + +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: var(--code-token5-color) !important; +} + +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string { + color: var(--code-token6-color) !important; +} + +.token.atrule, +.token.attr-value, +.token.keyword { + color: var(--code-token1-color) !important; +} + +.token.function, +.token.class-name, +.token[class*='class-name'], +.token.boolean { + color: var(--code-token2-color) !important; +} + +.token.regex, +.token.important, +.token.variable { + color: var(--code-token7-color) !important; +} + +.token.important, +.token.bold { + font-weight: bold; +} + +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} + +.token.annotation { + color: var(--code-token3-color) !important; +} \ No newline at end of file diff --git a/src/css/theming.css b/src/css/theming.css new file mode 100644 index 0000000000..4ff5104c9a --- /dev/null +++ b/src/css/theming.css @@ -0,0 +1,468 @@ + +/* You can override the default Infima variables here. */ +/* PRIMITIVES */ +.details_node_modules-\@docusaurus-theme-classic-lib-theme-Details-styles-module { + --docusaurus-details-decoration-color: transparent !important; +} +:root { + --docsearch-modal-width: 1248px; + --ifm-color-primary: #2e8555; + --ifm-color-primary-dark: #29784c; + --ifm-color-primary-darker: #277148; + --ifm-color-primary-darkest: #205d3b; + --ifm-color-primary-light: #33925d; + --ifm-color-primary-lighter: #359962; + --ifm-color-primary-lightest: #3cad6e; + --ifm-code-font-size: 14px; + --ifm-menu-link-sublist-icon: url("/icons/triangle-right.svg"); + --ifm-breadcrumb-separator: url("/icons/breadcrumb.svg"); + --navbar-teal-color: rgb(24, 115, 103); + --navbar-tab-bg: rgb(237, 242, 247); + --navbar-indigo-color: rgb(76, 81, 191); + --ifm-navbar-height: 80px; + --ifm-color-content: #2D3748; + --ifm-breadcrumb-spacing: 4px; + --ifm-navbar-link-color: rgb(45, 55, 72); + --ifm-footer-background-color: rgb(26, 32, 44); + --ifm-navbar-link-hover-color: rgb(45, 55, 72); + --ifm-link-hover-decoration: none; + --ifm-hover-overlay: var(--indigo-700); + --ifm-color-primary: var(--indigo-600); + --ifm-heading-color: var(--ifm-color-content); + --ifm-menu-color-background-active: var(--main-bgd-color); + --ifm-navbar-sidebar-width: 384px; + --ifm-spacing-horizontal: 8px; + --ifm-pagination-nav-color-hover: #718096; + --ifm-card-background-color: white; + --ifm-link-hover-color: #2E5297; + --code-bg: var(--gray-200); + --docusaurus-added-code-line-bg: rgba(71, 187, 120, 0.1); + --docusaurus-deleted-code-line-bg: rgba(229, 62, 62, 0.1); + --docusaurus-edited-code-line-bg: rgba(10, 104, 255, 0.2); + --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.05); + --ifm-blockquote-border-color: transparent; + --ifm-toc-padding-horizontal: 1rem; + --docusaurus-details-decoration-color: transparent; + --ifm-table-stripe-background: transparent; + --ifm-code-background: #edf2f7; + + --ifm-btn-border-color-active: #718096; + --ifm-btn-border-color: #E2E8F0; + + --ifm-tabs-color-active: #fff; + --ifm-tabs-bg-color: #E2E8F0; + --ifm-tabs-bg-color-active: #718096; + --ifm-tabs-color: #718096; + --main-font-color: #2d3748; + --primary-font-color: var(--gray-800); + --secondary-font-color: #4a5568; + --icon-svg-color: #5A67D8; + --icon-wrapper-bg: rgb(235, 244, 255); + --teal-link-color: #16A394; + --indigo-link-color: #5A67D8; + --teal-card-bg: linear-gradient(102deg, #FFF 6.22%, #E8FFFD 87.23%); + --indigo-card-bg: linear-gradient(102deg, #FFF 6.22%, #F4F5FF 87.23%); + --orm-card-bg: #fff; + --grid-border-color: #cbd5e0; + --community-bgd-color: var(--gray-100); + --shadow-card-bg: #fff; + --badge-bg-color: rgb(237, 242, 247); + --badge-color: rgb(160, 174, 192); + + --main-bgd-color: #f7fafc; + --header-bg-color: #ffffff; + --selection-bgd-color: #0c344b; + --white-color: #ffffff; + --link-color: #3182ce; + --border-color: #e2e8f0; + --code-bgd-color: #f6f8fa; + --code-inline-bgd-color: #edf2f7; + --list-bullet-color: #a0aec0; + --search-highlight-bg-color: #ebf8ff; + --tag-media-color: #2d3748; + --gradient1-color: #2f3747; + --gradient2-color: #0d0f14; + --header-btn-color: #4a5568; + --ifm-footer-background-color: rgb(26, 32, 44); + --footer-bottom-height: 75px; + --brand-primary: rgb(90, 103, 216); + --ifm-hover-overlay: var(--indigo-700); + /* Code blocks */ + --code-inner-color: #718096; + --code-token1-color: #d5408c; + --code-token2-color: #805ad5; + --code-token3-color: #319795; + --code-token4-color: #dd6b21; + --code-token5-color: #690; + --code-token6-color: #9a6e3a; + --code-token7-color: #e90; + --code-linenum-color: #cbd5e0; + --code-added-color: #47bb78; + --code-added-bg-color: #d9f4e6; + --code-deleted-color: #e53e3e; + --code-deleted-bg-color: #f5e4e7; + --code-highlight-color: #a0aec0; + --code-highlight-bg-color: #e2e8f0; + --code-edit-bg-color: #c3dafe; + --code-result-bg-color: #e7edf3; + --ifm-color-primary: var(--indigo-600); + /* Buttons */ + --red-color: #ff4f56; + --green-color: #15bd76; + --grey-color: #3d556b; + --grey-bg-color: #8fa6b2; + --dark-color: rgb(12, 52, 75); + + margin: 0; + font-family: 'Inter', sans-serif; + font-weight: normal; + word-wrap: break-word; + color: var(--main-font-color); + background-color: var(--white-color); + + --homepage-header-bg: rgb(247, 250, 252); + /* Colors */ + --indigo-100: #EBF4FF; + --indigo-200: #C3DAFE; + --indigo-300: #A3BFFA; + --indigo-400: #7F9CF5; + --indigo-500: #667EEA; + --indigo-600: #5A67D8; + --indigo-700: #4C51BF; + --indigo-700: #434190; + + --gray-100: #F7FAFC; + --gray-200: #EDF2F7; + --gray-300: #E2E8F0; + --gray-400: #CBD5E0; + --gray-500: #A0AEC0; + --gray-600: #718096; + --gray-700: #4A5568; + --gray-800: #2D3748; + --gray-900: #1A202C; + --gray-1000: #090a15; + @media (max-width: 996px) { + --ifm-menu-link-sublist-icon: url("/icons/chevron-up-solid.svg"); + --ifm-navbar-padding-horizontal: 0; + } +} +:root[data-theme='light'] { + --docusaurus-added-code-line-bg: rgba(71, 187, 120, 0.1); + --docusaurus-deleted-code-line-bg: rgba(229, 62, 62, 0.1); + --docusaurus-edited-code-line-bg: rgba(10, 104, 255, 0.2); +} +/* For readability concerns, you should choose a lighter palette in dark mode. */ +/* PRIMITES WITH THEME DEFINED BY TOGGLER */ +html[data-theme='dark'] { + --ifm-blockquote-border-color: transparent; + --ifm-color-primary: #25c2a0; + --ifm-color-primary-dark: #21af90; + --ifm-color-primary-darker: #1fa588; + --ifm-color-primary-darkest: #1a8870; + --ifm-color-primary-light: #29d5b0; + --ifm-color-primary-lighter: #32d8b4; + --ifm-color-primary-lightest: #4fddbf; + --navbar-teal-color: rgb(113, 232, 223); + --navbar-tab-bg: rgb(45, 55, 72); + --navbar-indigo-color: rgb(127, 156, 245); + --ifm-color-content: rgb(247, 250, 252); + --ifm-navbar-link-color: #e2e8f0; + --ifm-footer-background-color: rgb(26, 32, 44); + --code-bg: #1A202C; + --ifm-hover-overlay: var(--indigo-700); + /* Generic */ + --ifm-btn-border-color-active: #718096; + --ifm-btn-border-color: #2D3748; + --ifm-tabs-color: #A0AEC0; + --ifm-tabs-bg-color: #1A202C; + --ifm-tabs-bg-color-active: #2D3748; + --main-font-color: #e2e8f0; + --primary-font-color: rgb(247, 250, 252); + --secondary-font-color: rgb(203, 213, 224); + --icon-wrapper-bg: rgb(90, 103, 216); + --icon-svg-color: #F7FAFC; + --teal-link-color: #71E8DF; + --indigo-link-color: #7F9CF5; + --teal-card-bg: linear-gradient(128deg, #090A15 31.75%, #0D3A38 112.39%); + --indigo-card-bg: linear-gradient(128deg, #090A15 31.75%, #181A48 112.39%); + --orm-card-bg: var(--gray-900); + --grid-border-color: var(--gray-700); + --community-bgd-color: var(--gray-900); + --shadow-card-bg: var(--gray-900); + --badge-color: rgb(247, 250, 252); + --badge-bg-color: rgb(45, 55, 72); + --ifm-card-background-color: var(--gray-900); + --ifm-link-hover-color: #5196d7; + --ifm-table-stripe-background: transparent; + + --main-bgd-color: #1a202c; + --border-color: #2d3748; + --header-bg-color: #1a202c; + --selection-bgd-color: #0c344b; + --white-color: #ffffff; + --link-color: #3182ce; + --code-bgd-color: #2d3748; + --code-inline-bgd-color: #2d3748; + --list-bullet-color: #a0aec0; + --search-highlight-bg-color: #ebf8ff; + --tag-media-color: #2d3748; + --gradient1-color: #2f3747; + --gradient2-color: #0d0f14; + --header-btn-color: #4a5568; + --navbar-teal-color: rgb(113, 232, 223); + --navbar-tab-bg: rgb(45, 55, 72); + --navbar-indigo-color: rgb(127, 156, 245); + --ifm-color-content: rgb(247, 250, 252); + --ifm-navbar-background-color: var(--gray-1000); + --ifm-navbar-link-color: #e2e8f0; + /* Code blocks */ + --code-inner-color: #718096; + --code-token1-color: #d5408c; + --code-token2-color: #805ad5; + --code-token3-color: #319795; + --code-token4-color: #dd6b21; + --code-token5-color: #690; + --code-token6-color: #9a6e3a; + --code-token7-color: #e90; + --code-linenum-color: #cbd5e0; + --code-added-color: #47bb78; + --code-added-bg-color: #d9f4e6; + --code-deleted-color: #e53e3e; + --code-deleted-bg-color: #f5e4e7; + --code-highlight-color: #a0aec0; + --code-highlight-bg-color: #4a5568; + --code-edit-bg-color: #c3dafe; + --code-result-bg-color: #e7edf3; + /* Buttons */ + --red-color: #ff4f56; + --green-color: #15bd76; + --grey-color: #3d556b; + --grey-bg-color: #8fa6b2; + --dark-color: rgb(12, 52, 75); + --homepage-header-bg: var(--gray-900); +} + +/* PRIMITES WITH THEME DEFINED */ +@media (prefers-color-scheme: dark) { + /* Theme: Dark OS + Light docs = Light docs */ + :root[data-theme='light'] { + --ifm-color-primary: #2e8555; + --ifm-background-color: #fff; + --ifm-color-primary-dark: #29784c; + --ifm-color-primary-darker: #277148; + --main-font-color: #2d3748; + --ifm-color-primary-darkest: #205d3b; + --ifm-color-primary-light: #33925d; + --ifm-color-primary-lighter: #359962; + --ifm-color-primary-lightest: #3cad6e; + --ifm-code-font-size: 14px; + --ifm-breadcrumb-separator: url("/icons/breadcrumb.svg"); + --navbar-teal-color: rgb(24, 115, 103); + --navbar-tab-bg: rgb(237, 242, 247); + --navbar-indigo-color: rgb(76, 81, 191); + --ifm-navbar-height: 80px; + --ifm-color-content: #2D3748; + --ifm-breadcrumb-spacing: 4px; + --ifm-navbar-link-color: rgb(45, 55, 72); + --ifm-footer-background-color: rgb(26, 32, 44); + --ifm-navbar-link-hover-color: rgb(45, 55, 72); + --ifm-link-hover-decoration: none; + --ifm-hover-overlay: var(--indigo-700); + --ifm-color-primary: var(--indigo-600); + --ifm-heading-color: var(--ifm-color-content); + --ifm-navbar-background-color: #fff; + --docsearch-key-shadow: inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,0.4); + --code-bg: var(--gray-200); + --ifm-tabs-color: #718096; + --ifm-tabs-bg-color: #E2E8F0; + --ifm-tabs-bg-color-active: #718096; + --ifm-btn-border-color-active: #718096; + --ifm-btn-border-color: #E2E8F0; + + --ifm-card-background-color: white; + --main-font-color: #2d3748; + --secondary-font-color: #4a5568; + --primary-font-color: var(--gray-800); + --icon-wrapper-bg: rgb(235, 244, 255); + --icon-svg-color: #5A67D8; + --teal-link-color: #16A394; + --indigo-link-color: #5A67D8; + --teal-card-bg: linear-gradient(102deg, #FFF 6.22%, #E8FFFD 87.23%); + --indigo-card-bg: linear-gradient(102deg, #FFF 6.22%, #F4F5FF 87.23%); + --orm-card-bg: #fff; + --grid-border-color: #cbd5e0; + --community-bgd-color: var(--gray-100); + --shadow-card-bg: #fff; + --badge-bg-color: rgb(237, 242, 247); + --badge-color: rgb(160, 174, 192); + + --main-bgd-color: #f7fafc; + --header-bg-color: #ffffff; + --selection-bgd-color: #0c344b; + --white-color: #ffffff; + --link-color: #3182ce; + --border-color: #e2e8f0; + --code-bgd-color: #f6f8fa; + --code-inline-bgd-color: #edf2f7; + --list-bullet-color: #a0aec0; + --search-highlight-bg-color: #ebf8ff; + --tag-media-color: #2d3748; + --gradient1-color: #2f3747; + --gradient2-color: #0d0f14; + --header-btn-color: #4a5568; + --ifm-footer-background-color: rgb(26, 32, 44); + --footer-bottom-height: 75px; + --ifm-link-hover-color: #2E5297; + --brand-primary: rgb(90, 103, 216); + --ifm-hover-overlay: var(--indigo-700); + /* Code blocks */ + --code-inner-color: #718096; + --code-token1-color: #d5408c; + --code-token2-color: #805ad5; + --code-token3-color: #319795; + --code-token4-color: #dd6b21; + --code-token5-color: #690; + --code-token6-color: #9a6e3a; + --code-token7-color: #e90; + --code-linenum-color: #cbd5e0; + --code-added-color: #47bb78; + --code-added-bg-color: #d9f4e6; + --code-deleted-color: #e53e3e; + --code-deleted-bg-color: #f5e4e7; + --code-highlight-color: #a0aec0; + --code-highlight-bg-color: #e2e8f0; + --code-edit-bg-color: #c3dafe; + --code-result-bg-color: #e7edf3; + --ifm-color-primary: var(--indigo-600); + /* Buttons */ + --red-color: #ff4f56; + --green-color: #15bd76; + --grey-color: #3d556b; + --grey-bg-color: #8fa6b2; + --dark-color: rgb(12, 52, 75); + + margin: 0; + font-family: 'Inter', sans-serif; + font-weight: normal; + word-wrap: break-word; + color: var(--main-font-color); + background-color: var(--white-color); + --homepage-header-bg: rgb(247, 250, 252); + /* Colors */ + --indigo-100: #EBF4FF; + --indigo-200: #C3DAFE; + --indigo-300: #A3BFFA; + --indigo-400: #7F9CF5; + --indigo-500: #667EEA; + --indigo-600: #5A67D8; + --indigo-700: #4C51BF; + --indigo-700: #434190; + + --gray-100: #F7FAFC; + --gray-200: #EDF2F7; + --gray-300: #E2E8F0; + --gray-400: #CBD5E0; + --gray-500: #A0AEC0; + --gray-600: #718096; + --gray-700: #4A5568; + --gray-800: #2D3748; + --gray-900: #1A202C; + --gray-1000: #090a15; + } + :root[data-theme='dark'] { + --ifm-color-primary: #25c2a0; + --ifm-color-primary-dark: #21af90; + --ifm-color-primary-darker: #1fa588; + --ifm-color-primary-darkest: #1a8870; + --ifm-color-primary-light: #29d5b0; + --ifm-color-primary-lighter: #32d8b4; + --ifm-color-primary-lightest: #4fddbf; + --navbar-teal-color: rgb(113, 232, 223); + --navbar-tab-bg: rgb(45, 55, 72); + --navbar-indigo-color: rgb(127, 156, 245); + --ifm-color-content: rgb(247, 250, 252); + --ifm-navbar-link-color: #e2e8f0; + --ifm-footer-background-color: rgb(26, 32, 44); + --ifm-hover-overlay: var(--indigo-700); + /* Generic */ + + + --ifm-btn-border-color-active: #718096; + --ifm-btn-border-color: #2D3748; + --ifm-tabs-color: #A0AEC0; + --ifm-tabs-bg-color: #1A202C; + --ifm-tabs-bg-color-active: #2D3748; + --main-font-color: #e2e8f0; + --primary-font-color: rgb(247, 250, 252); + --secondary-font-color: rgb(203, 213, 224); + --icon-wrapper-bg: rgb(90, 103, 216); + --icon-svg-color: #F7FAFC; + --teal-link-color: #71E8DF; + --indigo-link-color: #7F9CF5; + --teal-card-bg: linear-gradient(128deg, #090A15 31.75%, #0D3A38 112.39%); + --indigo-card-bg: linear-gradient(128deg, #090A15 31.75%, #181A48 112.39%); + --orm-card-bg: var(--gray-900); + --grid-border-color: var(--gray-700); + --community-bgd-color: var(--gray-900); + --shadow-card-bg: var(--gray-900); + --badge-color: rgb(247, 250, 252); + --badge-bg-color: rgb(45, 55, 72); + --code-bg: #1A202C; + + --ifm-card-background-color: var(--gray-900); + --main-bgd-color: #1a202c; + --border-color: #2d3748; + --header-bg-color: #1a202c; + --selection-bgd-color: #0c344b; + --white-color: #ffffff; + --link-color: #3182ce; + --ifm-link-hover-color: #5196d7; + --code-bgd-color: #2d3748; + --code-inline-bgd-color: #2d3748; + --list-bullet-color: #a0aec0; + --search-highlight-bg-color: #ebf8ff; + --tag-media-color: #2d3748; + --gradient1-color: #2f3747; + --gradient2-color: #0d0f14; + --header-btn-color: #4a5568; + --navbar-teal-color: rgb(113, 232, 223); + --navbar-tab-bg: rgb(45, 55, 72); + --navbar-indigo-color: rgb(127, 156, 245); + --ifm-color-content: rgb(247, 250, 252); + --ifm-navbar-background-color: var(--gray-1000); + --ifm-navbar-link-color: #e2e8f0; + /* Code blocks */ + --code-inner-color: #718096; + --code-token1-color: #d5408c; + --code-token2-color: #805ad5; + --code-token3-color: #319795; + --code-token4-color: #dd6b21; + --code-token5-color: #690; + --code-token6-color: #9a6e3a; + --code-token7-color: #e90; + --code-linenum-color: #cbd5e0; + --code-added-color: #47bb78; + --code-added-bg-color: #d9f4e6; + --code-deleted-color: #e53e3e; + --code-deleted-bg-color: #f5e4e7; + --code-highlight-color: #a0aec0; + --code-highlight-bg-color: #4a5568; + --code-edit-bg-color: #c3dafe; + --code-result-bg-color: #e7edf3; + /* Buttons */ + --red-color: #ff4f56; + --green-color: #15bd76; + --grey-color: #3d556b; + --grey-bg-color: #8fa6b2; + --dark-color: rgb(12, 52, 75); + + --homepage-header-bg: var(--gray-900); + } +} + +html[data-theme='dark'] { + --ifm-background-color: var(--gray-1000); + --main-bgd-color: #1a202c; + --border-color: #2d3748; + --white-color: white; +} diff --git a/src/css/topSection.module.scss b/src/css/topSection.module.scss new file mode 100644 index 0000000000..88c8fc4d10 --- /dev/null +++ b/src/css/topSection.module.scss @@ -0,0 +1,25 @@ +.topSectionWrapper { + position: relative; + margin-bottom: 1rem; + + flex-shrink: 0; + .tech-switch-block { + position: relative; + } + + @media (min-width: 0px) and (max-width: 360px) { + .tech-switch-block { + width: 100%; + } + } +} + +.header { + display: flex; + justify-content: space-between; + align-items: start; + @media (min-width: 0px) and (max-width: 360px) { + flex-direction: column; + align-items: baseline; + } +} diff --git a/src/data/indexData.ts b/src/data/indexData.ts new file mode 100644 index 0000000000..e9c0e67a7c --- /dev/null +++ b/src/data/indexData.ts @@ -0,0 +1,199 @@ +export const ProductLinkData = { + porm: { + title: 'Build with Prisma ORM', + icon: 'database', + description: + 'Open source Node.js and TypeScript ORM with an intuitive data model, automated migrations, type-safety, and auto-completion.', + links: [ + { + url: '/getting-started', + title: 'Getting started', + }, + { + url: 'https://github.com/prisma/prisma-examples', + title: 'Example projects', + external: true, + }, + ], + }, + pdp: { + title: 'Grow as your app evolves', + icon: 'triangle', + description: + 'Expand your application capabilities with global database caching, connection pooling and real-time database events.', + links: [ + { + url: '/accelerate', + title: 'Prisma Accelerate', + }, + { + url: '/pulse', + title: 'Prisma Pulse', + }, + ], + }, +} + +export const ORMCardLinkData = { + components: [ + { + url: '/orm/prisma-schema', + title: 'Prisma Schema', + }, + { + url: '/orm/tools/prisma-cli', + title: 'Prisma CLI', + }, + { + url: '/orm/prisma-client', + title: 'Prisma Client', + }, + { + url: '/orm/tools/prisma-studio', + title: 'Prisma Studio', + }, + { + url: '/orm/prisma-migrate', + title: 'Prisma Migrate', + }, + ], + reference: [ + { + url: '/orm/reference/prisma-client-reference', + title: 'Prisma Client API reference', + }, + { + url: '/orm/reference/prisma-schema-reference', + title: 'Prisma schema reference', + }, + { + url: '/orm/reference/error-reference', + title: 'Error message reference', + }, + { + url: '/orm/reference/prisma-cli-reference', + title: 'Prisma CLI reference', + }, + ], +} + +export const ORMGeneralLinkData = [ + { + title: `What is Prisma ORM`, + description: 'An overview of what Prisma ORM is and how it works.', + url: '/orm/overview/introduction/what-is-prisma', + icon: 'fa-regular fa-question', + }, + { + title: `CRUD`, + description: 'How to perform CRUD operations with your generated Prisma Client API. ', + url: '/orm/prisma-client/queries/crud', + icon: 'fa-solid fa-arrow-right-arrow-left', + }, + { + title: `Prisma ORM in your stack`, + description: + 'Use Prisma ORM to build a GraphQL or REST API, or as part of a fullstack application.', + url: '/orm/overview/prisma-in-your-stack', + icon: 'fa-solid fa-server', + }, + { + title: `Preview features`, + description: 'Available preview features and how to enable them.', + url: '/orm/reference/preview-features', + icon: 'fa-solid fa-eye', + }, + { + title: `Adopting Prisma ORM`, + description: 'Migrate to Prisma ORM from other ORMs.', + url: '/orm/more/migrating-to-prisma', + icon: 'fa-solid fa-download', + }, + { + title: `Deployment guides`, + description: + 'Deploy Node.js applications with Prisma Client to platforms like Vercel, AWS Lambda, Netlify and Heroku.', + url: '/orm/prisma-client/deployment', + icon: 'fa-solid fa-book', + }, +] + +export const DatabaseData = [ + { + title: 'PostgreSQL', + icon: "postgresqlsimple", + darkIcon: "postgresqldark", + url: '/orm/overview/databases/postgresql', + }, + { + title: 'MySQL', + icon: "mysqlsimple", + darkIcon: "mysqlsimple", + url: '/orm/overview/databases/mysql', + }, + { + title: 'SQL Server', + icon: "sqlserver", + darkIcon: "sqlserver", + url: '/orm/overview/databases/sql-server', + }, + { + title: 'SQLite', + icon: "sqlite", + darkIcon: "sqlite", + url: '/orm/overview/databases/sqlite', + }, + { + title: 'MongoDB', + icon: "mongodbsimple", + darkIcon: "mongodbsimple", + url: '/orm/overview/databases/mongodb', + }, + { + title: 'CockroachDB', + icon: "cockroachdb", + darkIcon: "cockroachdbdark", + url: '/orm/overview/databases/cockroachdb', + }, + { + title: 'Planetscale', + icon: "planetscale", + darkIcon: "planetscaledark", + url: '/orm/overview/databases/planetscale', + }, + { + title: 'MariaDB', + icon: "mariadb", + darkIcon: "mariadbdark", + url: '/orm/overview/databases/mysql', + }, +] + +export const CommunityLinksData = [ + { + id: 'discord', + title: 'Discord', + description: + 'Chat in real-time, hang out, and share ideas with community members and our team.', + icon: 'fa-brands fa-discord', + link: 'https://pris.ly/discord', + linkText: 'Join our server', + }, + { + id: 'github', + title: 'GitHub', + description: + 'Browse the Prisma ORM source code, send feedback, or join the discussion on GitHub.', + icon: 'fa-brands fa-github', + link: 'https://github.com/prisma', + linkText: 'Contribute in GitHub', + }, + { + id: 'X', + title: 'X', + description: 'Stay up-to-date, join the discussion, and connect with the community on X.', + icon: 'fa-brands fa-x-twitter', + link: 'https://twitter.com/prisma', + linkText: 'Follow us on X', + }, +] diff --git a/src/hooks/useAllArticlesQuery.ts b/src/hooks/useAllArticlesQuery.ts deleted file mode 100644 index 44261d47dd..0000000000 --- a/src/hooks/useAllArticlesQuery.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { graphql, useStaticQuery } from 'gatsby' -import { AllArticles } from '../interfaces/AllArticles.interface' - -export const useAllArticlesQuery = () => { - const { allMdx }: AllArticles = useStaticQuery(graphql` - query { - allMdx { - edges { - node { - frontmatter { - title - duration - navTitle - staticLink - preview - deprecated - earlyaccess - highlight - langSwitcher - hideTitle - search - wide - dbSwitcher - hidePage - codeStyle - } - fields { - slug - modSlug - } - } - } - } - } - `) - - return { allMdx } -} diff --git a/src/hooks/useLayoutQuery.ts b/src/hooks/useLayoutQuery.ts deleted file mode 100644 index 227e04d651..0000000000 --- a/src/hooks/useLayoutQuery.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { graphql, useStaticQuery } from 'gatsby' -import { LayoutQueryData } from '../interfaces/Layout.interface' - -export const useLayoutQuery = () => { - const { site }: LayoutQueryData = useStaticQuery(graphql` - query SiteTitleQuery { - site { - siteMetadata { - # change siteMetaData in 'gatsby-config.js' - title - footer { - newsletter { - text - } - } - header { - secondLevelHeaderMenuItems { - type - to - bucketName - text - hidden - } - } - } - } - } - `) - - return { site } -} diff --git a/src/hooks/useWindowDimensions.ts b/src/hooks/useWindowDimensions.ts deleted file mode 100644 index aed018c897..0000000000 --- a/src/hooks/useWindowDimensions.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { useState, useEffect } from 'react' - -function getWindowDimensions() { - let width = 0 - let height = 0 - if (typeof window !== `undefined`) { - width = window.innerWidth - height = window.innerHeight - } - - return { - width, - height, - } -} - -export default function useWindowDimensions() { - const [windowDimensions, setWindowDimensions] = useState(getWindowDimensions()) - - useEffect(() => { - function handleResize() { - setWindowDimensions(getWindowDimensions()) - } - - window.addEventListener('resize', handleResize) - return () => window.removeEventListener('resize', handleResize) - }, []) - - return windowDimensions -} diff --git a/src/html.tsx b/src/html.tsx deleted file mode 100644 index bbb3a36508..0000000000 --- a/src/html.tsx +++ /dev/null @@ -1,59 +0,0 @@ -import PropTypes from 'prop-types' -import React from 'react' - -const HTML = (props: any) => { - return ( - - - - {/* Kapa.ai script */} - - - {/* OneTrust Cookies Consent Notice start for prisma.io */} - - {/* OneTrust Cookies Consent Notice end for prisma.io */} - - {props.headComponents} - - - {props.preBodyComponents} -
- {props.postBodyComponents} - - - ) -} - -HTML.propTypes = { - htmlAttributes: PropTypes.object, - headComponents: PropTypes.array, - bodyAttributes: PropTypes.object, - preBodyComponents: PropTypes.array, - body: PropTypes.string, - postBodyComponents: PropTypes.array, -} - -export default HTML diff --git a/src/icons/ArrowDown.tsx b/src/icons/ArrowDown.tsx deleted file mode 100644 index 929495bb97..0000000000 --- a/src/icons/ArrowDown.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import * as React from 'react' - -export default (props: any) => ( - - - -) diff --git a/src/icons/ArrowEmail.tsx b/src/icons/ArrowEmail.tsx deleted file mode 100644 index f07ee8b624..0000000000 --- a/src/icons/ArrowEmail.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import * as React from 'react' - -export default (props: any) => ( - - - Subscribe to Prisma newsletter - - - -) diff --git a/src/icons/ArrowRight.tsx b/src/icons/ArrowRight.tsx deleted file mode 100644 index 5b0ef038b9..0000000000 --- a/src/icons/ArrowRight.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import * as React from 'react' - -export default (props: any) => ( - - - -) diff --git a/src/icons/Clear.tsx b/src/icons/Clear.tsx deleted file mode 100644 index cd9a65288f..0000000000 --- a/src/icons/Clear.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import * as React from 'react' - -export default (props: any) => ( - - - -) diff --git a/src/icons/Code.tsx b/src/icons/Code.tsx deleted file mode 100644 index f45120a4ad..0000000000 --- a/src/icons/Code.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import * as React from 'react' - -export default (props: any) => ( - - - - - -) diff --git a/src/icons/Copy.tsx b/src/icons/Copy.tsx deleted file mode 100644 index f138e2454e..0000000000 --- a/src/icons/Copy.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import * as React from 'react' - -export default (props: any) => ( - - - - - -) diff --git a/src/icons/Database.tsx b/src/icons/Database.tsx deleted file mode 100644 index be006b5f26..0000000000 --- a/src/icons/Database.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import * as React from 'react' - -export default (props: any) => ( - - - - - -) diff --git a/src/icons/Display.tsx b/src/icons/Display.tsx deleted file mode 100644 index d2ecf34c04..0000000000 --- a/src/icons/Display.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import * as React from 'react' - -export default (props: any) => ( - - - - - -) diff --git a/src/icons/Down.tsx b/src/icons/Down.tsx deleted file mode 100644 index 9a7e866f5a..0000000000 --- a/src/icons/Down.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import * as React from 'react' - -export default () => ( - - - This page was not helpful. - - - -) diff --git a/src/icons/DownChevron.tsx b/src/icons/DownChevron.tsx deleted file mode 100644 index c9476482c7..0000000000 --- a/src/icons/DownChevron.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import * as React from 'react' - -export default (props: any) => ( - - - -) diff --git a/src/icons/Email.tsx b/src/icons/Email.tsx deleted file mode 100644 index b01ce0eabf..0000000000 --- a/src/icons/Email.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import * as React from 'react' - -export default (props: any) => ( - - - - -) diff --git a/src/icons/ExternalLink.tsx b/src/icons/ExternalLink.tsx deleted file mode 100644 index ea2511a40e..0000000000 --- a/src/icons/ExternalLink.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import * as React from 'react' - -export default () => ( - - - - - -) diff --git a/src/icons/Facebook.tsx b/src/icons/Facebook.tsx deleted file mode 100644 index 700a080887..0000000000 --- a/src/icons/Facebook.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import * as React from 'react' - -export default () => ( - - - -) diff --git a/src/icons/File.tsx b/src/icons/File.tsx deleted file mode 100644 index 9750bdecff..0000000000 --- a/src/icons/File.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import * as React from 'react' - -export default (props: any) => ( - - - - -) diff --git a/src/icons/Git.tsx b/src/icons/Git.tsx deleted file mode 100644 index 62a99e4528..0000000000 --- a/src/icons/Git.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import * as React from 'react' - -export default (props: any) => ( - - - -) diff --git a/src/icons/GitGrey.tsx b/src/icons/GitGrey.tsx deleted file mode 100644 index 6f33f5441c..0000000000 --- a/src/icons/GitGrey.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import * as React from 'react' - -export default () => ( - - - -) diff --git a/src/icons/Github.tsx b/src/icons/Github.tsx deleted file mode 100644 index eea7bd2c80..0000000000 --- a/src/icons/Github.tsx +++ /dev/null @@ -1,7 +0,0 @@ -import * as React from 'react' - -export default (props: any) => ( - - - -) diff --git a/src/icons/HashLink.tsx b/src/icons/HashLink.tsx deleted file mode 100644 index 7eecc35987..0000000000 --- a/src/icons/HashLink.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import * as React from 'react' - -export default (props: any) => ( - - - - - - -) diff --git a/src/icons/Logo.tsx b/src/icons/Logo.tsx deleted file mode 100644 index af6a85248b..0000000000 --- a/src/icons/Logo.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import * as React from 'react' -import styled from 'styled-components' - -export default (props: any) => ( - - - -) - -const Logo = styled.svg<{ fill?: string }>` - height: 26px; - ${(p) => (p.fill ? `fill: ${p.fill}` : `fill: #2d3748`)}; -` diff --git a/src/icons/Prisma.tsx b/src/icons/Prisma.tsx deleted file mode 100644 index 262465a1d4..0000000000 --- a/src/icons/Prisma.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import * as React from 'react' - -export default (props: any) => ( - - - -) diff --git a/src/icons/PrismaLogoGrey.tsx b/src/icons/PrismaLogoGrey.tsx deleted file mode 100644 index 77e49abe51..0000000000 --- a/src/icons/PrismaLogoGrey.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import * as React from 'react' - -export default () => ( - - - -) diff --git a/src/icons/RightChevron.tsx b/src/icons/RightChevron.tsx deleted file mode 100644 index 241cdca9b5..0000000000 --- a/src/icons/RightChevron.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import * as React from 'react' - -export default (props: any) => ( - - - -) diff --git a/src/icons/SQLServer.tsx b/src/icons/SQLServer.tsx deleted file mode 100644 index 138a8eff54..0000000000 --- a/src/icons/SQLServer.tsx +++ /dev/null @@ -1,60 +0,0 @@ -import React from 'react' - -export default () => ( - - - - - - - - - - - - - - - - - - - - - - - -) diff --git a/src/icons/Search.tsx b/src/icons/Search.tsx deleted file mode 100644 index bb11919b08..0000000000 --- a/src/icons/Search.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import * as React from 'react' - -export default (props: any) => ( - - - - -) diff --git a/src/icons/SearchSlash.tsx b/src/icons/SearchSlash.tsx deleted file mode 100644 index c3ef840575..0000000000 --- a/src/icons/SearchSlash.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import * as React from 'react' - -export default (props: any) => ( - - - - -) diff --git a/src/icons/Slack.tsx b/src/icons/Slack.tsx deleted file mode 100644 index b76c378b11..0000000000 --- a/src/icons/Slack.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import * as React from 'react' - -export default () => ( - - - - - - - - - - -) diff --git a/src/icons/Twitter.tsx b/src/icons/Twitter.tsx deleted file mode 100644 index dcf49999ff..0000000000 --- a/src/icons/Twitter.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import * as React from 'react' - -export default () => ( - - - -) diff --git a/src/icons/Up.tsx b/src/icons/Up.tsx deleted file mode 100644 index 7bf5741f06..0000000000 --- a/src/icons/Up.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import * as React from 'react' - -export default () => ( - - - This page was helpful. - - - -) diff --git a/src/icons/UpChevron.tsx b/src/icons/UpChevron.tsx deleted file mode 100644 index 651bffef9d..0000000000 --- a/src/icons/UpChevron.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import * as React from 'react' - -export default (props: any) => ( - - - -) diff --git a/src/icons/Youtube.tsx b/src/icons/Youtube.tsx deleted file mode 100644 index 94b53a7aed..0000000000 --- a/src/icons/Youtube.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import * as React from 'react' - -export default () => ( - - - - -) diff --git a/src/icons/home/CLI.tsx b/src/icons/home/CLI.tsx deleted file mode 100644 index 29c78b74d4..0000000000 --- a/src/icons/home/CLI.tsx +++ /dev/null @@ -1,134 +0,0 @@ -import * as React from 'react' -export default () => ( - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -) diff --git a/src/icons/home/DbLink.tsx b/src/icons/home/DbLink.tsx deleted file mode 100644 index d3a8b178c8..0000000000 --- a/src/icons/home/DbLink.tsx +++ /dev/null @@ -1,289 +0,0 @@ -import * as React from 'react' -export default () => ( - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -) diff --git a/src/icons/home/Schema.tsx b/src/icons/home/Schema.tsx deleted file mode 100644 index a6e4d19949..0000000000 --- a/src/icons/home/Schema.tsx +++ /dev/null @@ -1,134 +0,0 @@ -import * as React from 'react' -export default () => ( - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -) diff --git a/src/icons/technologies/CockroachDB.tsx b/src/icons/technologies/CockroachDB.tsx deleted file mode 100644 index ded9f92451..0000000000 --- a/src/icons/technologies/CockroachDB.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import * as React from 'react' - -// Placeholder - -export default () => ( - - - - - - - - -) diff --git a/src/icons/technologies/CockroachDBDark.tsx b/src/icons/technologies/CockroachDBDark.tsx deleted file mode 100644 index f7e896fc7c..0000000000 --- a/src/icons/technologies/CockroachDBDark.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import React from 'react' - -export default () => ( - - - - - - - - - - - - - - - -) diff --git a/src/icons/technologies/CockroachDBgradient.tsx b/src/icons/technologies/CockroachDBgradient.tsx deleted file mode 100644 index 296bea95d6..0000000000 --- a/src/icons/technologies/CockroachDBgradient.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import React from 'react' - -export default () => ( - - - - - - - - - - -) diff --git a/src/icons/technologies/Flow.tsx b/src/icons/technologies/Flow.tsx deleted file mode 100644 index bcc1d5328f..0000000000 --- a/src/icons/technologies/Flow.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import * as React from 'react' - -export default () => ( - - - - - - - - - - - - -) diff --git a/src/icons/technologies/Go.tsx b/src/icons/technologies/Go.tsx deleted file mode 100644 index 10eb505f10..0000000000 --- a/src/icons/technologies/Go.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import * as React from 'react' - -export default () => ( - - - - - - - - - - - - - - -) diff --git a/src/icons/technologies/MariaDB.tsx b/src/icons/technologies/MariaDB.tsx deleted file mode 100644 index 494499b83b..0000000000 --- a/src/icons/technologies/MariaDB.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import React from 'react' - -export default () => ( - - - - - - - - - - -) diff --git a/src/icons/technologies/NodeJS.tsx b/src/icons/technologies/NodeJS.tsx deleted file mode 100644 index 53b9b26ecc..0000000000 --- a/src/icons/technologies/NodeJS.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import * as React from 'react' - -export const NodeJS = () => ( - - - - -) diff --git a/src/icons/technologies/SQLServer.tsx b/src/icons/technologies/SQLServer.tsx deleted file mode 100644 index 138a8eff54..0000000000 --- a/src/icons/technologies/SQLServer.tsx +++ /dev/null @@ -1,60 +0,0 @@ -import React from 'react' - -export default () => ( - - - - - - - - - - - - - - - - - - - - - - - -) diff --git a/src/icons/technologies/SQLite.tsx b/src/icons/technologies/SQLite.tsx deleted file mode 100644 index d51fabeacf..0000000000 --- a/src/icons/technologies/SQLite.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import * as React from 'react' - -export default (props: any) => ( - - - - - - - - - {/* */} - - - - -) diff --git a/src/images/favicon-16x16.png b/src/images/favicon-16x16.png deleted file mode 100644 index 20f88aa3f0..0000000000 Binary files a/src/images/favicon-16x16.png and /dev/null differ diff --git a/src/images/home-bg.svg b/src/images/home-bg.svg deleted file mode 100644 index 01a1f48b4a..0000000000 --- a/src/images/home-bg.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/images/list-dot.png b/src/images/list-dot.png deleted file mode 100644 index 2d634b16d8..0000000000 Binary files a/src/images/list-dot.png and /dev/null differ diff --git a/src/interfaces/AllArticles.interface.ts b/src/interfaces/AllArticles.interface.ts deleted file mode 100644 index 98cf54c0c4..0000000000 --- a/src/interfaces/AllArticles.interface.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { EdgeNode } from './EdgeNode.interface' - -export interface AllEdges { - edges?: [EdgeNode] | EdgeNode[] -} - -export interface AllArticles { - allMdx: AllEdges -} -export interface AllArticlesQueryData { - data: AllArticles -} diff --git a/src/interfaces/Article.interface.ts b/src/interfaces/Article.interface.ts deleted file mode 100644 index 5117f57205..0000000000 --- a/src/interfaces/Article.interface.ts +++ /dev/null @@ -1,57 +0,0 @@ -export interface ArticleFields { - slug: string - modSlug: string -} - -export interface ArticleFrontmatter { - title: string - navTitle?: string - metaTitle?: string - metaDescription?: string - langSwitcher?: string[] - dbSwitcher?: string[] - search?: boolean - wide?: boolean - staticLink?: boolean - duration?: string - preview?: boolean - earlyaccess?: boolean - highlight?: boolean - toc?: boolean - hidePage?: boolean - tocDepth?: number - codeStyle?: boolean - deprecated?: boolean - hideTitle?: boolean -} - -export interface ArticleData { - mdx: { - fields: ArticleFields - tableOfContents: TableOfContents - body: string - parent: any - frontmatter: ArticleFrontmatter - } - site: { - siteMetadata: { - docsLocation: string - } - } -} - -export interface ArticleQueryData { - data: ArticleData -} - -export interface Fields { - fields: ArticleFields -} - -export interface TableOfContents { - items: { - url: string - title: string - items?: any[] - }[] -} diff --git a/src/interfaces/EdgeNode.interface.ts b/src/interfaces/EdgeNode.interface.ts deleted file mode 100644 index c6c81e2eb3..0000000000 --- a/src/interfaces/EdgeNode.interface.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { ArticleFrontmatter } from './Article.interface' -import { ArticleFields } from './Article.interface' - -export interface EdgeNode { - node: { - frontmatter: { [Property in keyof ArticleFrontmatter]: ArticleFrontmatter[Property] } - fields: { [Property in keyof ArticleFields]: ArticleFields[Property] } - } -} diff --git a/src/interfaces/Layout.interface.ts b/src/interfaces/Layout.interface.ts deleted file mode 100644 index 6e59c29ec7..0000000000 --- a/src/interfaces/Layout.interface.ts +++ /dev/null @@ -1,33 +0,0 @@ -export interface HeaderProps { - secondLevelHeaderMenuItems: { - hidden: boolean - text: string - type: string - to: string - bucketName: string - }[] - wide?: boolean -} - -export interface FooterProps { - newsletter: { text: string } -} - -interface SiteMeta { - siteMetadata: { - header: HeaderProps - title: string - footer: FooterProps - } -} - -export interface LayoutQueryData { - site: SiteMeta -} - -export interface CreatePageContext { - pageContext: { - seoTitle: string - seoDescription: string - } -} diff --git a/src/pages/404.tsx b/src/pages/404.tsx deleted file mode 100644 index 6434c24f51..0000000000 --- a/src/pages/404.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import { defaultTheme as theme } from '../theme' -import * as React from 'react' -import styled from 'styled-components' - -import Layout from '../components/layout' - -const NotFoundWrapper = styled.div` - font-family: 'Inter'; - margin-top: 200px; - padding: ${theme.space[40]}; - display: flex; - flex-direction: column; - align-items: center; - h1 { - font-weight: bold; - } -` - -const NotFoundPage = () => ( - - -

404 | NOT FOUND

- You just hit a route that doesn't exist! -
-
-) - -export default NotFoundPage diff --git a/src/pages/index.module.scss b/src/pages/index.module.scss new file mode 100644 index 0000000000..dd6e57fa29 --- /dev/null +++ b/src/pages/index.module.scss @@ -0,0 +1,513 @@ +/** + * CSS/SCSS files with the .module.{css,scss} suffix will be treated as modules + * and scoped locally. + */ + +.mainHome { + padding: 0; + @media (max-width: 996px){ + margin-top: 32px; + } +} + +.linkCardWrapper { + border: 1px solid var(--border-color); + padding: 20px 24px; + border-radius: 8px; + color: var(--main-font-color); + transition: all 300ms ease-out; + display: flex; + justify-content: center; + flex-direction: column; + text-decoration: none !important; + background: transparent; + &:hover { + border-color: var(--ifm-btn-border-color-active); + background: transparent; + } + .title { + display: inline-block; + h6 { + font-size: 18px; + display: inline-block; + margin: 0; + font-family: Barlow; + font-weight: 600; + line-height: 24px; + letter-spacing: 0px; + text-align: left; + } + } + p { + font-family: Inter; + font-size: 14px; + font-weight: 400; + line-height: 20px; + letter-spacing: 0em; + margin-bottom: 0; + text-align: left; + } +} +.icon { + width: 64px; + height: 64px; + flex-shrink: 0; + border-radius: 8px; + display: inline-flex; + align-items: center; + justify-content: center; + color: var(--icon-svg-color); +} + +.h3 { + font-family: 'Barlow', sans-serif; + font-weight: bold; + font-size: 28px; + letter-spacing: -0.02em; + line-height: 110%; + + @media (min-width: 940px) { + font-size: 36px; + } +} + +.h4 { + font-family: 'Barlow'; + margin: 0; + font-size: 24px; + font-style: normal; + font-weight: 700; + line-height: 110%; + /* 26.4px */ + letter-spacing: -0.48px; +} + +.body { + font-family: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, + 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', + 'Segoe UI Symbol', 'Noto Color Emoji'; + font-weight: normal; + font-size: 18px; + letter-spacing: 0em; + line-height: 140%; +} + +.homepageTopSection { + padding: 64px 12px; + background: #f7fafc; + display: flex; + flex-wrap: wrap; + gap: 40px; + background: var(--homepage-header-bg); +} + +.linkGrid { + display: flex; + max-width: 338px; + gap: 16px; + width: 100%; + flex-wrap: wrap; + justify-content: space-between; + + a, + button { + min-width: calc(50% - 8px); + white-space: nowrap; + font-family: 'Inter'; + font-size: 16px; + font-style: normal; + font-weight: 600; + line-height: 100%; + /* 16px */ + letter-spacing: -0.32px; + text-decoration: none; + + &:hover { + text-decoration: underline; + } + } + + svg { + display: none; + } +} + +.productCardsWrapper { + max-width: 1240px; + width: 100%; + gap: 40px; + margin: 0 auto; + display: flex; + flex-wrap: wrap; +} + +%productCard { + display: grid; + grid-template-rows: auto 1fr auto; + padding: 32px; + width: 100%; + border-radius: 8px; + box-shadow: 0px 18px 42px 0px rgba(23, 43, 77, 0.08), + 0px 4px 26px 0px rgba(23, 43, 77, 0.05), + 0px 0px 46px 0px rgba(23, 43, 77, 0.01); + + h3 { + display: flex; + align-items: center; + gap: 16px; + margin: 0 0 24px 0; + } + + .body { + margin-bottom: 16px; + } + + @media (min-width: 768px) { + width: calc(50% - 20px); + } + +} + +.productCardIndigo { + @extend %productCard; + background: var(--indigo-card-bg); + + a, + button { + color: var(--indigo-link-color) + } + + .icon { + background: var(--indigo-600) + } + +} + +.productCardTeal { + @extend %productCard; + background: var(--teal-card-bg); + + a, + button { + color: var(--teal-link-color) + } + + .icon { + background: var(--teal-link-color); + } + +} + +.ormLinkSectionWrapper { + max-width: 1272px; + margin: 0 auto; + padding: 60px 16px 24px; + + h4 { + color: var(--main-font-color); + margin-bottom: 40px; + } + + >div { + display: grid; + gap: 40px; + grid-template-columns: 100%; + + @media (min-width: 768px) { + grid-template-columns: 1fr 1fr; + } + } +} + +.ormLinkWrapper { + display: flex !important; + gap: 24px; + text-decoration: none; + + h5 { + display: inline-block; + color: var(--main-font-color); + font-size: 18px; + font-style: normal; + font-weight: 700; + line-height: 100%; + /* 18px */ + margin: 0 0 10px 0; + letter-spacing: -0.36px; + font-family: 'Barlow'; + + >span { + font-family: 'Inter'; + } + } + + p { + color: var(--secondary-font-color); + text-overflow: ellipsis; + font-family: 'Inter'; + margin: 0; + font-size: 16px; + font-style: normal; + font-weight: 400; + line-height: 140%; + /* 22.4px */ + } + + >div:last-of-type { + display: inline-block; + } + + .icon { + background: var(--icon-wrapper-bg); + } + + &:hover { + h5 { + text-decoration: underline; + } + } +} + +.ormCardsSection { + max-width: 1262px; + margin: 0 auto; + padding: 40px 11px; +} + +.ormCardsWrapper { + gap: 40px; + display: flex; + flex-direction: column; + + h4 { + margin-bottom: 8px; + } + + .productCardIndigo { + padding: 40px; + background: var(--orm-card-bg); + grid-template-rows: auto auto 1fr; + + >p { + color: var(--secondary-font-color); + margin: 0 0 24px 0; + font-family: 'Inter'; + font-size: 16px; + font-style: normal; + font-weight: 400; + line-height: 140%; + /* 22.4px */ + } + } + + .linkGrid { + gap: 12px; + + a { + min-width: calc(50% - 8px); + width: fit-content; + white-space: nowrap; + } + } + + @media (min-width: 768px) { + flex-direction: row; + } +} + +.databasesSection { + max-width: 1272px; + margin: 0 auto; + padding: 40px 16px; + + h4 { + margin-bottom: 24px; + } + + .body { + color: var(--secondary-font-color); + margin-bottom: 40px; + } + + @media (min-width: 768px) { + padding: 24px 16px 108px; + } +} + +.databaseGrid { + display: flex; + flex-direction: column; + flex-wrap: wrap; + gap: 24px; + + a { + text-decoration: none; + color: unset; + } + + @media only screen and (min-width: 1024px) { + display: grid; + column-gap: 24px; + grid-template-columns: repeat(4, 1fr); + } + + @media (min-width: 940px) and (max-width: 1024px) { + display: grid; + column-gap: 24px; + grid-template-columns: repeat(3, 1fr); + } +} + +.databaseEntry { + height: 84px; + display: flex; + align-items: center; + justify-content: start; + gap: 16px; + flex-basis: 21%; + border-radius: 8px; + padding: 25px 24px; + position: relative; + cursor: pointer; + img { + margin: auto 0; + max-height: 36px; + } + + span { + color: var(--main-font-color); + text-transform: capitalize; + font-family: 'Inter'; + font-weight: 600; + font-size: 24px; + line-height: 1; + } + + @media only screen and (min-width: 940px) { + padding: 0 0; + } +} + +.communityLinksSection { + background: var(--community-bgd-color); + + >div { + padding: 80px 16px; + margin: 0 auto; + max-width: 1272px; + text-align: left; + + a { + text-decoration: none; + } + } + + .sectionHero { + h3 { + margin-top: 0; + margin-bottom: 24px; + color: var(--primary-font-color); + } + + p { + color: var(--secondary-font-color); + margin-bottom: 60px; + margin-top: 0; + } + } +} + +.communityLinkWrapper { + display: grid; + gap: 16px; + text-align: left; + grid-template-columns: 24px 1fr; + height: 100%; + text-decoration: none; + + >div { + display: flex; + flex-direction: column; + justify-content: space-between; + gap: 16px; + } + + h4 { + margin-bottom: 6px; + margin-top: 0; + line-height: 110%; + font-size: 24px; + font-weight: 700; + font-family: 'Barlow'; + color: var(--primary-font-color); + } + + .body { + color: var(--secondary-font-color); + margin: 0; + } + + .link { + color: var(--indigo-link-color); + font-family: 'Inter'; + font-size: 18px; + font-style: normal; + font-weight: 600; + line-height: 88%; + /* 15.84px */ + } +} + +.communityLinksRow { + display: grid; + gap: 24px; + grid-template-rows: repeat(3, minmax(0, 1fr)); + + i { + margin-top: 4px; + color: var(--indigo-600); + } + + @media only screen and (min-width: 768px) { + grid-template-columns: repeat(2, minmax(0, 1fr)); + grid-template-rows: none; + } + + @media only screen and (min-width: 940px) { + grid-template-columns: repeat(3, minmax(0, 1fr)); + grid-template-rows: none; + } +} + +.communityLinkCard { + box-shadow: 0px 5px 3px rgba(23, 43, 77, 0.04), 0px 8px 5px rgba(23, 43, 77, 0.08); + background: var(--shadow-card-bg); + border-radius: 8px; + overflow: hidden; + width: 100%; + cursor: pointer; + max-width: 100%; + margin: 0; + transition: transform 100ms ease; + + &:hover { + transform: scale(1.02); + } + + .content { + padding: 32px 24px; + text-align: left; + + p { + color: #4a5568; + } + + a { + text-decoration: none; + } + + &:hover .link>span:first-of-type { + text-decoration: underline; + } + } +} \ No newline at end of file diff --git a/src/pages/index.tsx b/src/pages/index.tsx index de5cd4cfe4..c3c63b373c 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -1,795 +1,184 @@ -import { useLocation } from '@reach/router' -import { graphql, useStaticQuery } from 'gatsby' -import * as React from 'react' -import styled from 'styled-components' - -import { Icon } from '../components/Icon' -import Layout from '../components/layout' -import Link from '../components/link' -import SEO from '../components/seo' -import ShadowCard from '../components/shadow-card' -import CockroachDB from '../icons/technologies/CockroachDB' -import CockroachDBDark from '../icons/technologies/CockroachDBDark' -import MariaDB from '../icons/technologies/MariaDB' -import MariaDBDark from '../icons/technologies/MariaDBDark' -import MongoDBSimple from '../icons/technologies/MongoDBSimple' -import MySQLSimple from '../icons/technologies/MySQLSimple' -import PlanetScale from '../icons/technologies/PlanetScale' -import PlanetscaleDark from '../icons/technologies/PlanetscaleDark' -import PostgresSQLDark from '../icons/technologies/PostgresSQLDark' -import PostgresSQLSimple from '../icons/technologies/PostgresSQLSimple' -import SQLite from '../icons/technologies/SQLite' -import SQLServer from '../icons/technologies/SQLServer' -import { defaultTheme as theme } from '../theme' - -export const Body = styled.div` - font-family: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, - 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', - 'Segoe UI Symbol', 'Noto Color Emoji'; - font-weight: normal; - font-size: 18px; - letter-spacing: 0em; - line-height: 140%; -` - -export const H3 = styled.h3` - font-family: 'Barlow', sans-serif; - font-weight: bold; - font-size: 28px; - letter-spacing: -0.02em; - line-height: 110%; - @media (min-width: 940px) { - font-size: 36px; - } -` - -const H4 = styled.h4` - font-family: 'Barlow'; - margin: 0; - font-size: 24px; - font-style: normal; - font-weight: 700; - line-height: 110%; /* 26.4px */ - letter-spacing: -0.48px; -` - -const TopSection = styled.div` - padding: 109px 12px 64px; - background: #f7fafc; - display: flex; - flex-wrap: wrap; - gap: 40px; - - @media (prefers-color-scheme: dark) { - background: #242c3a; - } -` - -const IconWrapper = styled.div` - width: 64px; - height: 64px; - flex-shrink: 0; - border-radius: 8px; - display: inline-flex; - align-items: center; - justify-content: center; - .dark { - display: none; - } - - .light { - display: block; - } - @media (prefers-color-scheme: dark) { - .dark { - display: block; - } - - .light { - display: none; - } - } -` - -const ProductCard = styled.div<{ color?: string }>` - display: grid; - grid-template-rows: auto 1fr auto; - padding: 32px; - width: 100%; - border-radius: 8px; - background: ${(p) => - p.color === 'teal' - ? 'linear-gradient(102.41deg, #FFFFFF 6.22%, #E8FFFD 87.23%)' - : 'linear-gradient(102.41deg, #FFFFFF 6.22%, #F4F5FF 87.23%)'}; - box-shadow: 0px 18px 42px 0px rgba(23, 43, 77, 0.08), 0px 4px 26px 0px rgba(23, 43, 77, 0.05), - 0px 0px 46px 0px rgba(23, 43, 77, 0.01); - a, - button { - color: ${(props) => (props.color === 'teal' ? '#16A394' : '#5A67D8')}; - } - @media (min-width: 768px) { - width: calc(50% - 20px); - } - ${H3} { - display: flex; - align-items: center; - gap: 16px; - margin: 0 0 24px 0; - } - ${Body} { - margin-bottom: 16px; - } - ${IconWrapper} { - background: ${(props) => (props.color === 'teal' ? '#16A394' : '#5A67D8')}; - } - - @media (prefers-color-scheme: dark) { - a, - button { - color: ${(props) => - props.color === 'teal' ? `${theme.colors.teal[400]}` : `${theme.colors.indigo[400]}`}; - } - background: ${(p) => - p.color === 'teal' - ? `linear-gradient(287.43deg, rgba(4, 200, 187, 0.17) -34.29%, rgba(4, 200, 187, 0) 98.22%),linear-gradient(99.45deg, #1A202C -40.85%, #27303E 91.67%)` - : `linear-gradient(283.66deg, rgba(102, 126, 234, 0.2418) -32.46%, rgba(102, 126, 234, 0) 96.55%), linear-gradient(99.45deg, #1A202C -40.85%, #27303E 91.67%)`}; - } -` - -const ProductCardsWrapper = styled.div` - max-width: 1240px; - width: 100%; - gap: 40px; - margin: 0 auto; - display: flex; - flex-wrap: wrap; -` - -const LinkGrid = styled.div` - display: flex; - max-width: 338px; - gap: 16px; - width: 100%; - flex-wrap: wrap; - justify-content: space-between; - a, - button { - min-width: calc(50% - 8px); - white-space: nowrap; - font-family: 'Inter'; - font-size: 16px; - font-style: normal; - font-weight: 600; - line-height: 100%; /* 16px */ - letter-spacing: -0.32px; - text-decoration: none; - &:hover { - text-decoration: underline; - } - } - svg { - display: none; - } -` - -const PrismaORMSection = styled.div` - max-width: 1272px; - margin: 0 auto; - padding: 60px 16px 24px; - h4 { - color: #2d3748; - margin-bottom: 40px; - } - @media (prefers-color-scheme: dark) { - h4 { - color: ${theme.colors.gray[100]}; - } - } -` - -const ORMLinkWrapper = styled(Link)` - display: flex !important; - gap: 24px; - text-decoration: none; - - h5 { - display: inline-block; - color: #2d3748; - font-size: 18px; - font-style: normal; - font-weight: 700; - line-height: 100%; /* 18px */ - margin: 0 0 10px 0; - letter-spacing: -0.36px; - font-family: 'Barlow'; - > span { - font-family: 'Inter'; - } - } - > div:last-of-type { - display: inline-block; - } - ${IconWrapper} { - background: #ebf4ff; - } - p { - color: #4a5568; - text-overflow: ellipsis; - font-family: 'Inter'; - margin: 0; - font-size: 16px; - font-style: normal; - font-weight: 400; - line-height: 140%; /* 22.4px */ - } - &:hover h5 { - text-decoration: underline; - } - @media (prefers-color-scheme: dark) { - h5 { - color: ${theme.colors.gray[100]}; - } - p { - color: ${theme.colors.gray[400]}; - } - ${IconWrapper} { - background: ${theme.colors.indigo[600]}; - } - } -` - -const ORMLinkContainer = styled.div` - display: grid; - gap: 40px; - grid-template-columns: 100%; - @media (min-width: 768px) { - grid-template-columns: 1fr 1fr; - } -` - -const ORMCardsSection = styled.div` - max-width: 1262px; - margin: 0 auto; - padding: 40px 11px; -` - -const ORMCardsWrapper = styled.div` - gap: 40px; - display: flex; - flex-direction: column; - @media (min-width: 768px) { - flex-direction: row; - } -` - -const ORMProductCard = styled(ProductCard)` - padding: 40px; - background: #ffffff; - grid-template-rows: auto auto 1fr; - ${H4} { - margin-bottom: 8px; - } - > p { - color: #4a5568; - margin: 0 0 24px 0; - font-family: 'Inter'; - font-size: 16px; - font-style: normal; - font-weight: 400; - line-height: 140%; /* 22.4px */ - } - ${LinkGrid} { - gap: 12px; - a { - min-width: calc(50% - 8px); - width: fit-content; - white-space: nowrap; - } - } - - @media (prefers-color-scheme: dark) { - background: ${theme.colors.gray[800]}; - > p { - color: ${theme.colors.gray[400]}; - } - } -` - -const DatabasesSection = styled.div` - max-width: 1272px; - margin: 0 auto; - padding: 40px 16px; - @media (min-width: 768px) { - padding: 24px 16px 108px; - } - ${H4} { - margin-bottom: 24px; - } - ${Body} { - color: #4a5568; - margin-bottom: 40px; - } - @media (prefers-color-scheme: dark) { - ${Body} { - color: ${theme.colors.gray[400]}; - } - } -` - -const DatabaseGrid = styled.div` - display: flex; - flex-direction: column; - flex-wrap: wrap; - gap: 24px; - @media only screen and (min-width: 1024px) { - display: grid; - column-gap: 44px; - grid-template-columns: repeat(4, 1fr); - } - @media (min-width: 940px) and (max-width: 1024px) { - display: grid; - column-gap: 44px; - grid-template-columns: repeat(3, 1fr); - } - a { - text-decoration: none; - color: unset; - } - .entry { - height: 84px; - display: flex; - align-items: center; - justify-content: start; - gap: 16px; - flex-basis: 21%; - border-radius: 8px; - padding: 25px 24px; - background-color: white; - position: relative; - cursor: pointer; - &::after { - content: ''; - position: absolute; - border-radius: 8px; - inset: 0; - border: 1px solid #cbd5e0; - background-color: transparent; - cursor: pointer; - } - - &:hover { - background-color: #f7fafc; - &::after { - border: 2px solid #5a67d8; - } - } - @media only screen and (min-width: 940px) { - padding: 0 24px; - } - img { - max-height: 36px; - } - span { - color: #2d3748; - text-transform: capitalize; - font-family: 'Inter'; - font-weight: 600; - font-size: 24px; - line-height: 1; - } - } - - .dark { - display: none; - } - - .light { - display: flex; - } - - @media (prefers-color-scheme: dark) { - .dark { - display: flex; - } - - .light { - display: none; - } - } - - @media (prefers-color-scheme: dark) { - .entry { - background: transparent; - &::after { - border-color: ${theme.colors.gray[700]}; - } - &:hover { - background-color: transparent; - } - span { - color: ${theme.colors.gray[300]}; - } - } - } -` - -const DatabaseData = [ - { - title: 'PostgreSQL', - icon: , - darkIcon: , - url: 'orm/overview/databases/postgresql', - }, - { - title: 'MySQL', - icon: , - darkIcon: , - url: 'orm/overview/databases/mysql', - }, - { - title: 'SQL Server', - icon: , - darkIcon: , - url: 'orm/overview/databases/sql-server', - }, - { - title: 'SQLite', - icon: , - darkIcon: , - url: 'orm/overview/databases/sqlite', - }, - { - title: 'MongoDB', - icon: , - darkIcon: , - url: 'orm/overview/databases/mongodb', - }, - { - title: 'CockroachDB', - icon: , - darkIcon: , - url: 'orm/overview/databases/cockroachdb', - }, - { - title: 'Planetscale', - icon: , - darkIcon: , - url: 'orm/overview/databases/planetscale', - }, - { - title: 'MariaDB', - icon: , - darkIcon: , - url: 'orm/overview/databases/mysql', - }, -] - -const CommunitySection = styled.div` - background: #f7fafc; - > div { - padding: 80px 16px; - margin: 0 auto; - max-width: 1272px; - text-align: left; - a { - text-decoration: none; - } - .section-hero { - ${H3} { - margin-top: 0; - margin-bottom: 24px; - color: #2d3748; - } - p { - color: #4a5568; - margin-bottom: 60px; - margin-top: 0; - } - } - - .community-link-wrapper { - display: grid; - gap: 16px; - text-align: left; - grid-template-columns: 24px 1fr; - height: 100%; - text-decoration: none; - > div { - display: flex; - flex-direction: column; - justify-content: space-between; - gap: 16px; - } - h4 { - margin-bottom: 6px; - margin-top: 0; - line-height: 110%; - font-size: 24px; - font-weight: 700; - font-family: 'Barlow'; - color: #1a202c; - } - ${Body} { - color: #4a5568; - margin: 0; - } - .link { - color: #5a67d8; - font-family: 'Inter'; - font-size: 18px; - font-style: normal; - font-weight: 600; - line-height: 88%; /* 15.84px */ - } - } - } - - @media (prefers-color-scheme: dark) { - background: ${theme.colors.gray[800]}; - > div { - .community-link-wrapper { - h4 { - color: ${theme.colors.gray[100]}; - } - ${Body} { - color: ${theme.colors.gray[400]}; - } - .link { - color: ${theme.colors.indigo[400]}; - } - } - .section-hero { - ${H3} { - color: ${theme.colors.gray[100]}; - } - p { - color: ${theme.colors.gray[400]}; - } - } - } - } -` - -const CommunityLinksRow = styled.div` - display: grid; - gap: 24px; - grid-template-rows: repeat(3, minmax(0, 1fr)); - @media only screen and (min-width: 768px) { - grid-template-columns: repeat(2, minmax(0, 1fr)); - grid-template-rows: none; - } - @media only screen and (min-width: 940px) { - grid-template-columns: repeat(3, minmax(0, 1fr)); - grid-template-rows: none; - } - i { - margin-top: 4px; - } -` +import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; +import Link from '@docusaurus/Link'; + +import Layout from '@theme/Layout'; +import Heading from '@theme/Heading'; + +import { Icon } from '@site/src/components/Icon'; +import { + CommunityLinksData, + DatabaseData, + ORMGeneralLinkData, + ORMCardLinkData, + ProductLinkData +} from '@site/src/data/indexData'; + +import styles from './index.module.scss'; + +function HomepageCard({ + className, heading, body, links +}: { + className: string, heading: JSX.Element, body: JSX.Element, links: JSX.Element[] +}): JSX.Element { + return ( +
+ {heading} + {body} +
+ {links} +
+
+ ) +} -const Homepage = () => { - const { site } = useStaticQuery(query) - const changeHitsStatus = (status: boolean) => setShowDocsBtn(!status) - const [showDocsBtn, setShowDocsBtn] = React.useState(true) - const { - siteMetadata: { - title, - description, - homepage: { GeneralLinkData, CommunityLinksData, CardLinks, ORMPlatformLinkData }, - }, - } = site - const location = useLocation() +function HomepageProductCards() { + return ( +
+
+ {Object.keys(ProductLinkData).map((e: keyof typeof ProductLinkData) => { + const cardHeader = +
+ +
+ {ProductLinkData[e].title} +
+ const cardBody =
{ProductLinkData[e].description}
+ const cardLinks = ProductLinkData[e].links.map((link) => ( + + {link.title} {link.external ? <>↗ : <>→} + + )) + return + })} +
+
+ ) +} +function HomepageORMLinksSection() { return ( - - - - {Object.keys(ORMPlatformLinkData).map((e: string) => ( - -

- - - - {ORMPlatformLinkData[e].title} -

- {ORMPlatformLinkData[e].description} - - {ORMPlatformLinkData[e].links.map((e: any) => ( - - {e.title} {e.external ? <>↗ : <>→} - - ))} - -
- ))} -
-
- -

Prisma ORM

- - {GeneralLinkData.map((generalLink: any, index: number) => ( - - - - - -
-
- {generalLink.title} -
-

{generalLink.description}

-
-
- ))} -
-
- - - -

Components

-

- Open source Node.js and TypeScript ORM with an intuitive data model, automated - migrations, type-safety, and auto-completion. -

+
+ Prisma ORM +
+ {ORMGeneralLinkData.map((link, index) => ( + +
+ +
- - {CardLinks.components.map((card: any) => ( - {card.title} → - ))} - +
{link.title}
+

{link.description}

- + + ))} +
+
+ ) +} - -

Reference

-

- Open source Node.js and TypeScript ORM with an intuitive data model, automated - migrations, type-safety, and auto-completion. -

-
- - {CardLinks.reference.map((card: any) => ( - {card.title} → - ))} - +function HomepageORMCards() { + return ( +
+
+ {Object.keys(ORMCardLinkData).map((e) => { + const cardHeader = {e[0].toUpperCase() + e.substring(1).toLowerCase()}; + const cardBody =

Open source Node.js and TypeScript ORM with an intuitive data model, automated migrations, type-safety, and auto-completion.

+ const links = ORMCardLinkData[e].map((card) => ({card.title} →)) + return + })} +
+
+ ) +} + +function HomepageDatabasesSection() { + return ( +
+ Databases +
+ Prisma ORM works seamlessly across most popular databases and service providers.
+ Refer to our Database features matrix for information about supported features and types for each database. +
+
+ ) +} + +function HomepageCommunitySection() { + return ( + ) } -export default Homepage - -export const query = graphql` - query Homepage { - site { - siteMetadata { - title - description - homepage { - GeneralLinkData { - title - description - url - icon - } - CardLinks { - components { - url - title - } - reference { - url - title - } - } - CommunityLinksData { - id - title - description - icon - link - linkText - } - ORMPlatformLinkData { - porm { - title - description - icon - links { - url - title - external - } - } - pdp { - title - icon - description - links { - url - title - } - } - } - } - } - } - } -` - -export const Head = () => { - const { site } = useStaticQuery(query) +export default function Home(): JSX.Element { const { - siteMetadata: { title, description }, - } = site - return + siteConfig: { title }, + } = useDocusaurusContext(); + return ( + +
+ + + + + +
+
+ ); } + diff --git a/src/styles/all.css b/src/styles/all.css deleted file mode 100644 index eaf63bb31d..0000000000 --- a/src/styles/all.css +++ /dev/null @@ -1,1050 +0,0 @@ -.fa { - font-family: var(--fa-style-family, 'Font Awesome 6 Pro'); - font-weight: var(--fa-style, 900); -} - -.fa, -.fa-classic, -.fa-sharp, -.fas, -.fa-solid, -.far, -.fa-regular, -.fasr, -.fal, -.fa-light, -.fasl, -.fat, -.fa-thin, -.fad, -.fa-duotone, -.fass, -.fa-sharp-solid, -.fab, -.fa-brands { - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; - display: var(--fa-display, inline-block); - font-style: normal; - font-variant: normal; - line-height: 1; - text-rendering: auto; -} - -.fas, -.fa-classic, -.fa-solid, -.far, -.fa-regular, -.fal, -.fa-light, -.fat, -.fa-thin { - font-family: 'Font Awesome 6 Pro'; -} - -.fab, -.fa-brands { - font-family: 'Font Awesome 6 Brands'; -} - -.fad, -.fa-classic.fa-duotone, -.fa-duotone { - font-family: 'Font Awesome 6 Duotone'; -} - -.fass, -.fasr, -.fasl, -.fa-sharp { - font-family: 'Font Awesome 6 Sharp'; -} - -.fass, -.fa-sharp { - font-weight: 900; -} - -.fa-1x { - font-size: 1em; -} - -.fa-2x { - font-size: 2em; -} - -.fa-3x { - font-size: 3em; -} - -.fa-4x { - font-size: 4em; -} - -.fa-5x { - font-size: 5em; -} - -.fa-6x { - font-size: 6em; -} - -.fa-7x { - font-size: 7em; -} - -.fa-8x { - font-size: 8em; -} - -.fa-9x { - font-size: 9em; -} - -.fa-10x { - font-size: 10em; -} - -.fa-2xs { - font-size: 0.625em; - line-height: 0.1em; - vertical-align: 0.225em; -} - -.fa-xs { - font-size: 0.75em; - line-height: 0.08333em; - vertical-align: 0.125em; -} - -.fa-sm { - font-size: 0.875em; - line-height: 0.07143em; - vertical-align: 0.05357em; -} - -.fa-lg { - font-size: 1.25em; - line-height: 0.05em; - vertical-align: -0.075em; -} - -.fa-xl { - font-size: 1.5em; - line-height: 0.04167em; - vertical-align: -0.125em; -} - -.fa-2xl { - font-size: 2em; - line-height: 0.03125em; - vertical-align: -0.1875em; -} - -.fa-fw { - text-align: center; - width: 1.25em; -} - -.fa-ul { - list-style-type: none; - margin-left: var(--fa-li-margin, 2.5em); - padding-left: 0; -} - -.fa-ul > li { - position: relative; -} - -.fa-li { - left: calc(var(--fa-li-width, 2em) * -1); - position: absolute; - text-align: center; - width: var(--fa-li-width, 2em); - line-height: inherit; -} - -.fa-border { - border-color: var(--fa-border-color, #eee); - border-radius: var(--fa-border-radius, 0.1em); - border-style: var(--fa-border-style, solid); - border-width: var(--fa-border-width, 0.08em); - padding: var(--fa-border-padding, 0.2em 0.25em 0.15em); -} - -.fa-pull-left { - float: left; - margin-right: var(--fa-pull-margin, 0.3em); -} - -.fa-pull-right { - float: right; - margin-left: var(--fa-pull-margin, 0.3em); -} - -.fa-beat { - -webkit-animation-name: fa-beat; - animation-name: fa-beat; - -webkit-animation-delay: var(--fa-animation-delay, 0s); - animation-delay: var(--fa-animation-delay, 0s); - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 1s); - animation-duration: var(--fa-animation-duration, 1s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out); - animation-timing-function: var(--fa-animation-timing, ease-in-out); -} - -.fa-bounce { - -webkit-animation-name: fa-bounce; - animation-name: fa-bounce; - -webkit-animation-delay: var(--fa-animation-delay, 0s); - animation-delay: var(--fa-animation-delay, 0s); - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 1s); - animation-duration: var(--fa-animation-duration, 1s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); - animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); -} - -.fa-fade { - -webkit-animation-name: fa-fade; - animation-name: fa-fade; - -webkit-animation-delay: var(--fa-animation-delay, 0s); - animation-delay: var(--fa-animation-delay, 0s); - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 1s); - animation-duration: var(--fa-animation-duration, 1s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); - animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); -} - -.fa-beat-fade { - -webkit-animation-name: fa-beat-fade; - animation-name: fa-beat-fade; - -webkit-animation-delay: var(--fa-animation-delay, 0s); - animation-delay: var(--fa-animation-delay, 0s); - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 1s); - animation-duration: var(--fa-animation-duration, 1s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); - animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); -} - -.fa-flip { - -webkit-animation-name: fa-flip; - animation-name: fa-flip; - -webkit-animation-delay: var(--fa-animation-delay, 0s); - animation-delay: var(--fa-animation-delay, 0s); - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 1s); - animation-duration: var(--fa-animation-duration, 1s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out); - animation-timing-function: var(--fa-animation-timing, ease-in-out); -} - -.fa-shake { - -webkit-animation-name: fa-shake; - animation-name: fa-shake; - -webkit-animation-delay: var(--fa-animation-delay, 0s); - animation-delay: var(--fa-animation-delay, 0s); - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 1s); - animation-duration: var(--fa-animation-duration, 1s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, linear); - animation-timing-function: var(--fa-animation-timing, linear); -} - -.fa-spin { - -webkit-animation-name: fa-spin; - animation-name: fa-spin; - -webkit-animation-delay: var(--fa-animation-delay, 0s); - animation-delay: var(--fa-animation-delay, 0s); - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 2s); - animation-duration: var(--fa-animation-duration, 2s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, linear); - animation-timing-function: var(--fa-animation-timing, linear); -} - -.fa-spin-reverse { - --fa-animation-direction: reverse; -} - -.fa-pulse, -.fa-spin-pulse { - -webkit-animation-name: fa-spin; - animation-name: fa-spin; - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 1s); - animation-duration: var(--fa-animation-duration, 1s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, steps(8)); - animation-timing-function: var(--fa-animation-timing, steps(8)); -} - -@media (prefers-reduced-motion: reduce) { - .fa-beat, - .fa-bounce, - .fa-fade, - .fa-beat-fade, - .fa-flip, - .fa-pulse, - .fa-shake, - .fa-spin, - .fa-spin-pulse { - -webkit-animation-delay: -1ms; - animation-delay: -1ms; - -webkit-animation-duration: 1ms; - animation-duration: 1ms; - -webkit-animation-iteration-count: 1; - animation-iteration-count: 1; - -webkit-transition-delay: 0s; - transition-delay: 0s; - -webkit-transition-duration: 0s; - transition-duration: 0s; - } -} - -@-webkit-keyframes fa-beat { - 0%, - 90% { - -webkit-transform: scale(1); - transform: scale(1); - } - - 45% { - -webkit-transform: scale(var(--fa-beat-scale, 1.25)); - transform: scale(var(--fa-beat-scale, 1.25)); - } -} - -@keyframes fa-beat { - 0%, - 90% { - -webkit-transform: scale(1); - transform: scale(1); - } - - 45% { - -webkit-transform: scale(var(--fa-beat-scale, 1.25)); - transform: scale(var(--fa-beat-scale, 1.25)); - } -} - -@-webkit-keyframes fa-bounce { - 0% { - -webkit-transform: scale(1, 1) translateY(0); - transform: scale(1, 1) translateY(0); - } - - 10% { - -webkit-transform: scale( - var(--fa-bounce-start-scale-x, 1.1), - var(--fa-bounce-start-scale-y, 0.9) - ) - translateY(0); - transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) - translateY(0); - } - - 30% { - -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) - translateY(var(--fa-bounce-height, -0.5em)); - transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) - translateY(var(--fa-bounce-height, -0.5em)); - } - - 50% { - -webkit-transform: scale( - var(--fa-bounce-land-scale-x, 1.05), - var(--fa-bounce-land-scale-y, 0.95) - ) - translateY(0); - transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) - translateY(0); - } - - 57% { - -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); - transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); - } - - 64% { - -webkit-transform: scale(1, 1) translateY(0); - transform: scale(1, 1) translateY(0); - } - - 100% { - -webkit-transform: scale(1, 1) translateY(0); - transform: scale(1, 1) translateY(0); - } -} - -@keyframes fa-bounce { - 0% { - -webkit-transform: scale(1, 1) translateY(0); - transform: scale(1, 1) translateY(0); - } - - 10% { - -webkit-transform: scale( - var(--fa-bounce-start-scale-x, 1.1), - var(--fa-bounce-start-scale-y, 0.9) - ) - translateY(0); - transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) - translateY(0); - } - - 30% { - -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) - translateY(var(--fa-bounce-height, -0.5em)); - transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) - translateY(var(--fa-bounce-height, -0.5em)); - } - - 50% { - -webkit-transform: scale( - var(--fa-bounce-land-scale-x, 1.05), - var(--fa-bounce-land-scale-y, 0.95) - ) - translateY(0); - transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) - translateY(0); - } - - 57% { - -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); - transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); - } - - 64% { - -webkit-transform: scale(1, 1) translateY(0); - transform: scale(1, 1) translateY(0); - } - - 100% { - -webkit-transform: scale(1, 1) translateY(0); - transform: scale(1, 1) translateY(0); - } -} - -@-webkit-keyframes fa-fade { - 50% { - opacity: var(--fa-fade-opacity, 0.4); - } -} - -@keyframes fa-fade { - 50% { - opacity: var(--fa-fade-opacity, 0.4); - } -} - -@-webkit-keyframes fa-beat-fade { - 0%, - 100% { - opacity: var(--fa-beat-fade-opacity, 0.4); - -webkit-transform: scale(1); - transform: scale(1); - } - - 50% { - opacity: 1; - -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125)); - transform: scale(var(--fa-beat-fade-scale, 1.125)); - } -} - -@keyframes fa-beat-fade { - 0%, - 100% { - opacity: var(--fa-beat-fade-opacity, 0.4); - -webkit-transform: scale(1); - transform: scale(1); - } - - 50% { - opacity: 1; - -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125)); - transform: scale(var(--fa-beat-fade-scale, 1.125)); - } -} - -@-webkit-keyframes fa-flip { - 50% { - -webkit-transform: rotate3d( - var(--fa-flip-x, 0), - var(--fa-flip-y, 1), - var(--fa-flip-z, 0), - var(--fa-flip-angle, -180deg) - ); - transform: rotate3d( - var(--fa-flip-x, 0), - var(--fa-flip-y, 1), - var(--fa-flip-z, 0), - var(--fa-flip-angle, -180deg) - ); - } -} - -@keyframes fa-flip { - 50% { - -webkit-transform: rotate3d( - var(--fa-flip-x, 0), - var(--fa-flip-y, 1), - var(--fa-flip-z, 0), - var(--fa-flip-angle, -180deg) - ); - transform: rotate3d( - var(--fa-flip-x, 0), - var(--fa-flip-y, 1), - var(--fa-flip-z, 0), - var(--fa-flip-angle, -180deg) - ); - } -} - -@-webkit-keyframes fa-shake { - 0% { - -webkit-transform: rotate(-15deg); - transform: rotate(-15deg); - } - - 4% { - -webkit-transform: rotate(15deg); - transform: rotate(15deg); - } - - 8%, - 24% { - -webkit-transform: rotate(-18deg); - transform: rotate(-18deg); - } - - 12%, - 28% { - -webkit-transform: rotate(18deg); - transform: rotate(18deg); - } - - 16% { - -webkit-transform: rotate(-22deg); - transform: rotate(-22deg); - } - - 20% { - -webkit-transform: rotate(22deg); - transform: rotate(22deg); - } - - 32% { - -webkit-transform: rotate(-12deg); - transform: rotate(-12deg); - } - - 36% { - -webkit-transform: rotate(12deg); - transform: rotate(12deg); - } - - 40%, - 100% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } -} - -@keyframes fa-shake { - 0% { - -webkit-transform: rotate(-15deg); - transform: rotate(-15deg); - } - - 4% { - -webkit-transform: rotate(15deg); - transform: rotate(15deg); - } - - 8%, - 24% { - -webkit-transform: rotate(-18deg); - transform: rotate(-18deg); - } - - 12%, - 28% { - -webkit-transform: rotate(18deg); - transform: rotate(18deg); - } - - 16% { - -webkit-transform: rotate(-22deg); - transform: rotate(-22deg); - } - - 20% { - -webkit-transform: rotate(22deg); - transform: rotate(22deg); - } - - 32% { - -webkit-transform: rotate(-12deg); - transform: rotate(-12deg); - } - - 36% { - -webkit-transform: rotate(12deg); - transform: rotate(12deg); - } - - 40%, - 100% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } -} - -@-webkit-keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - - 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); - } -} - -@keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - - 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); - } -} - -.fa-rotate-90 { - -webkit-transform: rotate(90deg); - transform: rotate(90deg); -} - -.fa-rotate-180 { - -webkit-transform: rotate(180deg); - transform: rotate(180deg); -} - -.fa-rotate-270 { - -webkit-transform: rotate(270deg); - transform: rotate(270deg); -} - -.fa-flip-horizontal { - -webkit-transform: scale(-1, 1); - transform: scale(-1, 1); -} - -.fa-flip-vertical { - -webkit-transform: scale(1, -1); - transform: scale(1, -1); -} - -.fa-flip-both, -.fa-flip-horizontal.fa-flip-vertical { - -webkit-transform: scale(-1, -1); - transform: scale(-1, -1); -} - -.fa-rotate-by { - -webkit-transform: rotate(var(--fa-rotate-angle, none)); - transform: rotate(var(--fa-rotate-angle, none)); -} - -.fa-stack { - display: inline-block; - height: 2em; - line-height: 2em; - position: relative; - vertical-align: middle; - width: 2.5em; -} - -.fa-stack-1x, -.fa-stack-2x { - left: 0; - position: absolute; - text-align: center; - width: 100%; - z-index: var(--fa-stack-z-index, auto); -} - -.fa-stack-1x { - line-height: inherit; -} - -.fa-stack-2x { - font-size: 2em; -} - -.fa-inverse { - color: var(--fa-inverse, #fff); -} - -/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen -readers do not read off random characters that represent icons */ -.fa-arrow-up-right::before { - content: '\e09f'; -} - -.fa-arrows-rotate::before { - content: '\f021'; -} - -.fa-bars::before { - content: '\f0c9'; -} - -.fa-bolt::before { - content: '\f0e7'; -} - -.fa-book-open::before { - content: '\f518'; -} - -.fa-book-open-alt::before { - content: '\e0c0'; -} - -.fa-book-open-cover::before { - content: '\e0c0'; -} - -.fa-box::before { - content: '\f466'; -} - -.fa-chart-line-up::before { - content: '\e0e5'; -} - -.fa-chart-simple::before { - content: '\e473'; -} - -.fa-chevron-down::before { - content: '\f078'; -} - -.fa-circle-exclamation::before { - content: '\f06a'; -} - -.fa-comment::before { - content: '\f075'; -} - -.fa-comment-alt-edit::before { - content: '\f4a4'; -} - -.fa-comment-quote::before { - content: '\e14c'; -} - -.fa-database::before { - content: '\f1c0'; -} - -.fa-discord::before { - content: '\f392'; -} - -.fa-envelope::before { - content: '\f0e0'; -} - -.fa-exclamation-circle::before { - content: '\f06a'; -} - -.fa-file-binary::before { - content: '\e175'; -} - -.fa-folder-magnifying-glass::before { - content: '\e18b'; -} - -.fa-folder-search::before { - content: '\e18b'; -} - -.fa-github::before { - content: '\f09b'; -} - -.fa-globe::before { - content: '\f0ac'; -} - -.fa-grid-2::before { - content: '\e196'; -} - -.fa-hands-heart::before { - content: '\f4c3'; -} - -.fa-hands-holding-heart::before { - content: '\f4c3'; -} - -.fa-headset::before { - content: '\f590'; -} - -.fa-layer-group::before { - content: '\f5fd'; -} - -.fa-message-edit::before { - content: '\f4a4'; -} - -.fa-message-pen::before { - content: '\f4a4'; -} - -.fa-navicon::before { - content: '\f0c9'; -} - -.fa-refresh::before { - content: '\f021'; -} - -.fa-server::before { - content: '\f233'; -} - -.fa-signal-stream::before { - content: '\f8dd'; -} - -.fa-slack::before { - content: '\f198'; -} - -.fa-slack-hash::before { - content: '\f198'; -} - -.fa-slash::before { - content: '\f715'; -} - -.fa-star::before { - content: '\f005'; -} - -.fa-sync::before { - content: '\f021'; -} - -.fa-terminal::before { - content: '\f120'; -} - -.fa-triangle::before { - content: '\f2ec'; -} - -.fa-twitter::before { - content: '\f099'; -} - -.fa-user::before { - content: '\f007'; -} - -.fa-users-viewfinder::before { - content: '\e595'; -} - -.fa-youtube::before { - content: '\f167'; -} - -.fa-zap::before { - content: '\f0e7'; -} - -.sr-only, -.fa-sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - white-space: nowrap; - border-width: 0; -} - -.sr-only-focusable:not(:focus), -.fa-sr-only-focusable:not(:focus) { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - white-space: nowrap; - border-width: 0; -} - -.fab, -.fa-brands { - font-weight: 400; -} - -:root, -:host { - --fa-style-family-brands: 'Font Awesome 6 Brands'; - --fa-font-brands: normal 400 1em/1 'Font Awesome 6 Brands'; -} - -@font-face { - font-family: 'Font Awesome 6 Brands'; - font-style: normal; - font-weight: 400; - font-display: block; - src: url('/docs/fonts/fa-brands-400.woff2') format('woff2'), - url('/fonts/fa-brands-400.woff2') format('woff2'); -} -@font-face { - font-family: 'Font Awesome 6 Pro'; - font-style: normal; - font-weight: 900; - font-display: block; - src: url('/docs/fonts/fa-solid-900.woff2') format('woff2'), - url('/fonts/fa-solid-900.woff2') format('woff2'); -} - -.fa-rabbit-fast:before, -.fa-rabbit-running:before { - content: '\f709'; -} - -.fa-discord::before { - content: '\f392'; -} - -.fa-github::before { - content: '\f09b'; -} - -.fa-slack::before { - content: '\f198'; -} - -.fa-slack-hash::before { - content: '\f198'; -} - -.fa-twitter::before { - content: '\f099'; -} - -.fa-youtube::before { - content: '\f167'; -} - -.fa-x-twitter::before { - content: '\e61b'; -} - -/*! - * Font Awesome Pro 6.4.0 by @fontawesome - https://fontawesome.com - * License - https://fontawesome.com/license (Commercial License) - * Copyright 2023 Fonticons, Inc. - */ -:root, -:host { - --fa-style-family-classic: 'Font Awesome 6 Pro'; - --fa-font-light: normal 300 1em/1 'Font Awesome 6 Pro'; -} - -@font-face { - font-family: 'Font Awesome 6 Pro'; - font-style: normal; - font-weight: 300; - font-display: block; - src: url('/docs/fonts/fa-light-300.woff2') format('woff2'), - url('/fonts/fa-light-300.woff2') format('woff2'); -} - -.fal, -.fa-light { - font-weight: 300; -} - -/*! - * Font Awesome Pro 6.4.0 by @fontawesome - https://fontawesome.com - * License - https://fontawesome.com/license (Commercial License) - * Copyright 2023 Fonticons, Inc. - */ -:root, -:host { - --fa-style-family-classic: 'Font Awesome 6 Pro'; - --fa-font-regular: normal 400 1em/1 'Font Awesome 6 Pro'; -} - -@font-face { - font-family: 'Font Awesome 6 Pro'; - font-style: normal; - font-weight: 400; - font-display: block; - src: url('/docs/fonts/fa-regular-400.woff2') format('woff2'), - url('/fonts/fa-regular-400.woff2') format('woff2'); -} - -.far, -.fa-regular { - font-weight: 400; -} -.fa-arrow-right:before { - content: '\f061'; -} diff --git a/src/styles/layout.css b/src/styles/layout.css deleted file mode 100644 index 0a3a40b3a0..0000000000 --- a/src/styles/layout.css +++ /dev/null @@ -1,632 +0,0 @@ -/** Inter Regular */ -@font-face { - font-family: 'Inter'; - font-weight: 400; - font-style: normal; - font-display: swap; - src: url('/docs/fonts/Inter-Regular.woff2'), url('/fonts/Inter-Regular.woff2'); -} - -/** Inter Medium */ -@font-face { - font-family: 'Inter'; - font-weight: 500; - font-style: normal; - font-display: swap; - src: url('/docs/fonts/Inter-Medium.woff2'), url('/fonts/Inter-Medium.woff2'); -} - -/** Inter Italic */ -@font-face { - font-family: 'Inter'; - font-weight: 400; - font-style: italic; - font-display: swap; - src: url('/docs/fonts/Inter-Italic.woff2'), url('/fonts/Inter-Italic.woff2'); -} - -/** Inter SemiBold */ -@font-face { - font-family: 'Inter'; - font-weight: 600; - font-style: normal; - font-display: swap; - src: url('/docs/fonts/Inter-SemiBold.woff2'), url('/fonts/Inter-SemiBold.woff2'); -} - -/** Inter SemiBold Italic */ -@font-face { - font-family: 'Inter'; - font-weight: 600; - font-style: italic; - font-display: swap; - src: url('/docs/fonts/Inter-SemiBoldItalic.woff2'), url('/fonts/Inter-SemiBoldItalic.woff2'); -} - -/** Inter Bold */ -@font-face { - font-family: 'Inter'; - font-weight: 700; - font-style: normal; - font-display: swap; - src: url('/docs/fonts/Inter-Bold.woff2'), url('/fonts/Inter-Bold.woff2'); -} - -/** Inter Bold Italic */ -@font-face { - font-family: 'Inter'; - font-weight: 700; - font-style: italic; - font-display: swap; - src: url('/docs/fonts/Inter-BoldItalic.woff2'), url('/fonts/Inter-BoldItalic.woff2'); -} - -/** Barlow Bold */ -@font-face { - font-family: 'Barlow'; - font-weight: 600; - font-style: normal; - font-display: swap; - src: url('/docs/fonts/Barlow-Bold.woff2'), url('/fonts/Barlow-Bold.woff2'); -} - -@font-face { - font-family: 'JetBrainsMono'; - font-weight: 400; - font-style: normal; - font-display: swap; - src: url('/docs/fonts/JetBrainsMono-Regular.woff2'), url('/fonts/JetBrainsMono-Regular.woff2'); -} - -html { - font-family: 'Inter', sans-serif; - -ms-text-size-adjust: 100%; - -webkit-text-size-adjust: 100%; - box-sizing: border-box; - overflow-y: scroll; - /* Issue 894 */ - font-size: 16px; -} - -body { - /* Generic */ - --main-font-color: #2d3748; - --main-bgd-color: #f7fafc; - --header-bg-color: #ffffff; - --selection-bgd-color: #0c344b; - --white-color: #ffffff; - --link-color: #3182ce; - --border-color: #e2e8f0; - --code-bgd-color: #f6f8fa; - --code-inline-bgd-color: #edf2f7; - --list-bullet-color: #a0aec0; - --search-highlight-bg-color: #ebf8ff; - --tag-media-color: #2d3748; - --gradient1-color: #2f3747; - --gradient2-color: #0d0f14; - --header-btn-color: #4a5568; - /* Code blocks */ - --code-inner-color: #718096; - --code-token1-color: #d5408c; - --code-token2-color: #805ad5; - --code-token3-color: #319795; - --code-token4-color: #dd6b21; - --code-token5-color: #690; - --code-token6-color: #9a6e3a; - --code-token7-color: #e90; - --code-linenum-color: #cbd5e0; - --code-added-color: #47bb78; - --code-added-bg-color: #d9f4e6; - --code-deleted-color: #e53e3e; - --code-deleted-bg-color: #f5e4e7; - --code-highlight-color: #a0aec0; - --code-highlight-bg-color: #e2e8f0; - --code-edit-bg-color: #c3dafe; - --code-result-bg-color: #e7edf3; - /* Buttons */ - --red-color: #ff4f56; - --green-color: #15bd76; - --grey-color: #3d556b; - --grey-bg-color: #8fa6b2; - --dark-color: rgb(12, 52, 75); - - margin: 0; - font-family: 'Inter', sans-serif; - font-weight: normal; - word-wrap: break-word; - color: var(--main-font-color); - background-color: var(--white-color); -} - -@media (prefers-color-scheme: dark) { - body { - /* Generic */ - --main-font-color: #e2e8f0; - --main-bgd-color: #1a202c; - --border-color: #2d3748; - --header-bg-color: #1a202c; - --selection-bgd-color: #0c344b; - --white-color: #ffffff; - --link-color: #7f9cf5; - --code-bgd-color: #2d3748; - --code-inline-bgd-color: #2d3748; - --list-bullet-color: #a0aec0; - --search-highlight-bg-color: #ebf8ff; - --tag-media-color: #2d3748; - --gradient1-color: #2f3747; - --gradient2-color: #0d0f14; - --header-btn-color: #4a5568; - /* Code blocks */ - --code-inner-color: #718096; - --code-token1-color: #d5408c; - --code-token2-color: #805ad5; - --code-token3-color: #319795; - --code-token4-color: #dd6b21; - --code-token5-color: #690; - --code-token6-color: #9a6e3a; - --code-token7-color: #e90; - --code-linenum-color: #cbd5e0; - --code-added-color: #47bb78; - --code-added-bg-color: #d9f4e6; - --code-deleted-color: #e53e3e; - --code-deleted-bg-color: #f5e4e7; - --code-highlight-color: #a0aec0; - --code-highlight-bg-color: #4a5568; - --code-edit-bg-color: #c3dafe; - --code-result-bg-color: #e7edf3; - /* Buttons */ - --red-color: #ff4f56; - --green-color: #15bd76; - --grey-color: #3d556b; - --grey-bg-color: #8fa6b2; - --dark-color: rgb(12, 52, 75); - - color: var(--main-font-color); - background-color: var(--main-bgd-color); - } - .gatsby-resp-image-image { - box-shadow: none !important; - } - kbd { - background: var(--main-bgd-color) !important; - } - .planetscale { - path { - fill: #e2e8f0 !important; - } - } -} - -::selection, -pre[class*='language-']::selection, -pre[class*='language-'] ::selection, -code[class*='language-']::selection, -code[class*='language-'] ::selection { - color: var(--white-color); - background: var(--selection-bgd-color); -} - -pre { - margin: 0; -} - -a { - color: var(--link-color); -} - -h3 { - display: block; - margin-block-start: 1em; - margin-block-end: 1em; -} - -h4 { - margin-block-start: 1.33em; - margin-block-end: 1.33em; -} - -h5 { - margin-block-start: 1.67em; - margin-block-end: 1.67em; -} - -h6 { - margin-block-start: 2.33em; - margin-block-end: 2.33em; -} - -h1, -h2, -h3, -h4, -h5, -h6 { - margin-inline-start: 0px; - margin-inline-end: 0px; -} - -html { - line-height: unset; - -webkit-text-size-adjust: unset; -} - -body { - font-family: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI'; -} -h1, -h2, -h3, -h4, -h5, -h6 { - font-family: 'Inter', sans-serif; - font-weight: 500; -} - -h1.inline-code { - display: inline-block; -} - -h2 { - margin: 0; - margin-block-end: 0; - margin-block-start: 0; -} - -section h2, -section h3, -section h4, -section h5, -section h6 { - margin-top: 2em; - font-weight: 600; - text-decoration: none; - color: var(--main-font-color); -} - -section h2 { - margin-bottom: 0; -} - -.title-link { - /* margin-left: -24px; - margin-right: 5px; */ - opacity: 0; -} - -h2:hover .title-link, -h3:hover .title-link, -h4:hover .title-link, -h5:hover .title-link, -h6:hover .title-link { - opacity: 1; -} - -h2 code, -h3 code, -h4 code, -h5 code, -h6 code { - font-size: inherit; -} - -* { - box-sizing: border-box; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -img { - max-width: 100%; - margin-left: 0; - margin-right: 0; - margin-top: 0; - padding-bottom: 0; - padding-left: 0; - padding-right: 0; - padding-top: 0; - margin-bottom: 1.45rem; -} - -p { - margin: 1rem 0; -} - -p, -li { - font-family: 'Inter', sans-serif; - font-style: normal; - font-weight: normal; - font-size: 16px; - line-height: 24px; -} - -kbd { - background: var(--white-color); - box-shadow: 0px 1px 1px rgba(47, 55, 71, 0.6), 0px 1px 4px rgba(47, 55, 71, 0.2); - border-bottom: 1px solid rgba(47, 55, 71, 0.2); - border-radius: 4px; - padding: 2px 6px; - vertical-align: baseline; - font-size: 14px !important; - font-family: 'JetBrainsMono' !important; -} - -table { - width: 100%; - word-break: normal; - border: 1px solid var(--border-color); - border-radius: 8px; - border-spacing: 0px; - margin: 0 0px 20px; - white-space: inherit; -} - -table * { - font-size: 13px; -} - -table th { - text-align: left; - font-size: 14px; - font-weight: 600; - padding: 12px; -} - -table td { - padding: 12px; - border-top: 1px solid var(--border-color); - vertical-align: top; -} - -table code { - white-space: nowrap; -} - -blockquote { - font-family: Inter; - font-style: normal; - font-weight: 600; - font-size: 16px; - line-height: 24px; - color: var(--code-inner-color); - padding-left: 2rem; - padding-bottom: 8px; - padding-bottom: 8px; - margin: 2rem 0px; - position: relative; -} - -blockquote pre { - font-weight: normal; -} - -blockquote::before { - content: ''; - position: absolute; - width: 8px; - height: 100%; - left: 0px; - background: var(--code-bgd-color); - border-radius: 5px; -} - -blockquote code { - color: var(--code-inner-color); -} - -blockquote p { - margin: 0; -} - -hr { - margin: 2rem 0; - margin-left: -40px; - margin-right: -40px; - border: 0; - height: 1px; - background: var(--border-color); -} - -.list { - padding: 0; - margin-left: 24px; -} - -.list li { - padding-left: 8px; - /* text-indent: -1em; */ - margin-top: 10px; -} - -.list li::marker { - content: '\2022'; - color: var(--list-bullet-color); - display: inline-block; - width: 1em; - margin-left: -1em; - font-size: 20px; -} - -.o-list li { - margin-top: 10px; -} - -.clearfix { - clear: both; -} - -.list li pre .line-no { - width: 45px; -} - -@media (min-width: 0px) and (max-width: 767px) { - hr { - margin-left: -24px; - margin-right: -24px; - } - .pre-highlight { - margin-right: -24px; - margin-left: -24px; - } - - .pre-highlight pre { - border-radius: 0; - } - - .tab-content .copy-button { - right: 40px; - } - - .list li pre .pre-highlight { - margin-left: 0; - margin-right: 0; - } -} - -/* TEMP */ - -a.question, -span.concept, -span.api, -span.guide { - background: #bee3f8; - border-radius: 4px; - padding: 2px; - color: #3182ce; - font-weight: 600; - font-size: 12px; - line-height: 24px; - text-decoration: none; -} - -span.api::before { - content: 'API'; -} - -span.concept::before { - content: 'CONCEPT'; -} - -span.guide::before { - content: 'GUIDE'; -} - -a.question { - border-radius: 10px; - padding: 2px 6px; -} - -a.question::before { - content: '?'; -} - -.videoWrapper { - position: relative; - padding-bottom: 56.25%; /* 16:9 */ - height: 0; -} -.videoWrapper iframe { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; -} - -.gatsby-resp-image-wrapper { - margin-left: 0 !important; -} - -/* - - - nav.toc { - position: fixed; - top: 0; - right: 0; - width: 250px; - } - - ul.toc-list > li { - list-style-type: none; - margin-left: 24px; - font-size: 13px; - } - - ul.toc-list > li > a { - color: #c2c2c2; - text-decoration: none; - border-bottom: 0; - transition: 1s all ease-in-out; - } - - ul.toc-list > li.is-current > a { - color: black !important; - } */ - -/* - We want to hide YouTube videos in Percy snapshots since they can provide - unstable results. - - https://docs.percy.io/docs/percy-specific-css#percy-css-media-query - */ -@media only percy { - iframe { - visibility: hidden; - } - - section img { - visibility: hidden; - } - - /* hide cookie banner */ - #onetrust-consent-sdk { - display: none; - } -} - -/* Kapa.ai overrides */ -#kapa-widget-container .mantine-Button-root { - z-index: 1000; -} - -#kapa-widget-container .mantine-Image-root { - height: 2rem; -} - -#kapa-widget-container .mantine-Text-root { - font-size: 1rem; - color: #71e8df; - filter: drop-shadow(0px 0.724px 1.251px rgba(14, 18, 28, 0.02)) - drop-shadow(0px 1.608px 2.909px rgba(14, 18, 28, 0.04)) - drop-shadow(0px 2.793px 5.225px rgba(14, 18, 28, 0.06)) - drop-shadow(0px 4.55px 8.671px rgba(14, 18, 28, 0.07)) - drop-shadow(0px 7.485px 14.285px rgba(14, 18, 28, 0.08)) - drop-shadow(0px 13.358px 24.966px rgba(14, 18, 28, 0.09)) - drop-shadow(0px 33px 54px rgba(14, 18, 28, 0.07)); -} - -#kapa-widget-container .mantine-Image-image { - width: 2.5rem !important; - height: 2.5rem !important; -} - -#kapa-widget-container .mantine-Button-root { - height: 4rem !important; - width: 4rem !important; - border-radius: 8px; - border: 2px solid #71e8df !important; -} - -#kapa-widget-container .mantine-Stack-root { - margin-top: 0px !important; -} - -.mantine-Modal-body img { - margin-bottom: 0; -} - -.gatsby-resp-image-wrapper { - margin-left: inherit !important; -} diff --git a/src/templates/docs.tsx b/src/templates/docs.tsx deleted file mode 100644 index 0efabfa11b..0000000000 --- a/src/templates/docs.tsx +++ /dev/null @@ -1,96 +0,0 @@ -import { RouterProps, navigate } from '@reach/router' -import { graphql } from 'gatsby' -import MDXRenderer from 'gatsby-plugin-mdx/mdx-renderer' -import * as React from 'react' -import Layout from '../components/layout' -import PageBottom from '../components/pageBottom' -import SEO from '../components/seo' -import TopSection from '../components/topSection' -import { ArticleQueryData } from '../interfaces/Article.interface' -import { CreatePageContext } from '../interfaces/Layout.interface' - -type ArticleLayoutProps = ArticleQueryData & RouterProps & CreatePageContext - -const ArticleLayout = ({ data, ...props }: ArticleLayoutProps) => { - if (!data) { - return null - } - const { - mdx: { - fields: { slug, modSlug }, - frontmatter: { title, langSwitcher, dbSwitcher, toc, tocDepth, codeStyle, wide, hideTitle }, - body, - parent, - tableOfContents, - }, - site: { - siteMetadata: { docsLocation }, - }, - } = data - return ( - -
- -
- {body} - -
- ) -} - -export default ArticleLayout - -export const Head = ({ pageContext: { seoTitle, seoDescription } }: ArticleLayoutProps) => { - return -} - -export const query = graphql` - query ($id: String!) { - site { - siteMetadata { - docsLocation - } - } - mdx(fields: { id: { eq: $id } }) { - fields { - slug - modSlug - } - body - parent { - ... on File { - relativePath - } - } - tableOfContents - frontmatter { - title - metaTitle - metaDescription - langSwitcher - search - wide - dbSwitcher - hideTitle - toc - tocDepth - codeStyle - } - } - } -` diff --git a/src/theme/@types/image.d.ts b/src/theme/@types/image.d.ts deleted file mode 100644 index aa89b66acd..0000000000 --- a/src/theme/@types/image.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -declare module '*.svg' { - const content: any - export default content -} - -declare module '*.webp' { - const content: any - export default content -} diff --git a/src/theme/@types/index.d.ts b/src/theme/@types/index.d.ts deleted file mode 100644 index a74abe11a7..0000000000 --- a/src/theme/@types/index.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import 'styled-components' - -import { defaultTheme } from '../index' - -// and extend them! -declare module 'styled-components' { - type DefaultPrismaTheme = typeof defaultTheme - export interface DefaultTheme extends DefaultPrismaTheme {} -} diff --git a/src/theme/@types/styledComponentsOverride.d.ts b/src/theme/@types/styledComponentsOverride.d.ts deleted file mode 100644 index 6ac90e42bb..0000000000 --- a/src/theme/@types/styledComponentsOverride.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { CSSProp } from 'styled-components' - -interface MyTheme {} - -declare module 'react' { - interface Attributes { - css?: CSSProp - } -} diff --git a/src/theme/Admonition/Icon/Warning.tsx b/src/theme/Admonition/Icon/Warning.tsx new file mode 100644 index 0000000000..dd49e288fb --- /dev/null +++ b/src/theme/Admonition/Icon/Warning.tsx @@ -0,0 +1,11 @@ +import React from 'react'; +export default function AdmonitionIconCaution(props) { + return ( + + + + ); +} diff --git a/src/theme/CodeBlock/Container/index.tsx b/src/theme/CodeBlock/Container/index.tsx new file mode 100644 index 0000000000..682d928a3e --- /dev/null +++ b/src/theme/CodeBlock/Container/index.tsx @@ -0,0 +1,21 @@ +import React from 'react'; +import clsx from 'clsx'; +import {ThemeClassNames, usePrismTheme} from '@docusaurus/theme-common'; +import {getPrismCssVariables} from '@docusaurus/theme-common/internal'; +import styles from './styles.module.scss'; +export default function CodeBlockContainer({as: As, ...props}) { + const prismTheme = usePrismTheme(); + const prismCssVariables = getPrismCssVariables(prismTheme); + return ( + + ); +} diff --git a/src/theme/CodeBlock/Container/styles.module.scss b/src/theme/CodeBlock/Container/styles.module.scss new file mode 100644 index 0000000000..2ec3769213 --- /dev/null +++ b/src/theme/CodeBlock/Container/styles.module.scss @@ -0,0 +1,42 @@ +.codeBlockContainer { + background: var(--prism-background-color); + color: var(--prism-color); + box-shadow: var(--ifm-global-shadow-lw); + border-radius: var(--ifm-code-border-radius); + max-width: 100%; + + ::-webkit-scrollbar { + width: 0.4rem; + height: 0.4rem; + background-color: transparent; + } + ::-webkit-scrollbar-thumb { + border-radius: 10px; + background-color: #c5c6c8; + } + ::-webkit-scrollbar-track { + border-radius: 10px; + background-color: transparent; + } + ::-webkit-scrollbar-corner { + background-color: transparent; + border-color: transparent; + } +} + +.file { + font-weight: 600; + color: rgb(113, 128, 150); + font-size: 0.875rem; + font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + margin-bottom: 0.5rem; + > span { + color: inherit; + display: inline-flex; + -webkit-box-align: center; + align-items: center; + svg { + margin-right: 0.5rem; + } + } +} \ No newline at end of file diff --git a/src/theme/CodeBlock/Content/Element.tsx b/src/theme/CodeBlock/Content/Element.tsx new file mode 100644 index 0000000000..16411be351 --- /dev/null +++ b/src/theme/CodeBlock/Content/Element.tsx @@ -0,0 +1,17 @@ +import React from 'react'; +import clsx from 'clsx'; +import styles from './styles.module.scss'; +import Container from '../Container'; +//
 tags in markdown map to CodeBlocks. They may contain JSX children. When
+// the children is not a simple string, we just return a styled block without
+// actually highlighting.
+export default function CodeBlockJSX({children, className, wrap = false}) {
+  return (
+    
+      {children}
+    
+  );
+}
diff --git a/src/theme/CodeBlock/Content/String.tsx b/src/theme/CodeBlock/Content/String.tsx
new file mode 100644
index 0000000000..7d924e918f
--- /dev/null
+++ b/src/theme/CodeBlock/Content/String.tsx
@@ -0,0 +1,104 @@
+import React from 'react';
+import clsx from 'clsx';
+import {useThemeConfig, usePrismTheme} from '@docusaurus/theme-common';
+import {
+  parseCodeBlockTitle,
+  parseLanguage,
+  parseLines,
+  containsLineNumbers,
+  useCodeWordWrap,
+} from '@docusaurus/theme-common/internal';
+import {Highlight} from 'prism-react-renderer';
+import styles from './styles.module.scss';
+import Container from '../Container';
+import WordWrapButton from '../WordWrapButton';
+import CopyButton from '../CopyButton';
+import Line from '../Line';
+// Prism languages are always lowercase
+// We want to fail-safe and allow both "php" and "PHP"
+// See https://github.com/facebook/docusaurus/issues/9012
+function normalizeLanguage(language) {
+  return language?.toLowerCase();
+}
+export default function CodeBlockString({
+  children,
+  className: blockClassName = '',
+  metastring,
+  title: titleProp,
+  showLineNumbers: showLineNumbersProp,
+  language: languageProp,
+  wrap = false
+}) {
+  const {
+    prism: {defaultLanguage, magicComments},
+  } = useThemeConfig();
+  const language = normalizeLanguage(
+    languageProp ?? parseLanguage(blockClassName) ?? defaultLanguage,
+  );
+  const prismTheme = usePrismTheme();
+  const wordWrap = useCodeWordWrap();
+  // We still parse the metastring in case we want to support more syntax in the
+  // future. Note that MDX doesn't strip quotes when parsing metastring:
+  // "title=\"xyz\"" => title: "\"xyz\""
+  const title = parseCodeBlockTitle(metastring) || titleProp;
+  const {lineClassNames, code} = parseLines(children, {
+    metastring,
+    language,
+    magicComments,
+  });
+  const showLineNumbers =
+    showLineNumbersProp ?? containsLineNumbers(metastring);
+  return (
+    
+      {title && 
{title}
} +
+ + {({className, style, tokens, getLineProps, getTokenProps}) => ( +
+              
+                {tokens.map((line, i) => (
+                  
+                ))}
+              
+            
+ )} +
+
+ {(wordWrap.isEnabled || wordWrap.isCodeScrollable) && ( + wordWrap.toggle()} + isEnabled={wordWrap.isEnabled} + /> + )} + {!metastring?.includes("no-copy") && } +
+
+
+ ); +} diff --git a/src/theme/CodeBlock/Content/styles.module.scss b/src/theme/CodeBlock/Content/styles.module.scss new file mode 100644 index 0000000000..109cdbf9f4 --- /dev/null +++ b/src/theme/CodeBlock/Content/styles.module.scss @@ -0,0 +1,82 @@ +.codeBlockContent { + position: relative; + /* rtl:ignore */ + direction: ltr; + border-radius: inherit; +} + +.codeBlockTitle { + border-bottom: 1px solid var(--ifm-color-emphasis-300); + font-size: var(--ifm-code-font-size); + font-weight: 500; + padding: 0.75rem var(--ifm-pre-padding); + border-top-left-radius: inherit; + border-top-right-radius: inherit; +} + +.codeBlock { + --ifm-pre-background: var(--prism-background-color); + margin: 0; +} + +.codeBlockTitle + .codeBlockContent .codeBlock { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.codeBlockLines { + float: left; + min-width: 100%; + > span { + padding: 0 0 0 calc(var(--ifm-pre-padding) * 2); + } +} + +.codeBlockLinesWithNumbering { + display: table; + > span:not(.codeHighlighted) { + margin-left: calc(var(--ifm-pre-padding) * -1); + padding: 0 0 0 var(--ifm-pre-padding); + } +} + +@media print { + .codeBlockLines { + white-space: pre-wrap; + } +} + +.buttonGroup { + display: flex; + column-gap: 0.2rem; + position: absolute; + /* rtl:ignore */ + right: calc(var(--ifm-pre-padding) / 2); + top: calc(var(--ifm-pre-padding) / 2); +} + +.buttonGroup button { + display: flex; + align-items: center; + background: var(--prism-background-color); + color: var(--prism-color); + border: 1px solid var(--ifm-color-emphasis-300); + border-radius: var(--ifm-global-radius); + padding: 0.4rem; + line-height: 0; + transition: opacity var(--ifm-transition-fast) ease-in-out; + opacity: 0; +} + +.buttonGroup button:focus-visible, +.buttonGroup button:hover { + opacity: 1 !important; +} + +:global(.theme-code-block:hover) .buttonGroup button { + opacity: 0.4; +} + +.wrap { + white-space: wrap !important; +} \ No newline at end of file diff --git a/src/theme/CodeBlock/CopyButton/index.js b/src/theme/CodeBlock/CopyButton/index.js new file mode 100644 index 0000000000..fd430b473c --- /dev/null +++ b/src/theme/CodeBlock/CopyButton/index.js @@ -0,0 +1,53 @@ +import React, {useCallback, useState, useRef, useEffect} from 'react'; +import clsx from 'clsx'; +import copy from 'copy-text-to-clipboard'; +import {translate} from '@docusaurus/Translate'; +import IconCopy from '@theme/Icon/Copy'; +import IconSuccess from '@theme/Icon/Success'; +import styles from './styles.module.css'; +export default function CopyButton({code, className}) { + const [isCopied, setIsCopied] = useState(false); + const copyTimeout = useRef(undefined); + const handleCopyCode = useCallback(() => { + copy(code); + setIsCopied(true); + copyTimeout.current = window.setTimeout(() => { + setIsCopied(false); + }, 1000); + }, [code]); + useEffect(() => () => window.clearTimeout(copyTimeout.current), []); + return ( + + ); +} diff --git a/src/theme/CodeBlock/CopyButton/styles.module.css b/src/theme/CodeBlock/CopyButton/styles.module.css new file mode 100644 index 0000000000..d5268e900b --- /dev/null +++ b/src/theme/CodeBlock/CopyButton/styles.module.css @@ -0,0 +1,40 @@ +:global(.theme-code-block:hover) .copyButtonCopied { + opacity: 1 !important; +} + +.copyButtonIcons { + position: relative; + width: 1.125rem; + height: 1.125rem; +} + +.copyButtonIcon, +.copyButtonSuccessIcon { + position: absolute; + top: 0; + left: 0; + fill: currentColor; + opacity: inherit; + width: inherit; + height: inherit; + transition: all var(--ifm-transition-fast) ease; +} + +.copyButtonSuccessIcon { + top: 50%; + left: 50%; + transform: translate(-50%, -50%) scale(0.33); + opacity: 0; + color: #00d600; +} + +.copyButtonCopied .copyButtonIcon { + transform: scale(0.33); + opacity: 0; +} + +.copyButtonCopied .copyButtonSuccessIcon { + transform: translate(-50%, -50%) scale(1); + opacity: 1; + transition-delay: 0.075s; +} diff --git a/src/theme/CodeBlock/Line/index.tsx b/src/theme/CodeBlock/Line/index.tsx new file mode 100644 index 0000000000..fe1d8094e6 --- /dev/null +++ b/src/theme/CodeBlock/Line/index.tsx @@ -0,0 +1,49 @@ +import React, { useEffect } from 'react'; +import clsx from 'clsx'; +import styles from './styles.module.scss'; +export default function CodeBlockLine({ + line, + classNames, + showLineNumbers, + getLineProps, + getTokenProps, +}) { + if (line.length === 1 && line[0].content === '\n') { + line[0].content = ''; + } + const highlightedLine = classNames?.find((e:string) => e.includes("code-highlight")) + const lineProps = getLineProps({ + line, + className: clsx( + classNames, + showLineNumbers ? styles.codeLine : styles.noLineNumbers, + highlightedLine && (showLineNumbers ? styles.highlightedNumbers : styles.highlightedLine) + ), + }); + const lineTokens = line.map((token, key) => ( + + )); + return ( + + {showLineNumbers ? ( + <> + + {!highlightedLine && } + {lineTokens} + + + ) : ( + + {lineTokens} + + )} +
+
+ ); +} diff --git a/src/theme/CodeBlock/Line/styles.module.scss b/src/theme/CodeBlock/Line/styles.module.scss new file mode 100644 index 0000000000..0175bea115 --- /dev/null +++ b/src/theme/CodeBlock/Line/styles.module.scss @@ -0,0 +1,91 @@ +/* Intentionally has zero specificity, so that to be able to override +the background in custom CSS file due bug https://github.com/facebook/docusaurus/issues/3678 */ + +:global(.theme-code-block-added-line) { + background-color: var(--docusaurus-added-code-line-bg); + display: block; + padding: 0 var(--ifm-pre-padding) 0 42px; + position: relative; +} +:global(.theme-code-block-added-line)::before { + content: "+" !important; + position: absolute; + left: 16px; + color: #47bb78;; +} +:global(.theme-code-block-deleted-line) { + background-color: var(--docusaurus-deleted-code-line-bg); + display: block; + padding: 0 var(--ifm-pre-padding) 0 42px; + position: relative; +} +:global(.theme-code-block-deleted-line)::before { + content: "-" !important; + position: absolute; + left: 16px; + color: #e53e3e;; +} + +:global(.theme-code-block-edited-line) { + background-color: var(--docusaurus-edited-code-line-bg); + display: block; + padding: 0 var(--ifm-pre-padding) 0 42px; + position: relative; +} +:global(.theme-code-block-edited-line)::before { + content: "✎" !important; + position: absolute; + left: 16px; + color: #a0aec0;; +} + +:global(.theme-code-block-highlighted-line) { + background-color: var(--docusaurus-highlighted-code-line-bg); + display: block; + position: relative; +} + +.codeLine { + display: table-row; + counter-increment: line-count; + padding-left: 0; +} + + + +.noLineNumbers { + margin: 0 -16px 0 0; +} + +.noLineNumbers:not( .code-highlight ) { + padding: 0 0 0 calc(var(--ifm-pre-padding)) !important; + margin: 0; +} + +.codeLineNumber { + display: table-cell; + text-align: right; + width: min-content; + left: 0; + padding: 0 var(--ifm-pre-padding); + overflow-wrap: normal; +} + +.codeLineNumber::before { + content: counter(line-count); + opacity: 0.4; +} + +:global(.theme-code-block-highlighted-line) .codeLineNumber::before { + opacity: 0.8; +} + +.codeLineContent { + padding-right: var(--ifm-pre-padding); +} +.highlightedNumbers { + margin: 0 !important; + .codeHighlighted { + margin-left: var(--ifm-pre-padding); + } +} diff --git a/src/theme/CodeBlock/WordWrapButton/index.js b/src/theme/CodeBlock/WordWrapButton/index.js new file mode 100644 index 0000000000..3a4136b630 --- /dev/null +++ b/src/theme/CodeBlock/WordWrapButton/index.js @@ -0,0 +1,27 @@ +import React from 'react'; +import clsx from 'clsx'; +import {translate} from '@docusaurus/Translate'; +import IconWordWrap from '@theme/Icon/WordWrap'; +import styles from './styles.module.css'; +export default function WordWrapButton({className, onClick, isEnabled}) { + const title = translate({ + id: 'theme.CodeBlock.wordWrapToggle', + message: 'Toggle word wrap', + description: + 'The title attribute for toggle word wrapping button of code block lines', + }); + return ( + + ); +} diff --git a/src/theme/CodeBlock/WordWrapButton/styles.module.css b/src/theme/CodeBlock/WordWrapButton/styles.module.css new file mode 100644 index 0000000000..fdbc894646 --- /dev/null +++ b/src/theme/CodeBlock/WordWrapButton/styles.module.css @@ -0,0 +1,8 @@ +.wordWrapButtonIcon { + width: 1.2rem; + height: 1.2rem; +} + +.wordWrapButtonEnabled .wordWrapButtonIcon { + color: var(--ifm-color-primary); +} diff --git a/src/theme/CodeBlock/index.tsx b/src/theme/CodeBlock/index.tsx new file mode 100644 index 0000000000..7574067b46 --- /dev/null +++ b/src/theme/CodeBlock/index.tsx @@ -0,0 +1,46 @@ +import React, {isValidElement, useEffect} from 'react'; +import useIsBrowser from '@docusaurus/useIsBrowser'; +import CodeBlockString from './Content/String'; +import CodeBlockJSX from './Content/Element'; +import styles from "./Container/styles.module.scss" +/** + * Best attempt to make the children a plain string so it is copyable. If there + * are react elements, we will not be able to copy the content, and it will + * return `children` as-is; otherwise, it concatenates the string children + * together. + */ +function maybeStringifyChildren(children) { + if (React.Children.toArray(children).some((el) => isValidElement(el))) { + return children; + } + // The children is now guaranteed to be one/more plain strings + return Array.isArray(children) ? children.join('') : children; +} +export default function CodeBlock({children: rawChildren, ...props}) { + // The Prism theme on SSR is always the default theme but the site theme can + // be in a different mode. React hydration doesn't update DOM styles that come + // from SSR. Hence force a re-render after mounting to apply the current + // relevant styles. + const isBrowser = useIsBrowser(); + const children = maybeStringifyChildren(rawChildren); + const wrap = Boolean(props?.metastring?.split(" ").find(e => e === "wrap")) + const file = + props?.metastring?.includes("file") ? + props?.metastring?.split(" ").find((e: string) => e.includes("file")).replace("file=", "") : false + const CodeBlockComp = + typeof children === 'string' ? CodeBlockString : CodeBlockJSX; + return ( + <> + {file &&
+ + + {file} + +
} + {/* @ts-ignore */} + + {children} + + + ); +} diff --git a/src/theme/DocBreadcrumbs/Items/Home/index.tsx b/src/theme/DocBreadcrumbs/Items/Home/index.tsx new file mode 100644 index 0000000000..d0d7c7a3ac --- /dev/null +++ b/src/theme/DocBreadcrumbs/Items/Home/index.tsx @@ -0,0 +1,23 @@ +import React from 'react'; +import Link from '@docusaurus/Link'; +import useBaseUrl from '@docusaurus/useBaseUrl'; +import {translate} from '@docusaurus/Translate'; +import IconHome from '@theme/Icon/Home'; +import styles from './styles.module.css'; +export default function HomeBreadcrumbItem() { + const homeHref = useBaseUrl('/'); + return ( +
  • + + + +
  • + ); +} diff --git a/src/theme/DocBreadcrumbs/Items/Home/styles.module.css b/src/theme/DocBreadcrumbs/Items/Home/styles.module.css new file mode 100644 index 0000000000..533d764872 --- /dev/null +++ b/src/theme/DocBreadcrumbs/Items/Home/styles.module.css @@ -0,0 +1,7 @@ +.breadcrumbHomeIcon { + position: relative; + top: 1px; + vertical-align: top; + height: 1.1rem; + width: 1.1rem; +} diff --git a/src/theme/DocBreadcrumbs/index.tsx b/src/theme/DocBreadcrumbs/index.tsx new file mode 100644 index 0000000000..574ecd0202 --- /dev/null +++ b/src/theme/DocBreadcrumbs/index.tsx @@ -0,0 +1,95 @@ +import React, { useEffect, useState } from 'react'; +import clsx from 'clsx'; +import {ThemeClassNames} from '@docusaurus/theme-common'; +import { + useSidebarBreadcrumbs, + useHomePageRoute, +} from '@docusaurus/theme-common/internal'; +import Link from '@docusaurus/Link'; +import {translate} from '@docusaurus/Translate'; +import HomeBreadcrumbItem from '@theme/DocBreadcrumbs/Items/Home'; +import styles from './styles.module.css'; +// TODO move to design system folder +function BreadcrumbsItemLink({children, href}) { + const className = 'breadcrumbs__link'; + return href ? ( + + {children} + + ) : ( + // TODO Google search console doesn't like breadcrumb items without href. + // The schema doesn't seem to require `id` for each `item`, although Google + // insist to infer one, even if it's invalid. Removing `itemProp="item + // name"` for now, since I don't know how to properly fix it. + // See https://github.com/facebook/docusaurus/issues/7241 + {children} + ); +} +// TODO move to design system folder +function BreadcrumbsItem({children, active, index, addMicrodata}) { + return ( +
  • + {children} + +
  • + ); +} +export default function DocBreadcrumbs() { + const breadcrumbs = useSidebarBreadcrumbs(); + const homePageRoute = useHomePageRoute(); + if (!breadcrumbs) { + return null; + } + const repeatedBreadcrumbs = () => { + if (breadcrumbs.length === 2) { + if (breadcrumbs[0].label === breadcrumbs[1].label) return false + else return true + } + return true + } + return ( + repeatedBreadcrumbs() && breadcrumbs.length > 1 && + ); +} diff --git a/src/theme/DocBreadcrumbs/styles.module.css b/src/theme/DocBreadcrumbs/styles.module.css new file mode 100644 index 0000000000..72da4671a4 --- /dev/null +++ b/src/theme/DocBreadcrumbs/styles.module.css @@ -0,0 +1,4 @@ +.breadcrumbsContainer { + --ifm-breadcrumb-size-multiplier: 0.8; + margin-bottom: 0.8rem; +} diff --git a/src/theme/DocCard/index.tsx b/src/theme/DocCard/index.tsx new file mode 100644 index 0000000000..d261c30618 --- /dev/null +++ b/src/theme/DocCard/index.tsx @@ -0,0 +1,80 @@ +import React from 'react'; +import clsx from 'clsx'; +import Link from '@docusaurus/Link'; +import { + findFirstSidebarItemLink, + useDocById, +} from '@docusaurus/theme-common/internal'; +import isInternalUrl from '@docusaurus/isInternalUrl'; +import {translate} from '@docusaurus/Translate'; +import Heading from '@theme/Heading'; +import styles from './styles.module.scss'; +function CardContainer({href, children}) { + return ( + + {children} + + ); +} +function CardLayout({href, icon, title, description}) { + return ( + + + {title} + + + ); +} +function CardCategory({item}) { + const href = findFirstSidebarItemLink(item); + // Unexpected: categories that don't have a link have been filtered upfront + if (!href) { + return null; + } + return ( + + ); +} +function CardLink({item}) { + const icon = isInternalUrl(item.href) ? '📄️' : '🔗'; + const doc = useDocById(item.docId ?? undefined); + return ( + + ); +} +export default function DocCard({item}) { + switch (item.type) { + case 'link': + return ; + case 'category': + return ; + default: + throw new Error(`unknown item type ${JSON.stringify(item)}`); + } +} diff --git a/src/theme/DocCard/styles.module.scss b/src/theme/DocCard/styles.module.scss new file mode 100644 index 0000000000..40d4900f6e --- /dev/null +++ b/src/theme/DocCard/styles.module.scss @@ -0,0 +1,42 @@ +.cardContainer { + --ifm-link-color: var(--ifm-color-emphasis-800); + --ifm-link-hover-color: var(--ifm-color-emphasis-700); + --ifm-link-hover-decoration: none; + + border: 1px solid var(--ifm-btn-border-color); + transition: all var(--ifm-transition-fast) ease; + transition-property: border; + color: var(--main-font-color); + background-color: transparent; + text-decoration: none !important; + align-items: center; + justify-content: center; + display: flex; + height: 100%; + @media (min-width: 997px) { + display: block; + height: auto; + } +} + +.cardContainer:hover { + border-color: var(--ifm-btn-border-color-active); +} + +.cardContainer *:last-child { + margin-bottom: 0; +} + +.cardTitle { + font-family: Barlow; + font-size: 18px; + font-weight: 600; + line-height: 24px; + text-align: center; + @media (min-width: 997px) { + text-align: left; + } +} +.col6 { + --ifm-col-width: 50% !important; +} diff --git a/src/theme/DocCardList/index.tsx b/src/theme/DocCardList/index.tsx new file mode 100644 index 0000000000..86c88db1e8 --- /dev/null +++ b/src/theme/DocCardList/index.tsx @@ -0,0 +1,33 @@ +import React, { useEffect, useState } from 'react'; +import clsx from 'clsx'; +import { + useCurrentSidebarCategory, + filterDocCardListItems, +} from '@docusaurus/theme-common'; +import DocCard from '../DocCard'; +import { useLocation } from '@docusaurus/router'; +import styles from "../DocCard/styles.module.scss" +function DocCardListForCurrentSidebarCategory({className}) { + const category = useCurrentSidebarCategory(); + return ; +} +export default function DocCardList(props) { + const {items, className} = props; + const location = useLocation() + if (!items) { + return ; + } + const [filteredItems, setFilteredItems] = useState(filterDocCardListItems(items)) + useEffect(() => { + setFilteredItems(filteredItems.filter((e: any) => e?.href?.slice(0, -1) !== location.pathname)) + }, [items]) + return ( +
    + {filteredItems.map((item, index) => ( +
    + +
    + ))} +
    + ); +} diff --git a/src/theme/DocItem/Content/index.js b/src/theme/DocItem/Content/index.js new file mode 100644 index 0000000000..1356cef867 --- /dev/null +++ b/src/theme/DocItem/Content/index.js @@ -0,0 +1,50 @@ +import React from 'react'; +import clsx from 'clsx'; +import {ThemeClassNames} from '@docusaurus/theme-common'; +import {useDoc} from '@docusaurus/theme-common/internal'; +import Heading from '@theme/Heading'; +import MDXContent from '@theme/MDXContent'; +import TopSection from '@site/src/components/topSection'; +import { useLocation } from '@docusaurus/router'; +/** + Title can be declared inside md content or declared through + front matter and added manually. To make both cases consistent, + the added title is added under the same div.markdown block + See https://github.com/facebook/docusaurus/pull/4882#issuecomment-853021120 + + We render a "synthetic title" if: + - user doesn't ask to hide it with front matter + - the markdown content does not already contain a top-level h1 heading +*/ +function useSyntheticTitle() { + const {metadata, frontMatter, contentTitle} = useDoc(); + const shouldRender = + !frontMatter.hide_title && typeof contentTitle === 'undefined'; + if (!shouldRender) { + return null; + } + return metadata.title; +} +export default function DocItemContent({children}) { + const {frontMatter} = useDoc(); + const syntheticTitle = useSyntheticTitle(); + const location = useLocation() + return ( +
    + {syntheticTitle && ( +
    + {syntheticTitle} + {(frontMatter.langSwitcher || frontMatter.dbSwitcher) &&
    + +
    } +
    + )} + {children} +
    + ); +} diff --git a/src/theme/DocItem/Metadata/index.tsx b/src/theme/DocItem/Metadata/index.tsx new file mode 100644 index 0000000000..c520d95af5 --- /dev/null +++ b/src/theme/DocItem/Metadata/index.tsx @@ -0,0 +1,23 @@ +import React from 'react'; +import { PageMetadata } from '@docusaurus/theme-common'; +import { useDoc } from '@docusaurus/theme-common/internal'; + +import type { DocFrontMatter } from '@docusaurus/plugin-content-docs' + +type PrismaDocFrontMatter = DocFrontMatter & { + metaTitle: string, + metaDescription: string, +} + +export default function DocItemMetadata(): JSX.Element { + const { metadata, frontMatter, assets } = useDoc(); + const prismaFrontMatter = frontMatter as PrismaDocFrontMatter; + return ( + + ); +} diff --git a/src/theme/DocSidebarItem/Category/index.tsx b/src/theme/DocSidebarItem/Category/index.tsx new file mode 100644 index 0000000000..4978294d1d --- /dev/null +++ b/src/theme/DocSidebarItem/Category/index.tsx @@ -0,0 +1,198 @@ +import React, {useEffect, useMemo, useState} from 'react'; +import clsx from 'clsx'; +import { + ThemeClassNames, + useThemeConfig, + usePrevious, + Collapsible, + useCollapsible, +} from '@docusaurus/theme-common'; +import { + isActiveSidebarItem, + findFirstSidebarItemLink, + useDocSidebarItemsExpandedState, + isSamePath, +} from '@docusaurus/theme-common/internal'; +import Link from '@docusaurus/Link'; +import {translate} from '@docusaurus/Translate'; +import useIsBrowser from '@docusaurus/useIsBrowser'; +import DocSidebarItems from '@theme/DocSidebarItems'; +import styles from '../Link/styles.module.css'; +// If we navigate to a category and it becomes active, it should automatically +// expand itself +function useAutoExpandActiveCategory({isActive, collapsed, updateCollapsed}) { + const wasActive = usePrevious(isActive); + useEffect(() => { + const justBecameActive = isActive && !wasActive; + if (justBecameActive && collapsed) { + updateCollapsed(false); + } + }, [isActive, wasActive, collapsed, updateCollapsed]); +} +/** + * When a collapsible category has no link, we still link it to its first child + * during SSR as a temporary fallback. This allows to be able to navigate inside + * the category even when JS fails to load, is delayed or simply disabled + * React hydration becomes an optional progressive enhancement + * see https://github.com/facebookincubator/infima/issues/36#issuecomment-772543188 + * see https://github.com/facebook/docusaurus/issues/3030 + */ +function useCategoryHrefWithSSRFallback(item) { + const isBrowser = useIsBrowser(); + return useMemo(() => { + if (item.href && !item.linkUnlisted) { + return item.href; + } + // In these cases, it's not necessary to render a fallback + // We skip the "findFirstCategoryLink" computation + if (isBrowser || !item.collapsible) { + return undefined; + } + return findFirstSidebarItemLink(item); + }, [item, isBrowser]); +} +function CollapseButton({collapsed, categoryLabel, onClick}) { + return ( + + ); +} +export default function NavbarMobileSidebarHeader() { + return ( +
    + + /docs + + +
    + ); +} diff --git a/src/theme/Navbar/MobileSidebar/Header/styles.module.scss b/src/theme/Navbar/MobileSidebar/Header/styles.module.scss new file mode 100644 index 0000000000..5722f478a8 --- /dev/null +++ b/src/theme/Navbar/MobileSidebar/Header/styles.module.scss @@ -0,0 +1,8 @@ +.docsLink { + color: var(--ifm-navbar-link-color); + font-family: Inter, sans-serif; + font-size: 22px; + font-style: normal; + font-weight: 500; + margin-left: -28px; +} \ No newline at end of file diff --git a/src/theme/TabItem/index.tsx b/src/theme/TabItem/index.tsx new file mode 100644 index 0000000000..78ba69713f --- /dev/null +++ b/src/theme/TabItem/index.tsx @@ -0,0 +1,20 @@ +import React, { useEffect } from 'react'; +import clsx from 'clsx'; +import styles from './styles.module.scss'; +export default function TabItem({children, hidden, className, code = false, table = false, terminal = false }) { + return ( +
    +
    {children}
    +
    + ); +} diff --git a/src/theme/TabItem/styles.module.scss b/src/theme/TabItem/styles.module.scss new file mode 100644 index 0000000000..caadb0b548 --- /dev/null +++ b/src/theme/TabItem/styles.module.scss @@ -0,0 +1,31 @@ +.tabItem > *:last-child { + margin-bottom: 0; +} + +.children { + width: min-content; +} + +.tableChildren { + width: auto; + padding: 0 16px; +} + +.codeChildren { + width: max-content; + max-width: 100%; +} + +.terminal { + > div > div { + padding: 0; + } +} + +:global(.code-children > div) { + width: 100%; +} + +:global(.empty-code-tab) { + padding: 1rem; +} \ No newline at end of file diff --git a/src/theme/Tabs/index.tsx b/src/theme/Tabs/index.tsx new file mode 100644 index 0000000000..3a038c55b4 --- /dev/null +++ b/src/theme/Tabs/index.tsx @@ -0,0 +1,123 @@ +import React, {cloneElement} from 'react'; +import clsx from 'clsx'; +import { + useScrollPositionBlocker, + useTabs, + sanitizeTabsChildren, +} from '@docusaurus/theme-common/internal'; +import useIsBrowser from '@docusaurus/useIsBrowser'; +import styles from './styles.module.scss'; +function TabList({className, block, selectedValue, selectValue, tabValues}) { + const tabRefs = []; + const {blockElementScrollPositionUntilNextRender} = + useScrollPositionBlocker(); + const handleTabChange = (event) => { + const newTab = event.currentTarget; + const newTabIndex = tabRefs.indexOf(newTab); + const newTabValue = tabValues[newTabIndex].value; + if (newTabValue !== selectedValue) { + blockElementScrollPositionUntilNextRender(newTab); + selectValue(newTabValue); + } + }; + const handleKeydown = (event) => { + let focusElement = null; + switch (event.key) { + case 'Enter': { + handleTabChange(event); + break; + } + case 'ArrowRight': { + const nextTab = tabRefs.indexOf(event.currentTarget) + 1; + focusElement = tabRefs[nextTab] ?? tabRefs[0]; + break; + } + case 'ArrowLeft': { + const prevTab = tabRefs.indexOf(event.currentTarget) - 1; + focusElement = tabRefs[prevTab] ?? tabRefs[tabRefs.length - 1]; + break; + } + default: + break; + } + focusElement?.focus(); + }; + return ( +
      + {tabValues.map(({value, label, attributes}) => ( +
    • tabRefs.push(tabControl)} + onKeyDown={handleKeydown} + onClick={handleTabChange} + {...attributes} + className={clsx('tabs__item', styles.tabItem, attributes?.className, { + 'tabs__item--active': selectedValue === value, + })}> + {label ?? value} +
    • + ))} +
    + ); +} +function TabContent({lazy, children, selectedValue, transparent, code, terminal}) { + const childTabs = (Array.isArray(children) ? children : [children]).filter( + Boolean, + ); + if (lazy) { + const selectedTabItem = childTabs.find( + (tabItem) => tabItem.props.value === selectedValue, + ); + if (!selectedTabItem) { + // fail-safe or fail-fast? not sure what's best here + return null; + } + return cloneElement(selectedTabItem, {className: 'margin-top--md'}); + } + return ( +
    + {childTabs.map((tabItem, i) => + cloneElement(tabItem, { + key: i, + hidden: tabItem.props.value !== selectedValue, + code: code, + terminal: terminal + }), + )} +
    + ); +} +function TabsComponent(props) { + const tabs = useTabs(props); + return ( +
    + + +
    + ); +} +export default function Tabs(props) { + const isBrowser = useIsBrowser(); + return ( + + {sanitizeTabsChildren(props.children)} + + ); +} diff --git a/src/theme/Tabs/styles.module.scss b/src/theme/Tabs/styles.module.scss new file mode 100644 index 0000000000..c82285257f --- /dev/null +++ b/src/theme/Tabs/styles.module.scss @@ -0,0 +1,25 @@ +.tabList { + margin-bottom: var(--ifm-leading); +} + +.tabItem { + margin-top: 0 !important; +} + +.transparent { + background-color: revert !important; + border: none !important; + pre { + padding-top: var(--ifm-pre-padding); + background: var(--code-bgd-color) !important; + } +} + +.code { + pre { + padding-bottom: 0 !important; + code { + padding-bottom: var(--ifm-pre-padding) !important; + } + } +} \ No newline at end of file diff --git a/src/theme/breakpoints.ts b/src/theme/breakpoints.ts deleted file mode 100644 index 2b8e8f898f..0000000000 --- a/src/theme/breakpoints.ts +++ /dev/null @@ -1,5 +0,0 @@ -export const mobile = 360 -export const tabletVertical = 768 -export const desktopSmall = 940 -export const tabletHorizontal = 1024 -export const desktopLarge = 1440 diff --git a/src/theme/components/buttons.ts b/src/theme/components/buttons.ts deleted file mode 100644 index bf8cf17466..0000000000 --- a/src/theme/components/buttons.ts +++ /dev/null @@ -1,199 +0,0 @@ -import * as t from '../primitives' - -const buttonDefault = { - transition: 'background-color .1s ease, color .2s ease', - backgroundColor: 'transparent', // t.gray['500'] - color: t.colors.text, - fontFamily: t.fonts.text, - fontWeight: 700, - hover: { - backgroundColor: 'transparent', // t.gray['600'] - }, -} - -export const buttonsDefault = { - primary: { - ...buttonDefault, - color: 'white', - backgroundColor: t.indigo[600], - border: `1px solid ${t.indigo[600]}`, - hover: { - border: `1px solid ${t.indigo[700]}`, - backgroundColor: t.indigo[700], - color: 'white', - }, - active: { - border: `1px solid ${t.indigo[800]}`, - backgroundColor: t.indigo[800], - color: 'white', - }, - indigo: { - backgroundColor: t.indigo[600], - color: 'white', - border: `1px solid ${t.indigo[600]}`, - hover: { - border: `1px solid ${t.indigo[700]}`, - backgroundColor: t.indigo[700], - color: 'white', - }, - active: { - border: `1px solid ${t.indigo[800]}`, - backgroundColor: t.indigo[800], - color: 'white', - }, - }, - teal: { - backgroundColor: t.teal[600], - color: 'white', - border: `1px solid ${t.teal[600]}`, - hover: { - border: `1px solid ${t.teal[700]}`, - backgroundColor: t.teal[700], - color: 'white', - }, - active: { - border: `1px solid ${t.teal[800]}`, - backgroundColor: t.teal[800], - color: 'white', - }, - }, - white: { - backgroundColor: 'white', - color: t.indigo[600], - border: `1px solid white`, - hover: { - border: `1px solid white`, - backgroundColor: 'white', - color: t.indigo[700], - }, - active: { - border: `1px solid white`, - backgroundColor: 'white', - color: t.indigo[800], - }, - }, - }, - - secondary: { - ...buttonDefault, - color: t.indigo[600], - border: `1px solid ${t.indigo[600]}`, - hover: { - backgroundColor: 'white', - color: t.indigo[700], - border: `1px solid ${t.indigo[700]}`, - }, - active: { - backgroundColor: 'white', - color: t.indigo[800], - border: `1px solid ${t.indigo[800]}`, - }, - indigo: { - backgroundColor: 'white', - color: t.indigo[600], - border: `1px solid ${t.indigo[600]}`, - hover: { - backgroundColor: 'white', - border: `1px solid ${t.indigo[700]}`, - color: t.indigo[700], - }, - active: { - backgroundColor: 'white', - border: `1px solid ${t.indigo[800]}`, - color: t.indigo[800], - }, - }, - teal: { - backgroundColor: 'white', - color: t.teal[600], - border: `1px solid ${t.teal[600]}`, - hover: { - border: `1px solid ${t.teal[700]}`, - backgroundColor: 'white', - color: t.teal[700], - }, - active: { - border: `1px solid ${t.teal[800]}`, - backgroundColor: 'white', - color: t.teal[800], - }, - }, - white: { - backgroundColor: 'white', - color: t.indigo[600], - border: `1px solid ${t.indigo[600]}`, - hover: { - backgroundColor: 'white', - border: `1px solid ${t.indigo[700]}`, - color: t.indigo[700], - }, - active: { - backgroundColor: 'white', - border: `1px solid ${t.indigo[800]}`, - color: t.indigo[800], - }, - }, - }, - - link: { - ...buttonDefault, - backgroundColor: 'transparent', - color: t.indigo[600], - border: 'none', - hover: { - backgroundColor: 'transparent', - color: t.indigo[800], - border: 'none', - }, - active: { - backgroundColor: 'transparent', - color: t.indigo[800], - border: 'none', - }, - indigo: { - backgroundColor: 'transparent', - color: t.indigo[600], - border: 'none', - hover: { - backgroundColor: 'transparent', - color: t.indigo[800], - border: 'none', - }, - active: { - backgroundColor: 'transparent', - color: t.indigo[800], - border: 'none', - }, - }, - teal: { - backgroundColor: 'transparent', - color: t.teal[600], - border: 'none', - hover: { - backgroundColor: 'transparent', - color: t.teal[800], - border: 'none', - }, - active: { - backgroundColor: 'transparent', - color: t.teal[800], - border: 'none', - }, - }, - white: { - backgroundColor: 'transparent', - border: 'none', - color: t.indigo[600], - hover: { - backgroundColor: 'transparent', - color: t.indigo[800], - border: 'none', - }, - active: { - backgroundColor: 'transparent', - color: t.indigo[800], - border: 'none', - }, - }, - }, -} diff --git a/src/theme/components/centerCard.ts b/src/theme/components/centerCard.ts deleted file mode 100644 index 3fbd3bb30a..0000000000 --- a/src/theme/components/centerCard.ts +++ /dev/null @@ -1,25 +0,0 @@ -import * as t from '../primitives' - -export const centerCardDefault = { - backgroundColor: 'white', - mobileNavigationBreakpoint: 940, - placeholder: '/placeholder.png', - icon: '/card-icon.svg', - navItemColor: t.gray['800'], - navItemHoverColor: t.indigo[600], - - mobileMenuButtonColor: t.gray['800'], - mobileLinkDividerColor: t.gray['300'], -} - -export const centerCardDark: typeof centerCardDefault = { - backgroundColor: t.black, - mobileNavigationBreakpoint: 940, - placeholder: '/placeholder.png', - icon: '/card-icon.svg', - navItemColor: 'white', - navItemHoverColor: t.indigo[300], - - mobileLinkDividerColor: t.gray['700'], - mobileMenuButtonColor: 'white', -} diff --git a/src/theme/components/contentCard.ts b/src/theme/components/contentCard.ts deleted file mode 100644 index 2fd79f48c8..0000000000 --- a/src/theme/components/contentCard.ts +++ /dev/null @@ -1,25 +0,0 @@ -import * as t from '../primitives' - -export const contentCardDefault = { - backgroundColor: 'white', - mobileNavigationBreakpoint: 940, - placeholder: '/placeholder.png', - icon: '/card-icon.svg', - navItemColor: t.gray['800'], - navItemHoverColor: t.indigo[600], - - mobileMenuButtonColor: t.gray['800'], - mobileLinkDividerColor: t.gray['300'], -} - -export const contentCardDark: typeof contentCardDefault = { - backgroundColor: t.black, - mobileNavigationBreakpoint: 940, - placeholder: '/placeholder.png', - icon: '/card-icon.svg', - navItemColor: 'white', - navItemHoverColor: t.indigo[300], - - mobileLinkDividerColor: t.gray['700'], - mobileMenuButtonColor: 'white', -} diff --git a/src/theme/components/darkCard.ts b/src/theme/components/darkCard.ts deleted file mode 100644 index eb109c8799..0000000000 --- a/src/theme/components/darkCard.ts +++ /dev/null @@ -1,25 +0,0 @@ -import * as t from '../primitives' - -export const darkCardDefault = { - backgroundColor: 'black', - mobileNavigationBreakpoint: 940, - placeholder: '/placeholder.png', - icon: '/card-icon.svg', - navItemColor: t.gray['800'], - navItemHoverColor: t.indigo[600], - - mobileMenuButtonColor: t.gray['800'], - mobileLinkDividerColor: t.gray['300'], -} - -export const darkCardDark: typeof darkCardDefault = { - backgroundColor: t.black, - mobileNavigationBreakpoint: 940, - placeholder: '/placeholder.png', - icon: '/card-icon.svg', - navItemColor: 'white', - navItemHoverColor: t.indigo[300], - - mobileLinkDividerColor: t.gray['700'], - mobileMenuButtonColor: 'white', -} diff --git a/src/theme/components/footer.ts b/src/theme/components/footer.ts deleted file mode 100644 index a23ed3ccff..0000000000 --- a/src/theme/components/footer.ts +++ /dev/null @@ -1,37 +0,0 @@ -import * as t from '../primitives' - -export const footerDefault = { - mobileBreakpoint: 940, - - backgroundColor: 'white', - titleColor: t.gray[700], - titleSize: t.baseFontSizes[16], - - linkColor: t.gray[800], - linkHoverColor: { - indigo: t.indigo[600], - teal: t.teal[700], - white: t.indigo[600], - }, - linkSize: t.baseFontSizes[18], - - logoUrl: 'https://prismalens.vercel.app/header/logo-dark.svg', -} - -export const footerDark: typeof footerDefault = { - mobileBreakpoint: 940, - - backgroundColor: t.blueGray[900], - titleColor: 'white', - titleSize: t.baseFontSizes[16], - - linkColor: 'white', - linkHoverColor: { - indigo: t.indigo[600], - teal: t.teal[600], - white: t.indigo[600], - }, - linkSize: t.baseFontSizes[18], - - logoUrl: 'https://prismalens.vercel.app/header/logo-white.svg', -} diff --git a/src/theme/components/header.ts b/src/theme/components/header.ts deleted file mode 100644 index 08cebd2d2f..0000000000 --- a/src/theme/components/header.ts +++ /dev/null @@ -1,39 +0,0 @@ -import * as t from '../primitives' - -export const headerDefault = { - backgroundColor: 'white', - mobileNavigationBreakpoint: 1040, - logoUrl: 'https://prismalens.vercel.app/header/logo-dark.svg', - navItemColor: t.gray['800'], - navItemHoverColor: { - indigo: t.indigo[600], - teal: t.teal[700], - white: t.indigo[600], - }, - mobileMenuButtonColor: t.gray['800'], - mobileLinkDividerColor: t.gray['300'], - // Dropdown Panel on Mobile - mobileDropdownPanelBackgroundColor: t.blueGray['100'], - mobileDropdownPanelHeadingColor: t.gray['600'], - mobileDropdownPanelLinkTitleColor: t.gray['800'], - mobileDropdownPanelLinkSubTitleColor: t.blueGray['600'], -} - -export const headerDark: typeof headerDefault = { - backgroundColor: t.black, - logoUrl: 'https://prismalens.vercel.app/header/logo-white.svg', - mobileNavigationBreakpoint: 1040, - navItemColor: 'white', - navItemHoverColor: { - indigo: t.indigo[300], - teal: t.teal[300], - white: t.indigo[300], - }, - mobileLinkDividerColor: t.gray['700'], - mobileMenuButtonColor: 'white', - // Dropdown Panel on Mobile - mobileDropdownPanelBackgroundColor: t.gray['800'], - mobileDropdownPanelHeadingColor: t.gray['400'], - mobileDropdownPanelLinkTitleColor: 'white', - mobileDropdownPanelLinkSubTitleColor: 'white', -} diff --git a/src/theme/components/hero.ts b/src/theme/components/hero.ts deleted file mode 100644 index 8e1359ad9a..0000000000 --- a/src/theme/components/hero.ts +++ /dev/null @@ -1,25 +0,0 @@ -import * as t from '../primitives' - -export const heroDefault = { - backgroundColor: 'white', - mobileNavigationBreakpoint: 940, - leftGrid: '/grid-left.svg', - rightGrid: '/grid-right.svg', - navItemColor: t.gray['800'], - navItemHoverColor: t.indigo[600], - - mobileMenuButtonColor: t.gray['800'], - mobileLinkDividerColor: t.gray['300'], -} - -export const heroDark: typeof heroDefault = { - backgroundColor: t.black, - mobileNavigationBreakpoint: 940, - leftGrid: '/grid-left.svg', - rightGrid: '/grid-right.svg', - navItemColor: 'white', - navItemHoverColor: t.indigo[300], - - mobileLinkDividerColor: t.gray['700'], - mobileMenuButtonColor: 'white', -} diff --git a/src/theme/components/labels.ts b/src/theme/components/labels.ts deleted file mode 100644 index a34726a558..0000000000 --- a/src/theme/components/labels.ts +++ /dev/null @@ -1,15 +0,0 @@ -import * as t from '../primitives' - -const labelDefault = { - backgroundColor: t.gray[500], - color: 'white', - fontSize: t.fontSizes[14], - padding: `${t.baseSpace[5]} ${t.baseSpace[8]}`, - borderRadius: '4px', -} - -export const labelsDefault = { - default: labelDefault, - primary: { ...labelDefault, backgroundColor: t.indigo[600] }, - secondary: { ...labelDefault, backgroundColor: t.teal[600] }, -} diff --git a/src/theme/css/button.ts b/src/theme/css/button.ts deleted file mode 100644 index e61e2719f5..0000000000 --- a/src/theme/css/button.ts +++ /dev/null @@ -1,166 +0,0 @@ -import { defaultTheme } from '../' -import * as t from '../primitives' - -type ColorType = 'indigo' | 'teal' | 'white' -type BtnType = 'primary' | 'secondary' | 'link' | undefined - -export const buttonCss = ( - type: BtnType, - color: ColorType, - icon: undefined | 'left' | 'right', - disabled: boolean, - transparent: boolean -) => { - const btnType = defaultTheme.buttons[type ?? 'primary'] - return ` - display: inline-flex; - justify-content: center; - max-width: 100%; - text-align: left; - z-index: 1000; - margin: ${type !== 'link' ? '4px;' : icon === 'left' ? `4px 4px 4px 12px;` : `4px 12px 4px 4px;`} - width: max-content; - align-items: center; - box-sizing: border-box; - border-radius: 6px; - text-decoration: none; - cursor: ${disabled ? 'auto' : 'pointer'}; - position: relative; - line-height: 1; - transition: ${btnType.transition}; - font-family: ${btnType.fontFamily}; - font-weight: ${btnType.fontWeight}; - font-size: 18px; - border: none; - ${!disabled ? `border: ${color ? btnType[color]?.border : btnType.border};` : ``} - background-color: ${ - disabled - ? t.colors.gray[300] - : transparent - ? 'transparent !important' - : color - ? btnType[color]?.backgroundColor - : btnType.backgroundColor - }; - color: ${ - disabled - ? t.colors.gray[600] - : color - ? transparent - ? btnType[color]?.backgroundColor - : btnType[color]?.color - : transparent - ? btnType.backgroundColor - : btnType.color - }; - padding: ${ - type !== 'link' - ? !icon - ? '16px 24px' - : icon === 'left' - ? '16px 24px 16px 40px' - : '16px 40px 16px 24px' - : icon === 'left' - ? '0 0 0 10px' - : '0 10px 0 0' - }; - ${ - icon === 'left' - ? ` - flex-direction: row-reverse; - ` - : `` - } - ${ - !disabled - ? ` - &:hover { - ${ - type !== 'link' && `border: ${color ? btnType[color]?.hover.border : btnType.hover.border};` - } - background-color: ${ - color ? btnType[color]?.hover.backgroundColor : btnType.hover.backgroundColor - }; - color: ${btnType[color]?.hover[transparent ? `backgroundColor` : `color`]}; - ${type !== 'primary' ? `border-color: ${btnType[color]?.hover.color};` : ``} - &:before { - background-color: ${color ? btnType[color]?.hover.color : btnType.hover.color}; - } - > .btn-arrow { - transform: translate(4px, -50%); - } - };` - : `` - } - &:focus { - &:after { - content: ""; - position: absolute; - ${ - type === 'link' - ? ` - width: calc(100% + 20px); - height: calc(100% + 20px); - left: -8px; - top: -8px; - ` - : ` - width: calc(100% + 4px); - height: calc(100% + 4px); - left: -4px; - top: -4px; - ` - } - border-radius: 9px; - box-sizing: content-box; - border: 2px solid ${color ? btnType[color]?.hover.color : btnType.hover.color}; - } - } - &:active { - ${ - type !== 'link' && !disabled - ? `border: ${color ? btnType[color]?.active.border : btnType.active.border};` - : `` - } - background-color: ${ - !disabled - ? color - ? btnType[color]?.active.backgroundColor - : btnType.active.backgroundColor - : t.colors.gray[300] - }; - - color: ${ - !disabled - ? btnType[color]?.active[transparent ? `backgroundColor` : `color`] - : t.colors.gray[600] - }; - ${ - type !== 'primary' && !disabled - ? `border-color: ${btnType[color]?.active[transparent ? `backgroundColor` : `color`]};` - : `` - } - &:before { - background-color: ${ - color - ? btnType[color]?.active[transparent ? `backgroundColor` : `color`] - : btnType.active.color - }; - } - } - ${ - type === 'link' && - ` - &:before { - content: ""; - position: absolute; - height: 2px; - width: calc(100% - 9px); - ${icon === 'left' ? `right: 0;` : `left: 0;`} - bottom: -4px; - background-color: ${color ? btnType[color]?.color : btnType.color}; - }; - ` - } -` -} diff --git a/src/theme/dark.ts b/src/theme/dark.ts deleted file mode 100644 index 5d8fb7b32c..0000000000 --- a/src/theme/dark.ts +++ /dev/null @@ -1,45 +0,0 @@ -import * as breakpoints from './breakpoints' -import { buttonsDefault } from './components/buttons' -import { centerCardDark } from './components/centerCard' -import { contentCardDark } from './components/contentCard' -import { darkCardDark } from './components/darkCard' -import { footerDark } from './components/footer' -import { headerDark } from './components/header' -import { heroDark } from './components/hero' -import { labelsDefault } from './components/labels' -import * as t from './primitives' - -const theme = { - breakpoints, - - bodyBackgroundColor: 'white', - - header: headerDark, - footer: footerDark, - hero: heroDark, - - labels: labelsDefault, - - buttons: buttonsDefault, - - centerCard: centerCardDark, - contentCard: contentCardDark, - darkCard: darkCardDark, - - fonts: t.fonts, - fontSizes: t.fontSizes, - colors: t.colors, - space: t.space, - transitions: { - standard: '0.1s ease-in', - }, - shadows: { - small: '0px 4px 8px rgba(60,45,111,0.1), 0px 1px 3px rgba(60,45,111,0.15)', - }, - radii: { - small: '5px', - medium: '8px', - }, -} - -export default theme diff --git a/src/theme/default.ts b/src/theme/default.ts deleted file mode 100644 index 01ceca7fef..0000000000 --- a/src/theme/default.ts +++ /dev/null @@ -1,44 +0,0 @@ -import * as breakpoints from './breakpoints' -import { buttonsDefault } from './components/buttons' -import { centerCardDefault } from './components/centerCard' -import { contentCardDefault } from './components/contentCard' -import { darkCardDefault } from './components/darkCard' -import { footerDefault } from './components/footer' -import { headerDefault } from './components/header' -import { heroDefault } from './components/hero' -import { labelsDefault } from './components/labels' -import * as t from './primitives' - -const theme = { - breakpoints, - - bodyBackgroundColor: 'white', - - header: headerDefault, - footer: footerDefault, - hero: heroDefault, - - labels: labelsDefault, - - buttons: buttonsDefault, - centerCard: centerCardDefault, - contentCard: contentCardDefault, - darkCard: darkCardDefault, - - fonts: t.fonts, - fontSizes: t.fontSizes, - colors: t.colors, - space: t.space, - transitions: { - standard: '0.1s ease-in', - }, - shadows: { - small: '0px 4px 8px rgba(60,45,111,0.1), 0px 1px 3px rgba(60,45,111,0.15)', - }, - radii: { - small: '5px', - medium: '8px', - }, -} - -export default theme diff --git a/src/theme/index.ts b/src/theme/index.ts deleted file mode 100644 index 28687fa1e7..0000000000 --- a/src/theme/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { default as darkTheme } from './dark' -export { default as defaultTheme } from './default' diff --git a/src/theme/primitives.ts b/src/theme/primitives.ts deleted file mode 100644 index 22be5d9980..0000000000 --- a/src/theme/primitives.ts +++ /dev/null @@ -1,223 +0,0 @@ -export const gray = { - 100: '#F7FAFC', - 200: '#EDF2F7', - 300: '#E2E8F0', - 400: '#CBD5E0', - 500: '#A0AEC0', - 600: '#718096', - 700: '#4A5568', - 800: '#2D3748', - 900: '#1A202C', -} -export const black = '#1A202C' - -export const blueGray = { - 100: '#F7FAFC', - 200: '#EDF2F7', - 300: '#E2E8F0', - 400: '#CBD5E0', - 500: '#A0AEC0', - 600: '#718096', - 700: '#4A5568', - 800: '#2D3748', - 900: '#1A202C', -} - -export const teal = { - 100: '#D9F9F6', - 200: '#B7F4EE', - 300: '#92EFE6', - 400: '#71E8DF', - 500: '#04C8BB', - 600: '#16A394', - 700: '#187367', - 800: '#154F47', -} - -export const purple = { - 100: '#FAE8FA', - 200: '#F5C9F4', - 300: '#F4A0F1', - 400: '#E76DE3', - 500: '#C742C1', - 600: '#B024AD', - 700: '#891A8A', - 800: '#5B115F', -} - -export const indigo = { - 100: '#EBF4FF', - 200: '#C3DAFE', - 300: '#A3BFFA', - 400: '#7F9CF5', - 500: '#667EEA', - 600: '#5A67D8', - 700: '#4C51BF', - 800: '#434190', -} - -export const green = { - 100: '#F0FFF4', - 200: '#C6F6D5', - 300: '#9AE6B4', - 400: '#68D391', - 500: '#48BB78', - 600: '#38A169', - 700: '#276749', - 800: '#22543D', -} - -export const orange = { - 100: '#FFFAF0', - 200: '#FEEBC8', - 300: '#FBD38D', - 400: '#F6AD55', - 500: '#ED8936', - 600: '#DD6B20', - 700: '#C05621', - 800: '#9C4221', -} - -export const red = { - 100: '#FFF5F5', - 200: '#FED7D7', - 300: '#FEB2B2', - 400: '#FC8181', - 500: '#F56565', - 600: '#E53E3E', - 700: '#C53030', - 800: '#9B2C2C', -} - -export const pink = { - 100: '#FFF5F7', - 200: '#FED7E2', - 300: '#FBB6CE', - 400: '#F687B3', - 500: '#ED64A6', - 600: '#D53F8C', - 700: '#B83280', - 800: '#97266D', - 900: '#702459', -} - -export const blue = { - 100: '#EBF8FF', - 200: '#BEE3F8', - 300: '#90CDF4', - 400: '#63B3ED', - 500: '#4299E1', - 600: '#3182CE', - 700: '#2B6CB0', - 800: '#2C5282', - 900: '#2A4365', -} - -export const yellow = { - 100: '#FFFFF0', - 200: '#FEFCBF', - 300: '#FAF089', - 400: '#F6E05E', - 500: '#ECC94B', - 600: '#D69E2E', - 700: '#B7791F', - 800: '#975A16', - 900: '#744210', -} - -export const colors: { [key: string]: any } = { - gray, - red, - indigo, - teal, - blueGray, - green, - purple, - orange, - pink, - yellow, - black, - white: '#fff', - blue, - text: gray[800], - textSecondary: gray[600], -} - -export const fonts = { - text: `"Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"`, - display: `"Barlow", system-ui, Arial, sans-serif`, - mono: `"JetBrains Mono", Monaco, Consolas, "Liberation Mono", "Courier New", monospace`, - heading: `'Barlow', sans-serif`, -} - -export const baseFontSizes = { - 12: '.75rem', - 14: '.875rem', - 16: '1rem', - 18: '1.125rem', - 20: '1.25rem', - 22: '1.375rem', - 24: '1.5rem', - 26: '1.625rem', - 28: '1.75rem', - 30: '1.875rem', - 32: '2rem', - 36: '2.25rem', - 38: '2.375rem', - 40: '2.5rem', - 48: '3rem', - 56: '3.5rem', - 64: '4rem', - 72: '4.5rem', -} - -export const fontSizes = { - ...baseFontSizes, - small: baseFontSizes[14], - body: baseFontSizes[16], - large: baseFontSizes[20], - display: baseFontSizes[48], - displaySmall: baseFontSizes[24], - displayLarge: baseFontSizes[72], -} - -export const baseSpace = { - 0: '0rem', - 1: '1px', - 2: '0.125rem', - 4: '0.25rem', - 5: `${5 / 16}rem`, // Maybe don't use this even though it's from design? - 6: `${6 / 16}rem`, // Maybe don't use this even though it's from design? - 8: '0.5rem', - 12: '0.75rem', - 14: '0.875rem', - 15: `${15 / 16}rem`, - 16: '1rem', - 18: '1.125rem', - 20: '1.25rem', - 22: '1.375rem', - 24: '1.5rem', - 26: `${26 / 16}rem`, - 30: `${30 / 16}rem`, - 32: '2rem', - 40: '2.5rem', - 45: `${45 / 16}rem`, - 48: '3rem', - 64: '4rem', - 80: '5rem', - 96: '6rem', - 128: '8rem', - 160: '10rem', - 192: '12rem', - 224: '14rem', - 256: '16rem', -} - -export const space = { - ...baseSpace, - none: baseSpace[0], - one: baseSpace[1], - small: baseSpace[8], - medium: baseSpace[12], - large: baseSpace[20], -} diff --git a/src/theme/prism-include-languages.ts b/src/theme/prism-include-languages.ts new file mode 100644 index 0000000000..cf66987061 --- /dev/null +++ b/src/theme/prism-include-languages.ts @@ -0,0 +1,32 @@ +import siteConfig from '@generated/docusaurus.config' +import type * as PrismNamespace from 'prismjs' +import type { Optional } from 'utility-types' + +export default function prismIncludeLanguages(PrismObject: typeof PrismNamespace): void { + const { + themeConfig: { prism }, + } = siteConfig + const { additionalLanguages } = prism as { additionalLanguages: string[] } + + // Prism components work on the Prism instance on the window, while prism- + // react-renderer uses its own Prism instance. We temporarily mount the + // instance onto window, import components to enhance it, then remove it to + // avoid polluting global namespace. + // You can mutate PrismObject: registering plugins, deleting languages... As + // long as you don't re-assign it + globalThis.Prism = PrismObject + + additionalLanguages.forEach((lang) => { + if (lang === 'php') { + // eslint-disable-next-line global-require + require('prismjs/components/prism-markup-templating.js') + } + // eslint-disable-next-line global-require, import/no-dynamic-require + require(`prismjs/components/prism-${lang}`) + }) + + require('@site/src/theme/prism-prisma.js') + + // @ts-ignore + delete (globalThis as Optional).Prism +} \ No newline at end of file diff --git a/src/theme/prism-prisma.js b/src/theme/prism-prisma.js new file mode 100644 index 0000000000..57144da313 --- /dev/null +++ b/src/theme/prism-prisma.js @@ -0,0 +1,25 @@ +Prism.languages.prisma = Prism.languages.extend('clike', { + keyword: /\b(?:datasource|enum|generator|model|type|view)\b/, + 'type-class-name': /(\s+)[A-Z]\w+/, ///(\b)(\s+)[A-Z]\w+/ +}) + +Prism.languages.javascript['class-name'][0].pattern = + /(\b(?:model|datasource|enum|generator|type|model|view)\s+)[\w.\\]+/ + +Prism.languages.insertBefore('prisma', 'function', { + annotation: { + pattern: /(^|[^.])@+\w+/, + lookbehind: true, + alias: 'punctuation', + }, +}) + +Prism.languages.insertBefore('prisma', 'punctuation', { + 'type-args': /\b(?:references|fields|onDelete|onUpdate):/, +}) + +Prism.languages.insertBefore('prisma', 'type-class-name', { + 'not-class': /\n(\s+)[A-Z]\w+/, +}) + +Prism.languages.json5 = Prism.languages.js \ No newline at end of file diff --git a/src/theme/styles.module.scss b/src/theme/styles.module.scss new file mode 100644 index 0000000000..af8b2cc578 --- /dev/null +++ b/src/theme/styles.module.scss @@ -0,0 +1,43 @@ +.codeWithResult { + margin-top: 2rem; + margin-bottom: 1.25rem; + .cmd{ + pre { + border-radius: 8px 8px 0 0; + } + } + .result { + background-color: var(--main-font-color) !important; + color: var(--code-inline-bgd-color) !important; + border-radius: 0px 0px 8px 8px; + .showBtn { + font-family: Inter; + font-style: normal; + font-weight: 600; + font-size: 12px; + line-height: 100%; + letter-spacing: 0.01em; + color: var(--code-inner-color); + height: 24px; + display: flex; + -webkit-box-align: center; + align-items: center; + cursor: pointer; + padding: 1rem; + } + pre { + background-color: var(--main-font-color) !important; + color: var(--code-inline-bgd-color) !important; + border-radius: 0px 0px 8px 8px; + } + } + pre { + margin-top: 0px; + code { + color: inherit !important; + span { + color: inherit !important; + } + } + } +} \ No newline at end of file diff --git a/src/utils/goToNavItem.ts b/src/utils/goToNavItem.ts deleted file mode 100644 index 8570f3bc66..0000000000 --- a/src/utils/goToNavItem.ts +++ /dev/null @@ -1,8 +0,0 @@ -export const goToNav = (pathname: string) => { - var currentElem = document.getElementById(pathname.replace(/\/$/, '')) - const sidebarElem = document.getElementById('sidebar-holder') - if (currentElem && sidebarElem) { - var topPos = currentElem.getBoundingClientRect().top - 250 - sidebarElem.scrollTo(0, topPos) - } -} diff --git a/src/utils/parentTitle.ts b/src/utils/parentTitle.ts deleted file mode 100644 index 0fd9fe1c38..0000000000 --- a/src/utils/parentTitle.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { urlGenerator } from './urlGenerator' - -const newParams = (langSwitcher: any, dbSwitcher: any) => - `${langSwitcher ? `${langSwitcher[0]}${dbSwitcher ? '-' : ''}` : ''}${ - dbSwitcher ? `${dbSwitcher[0]}` : '' - }` - -export const getParentTitle = (slug: string, allMdx?: any) => { - const allContent = - allMdx && - allMdx.edges && - allMdx.edges.map((mdx: any) => ({ - ...mdx.node.fields, - title: mdx.node.frontmatter.title, - staticLink: mdx.node.frontmatter.staticLink, - codeStyle: mdx.node.frontmatter.codeStyle, - langSwitcher: mdx.node.frontmatter.langSwitcher, - dbSwitcher: mdx.node.frontmatter.dbSwitcher, - })) - - allContent?.map((content: any) => { - content.parentTitle = [] - const parts = content.slug.split('/') - const slicedParts = parts.slice( - 1, - parts[parts.length - 1] === 'index' ? parts.length - 2 : parts.length - 1 - ) - slicedParts.forEach((part: any) => { - const parent = allContent.find((ac: any) => { - const parentParts = ac.slug.split('/') - return ( - parentParts[parentParts.length - 1] === 'index' && - parentParts[parentParts.length - 2] === part - ) - }) - if (parent) { - const newParamsParent = newParams(parent.langSwitcher, parent.dbSwitcher) - // const parts = parent.slug.split('/') - // const topLevel = parts.length == 3 && parts[parts.length - 1] === 'index' ? true : false - content.parentTitle.push({ - title: parent?.title, - codeStyle: parent?.codeStyle, - link: `${urlGenerator(parent.modSlug)}${newParamsParent ? '-' + newParamsParent : ''}`, - // link: topLevel || parent.staticLink ? null : urlGenerator(parent.modSlug), - }) - } - }) - }) - const currentSlug = allContent.find((mdx: any) => mdx.modSlug === slug) - return currentSlug ? currentSlug.parentTitle : [] -} diff --git a/src/utils/stats.js b/src/utils/stats.js deleted file mode 100644 index b2abe0c0db..0000000000 --- a/src/utils/stats.js +++ /dev/null @@ -1,38 +0,0 @@ -const ReactGA = require('react-ga') - -const GA_TRACKING_ID = 'UA-74131346-14' -const GA_ADDRESS = 'https://www.prisma.io/gastats.js' -const COLLECT_ADDRESS = 'https://stats.prisma.workers.dev' - -module.exports = { - init() { - ReactGA.initialize(GA_TRACKING_ID, { - gaAddress: GA_ADDRESS, - }) - - const ga = ReactGA.ga() - ga('set', 'anonymizeIp', true) - ga((u) => { - // Override sendHitTask to proxy tracking requests - u.set('sendHitTask', (model) => { - const xhr = new XMLHttpRequest() - xhr.open('POST', COLLECT_ADDRESS, true) - xhr.send(model.get('hitPayload')) - }) - }) - }, - - trackPage(page) { - const { host } = window.location - - if ( - host.includes('netlify') || - host.includes('localhost') || - host.includes('percy') || - host.includes('vercel') - ) { - return - } - ReactGA.pageview(page) - }, -} diff --git a/src/utils/stringify.ts b/src/utils/stringify.ts deleted file mode 100644 index 752d53f43d..0000000000 --- a/src/utils/stringify.ts +++ /dev/null @@ -1,41 +0,0 @@ -export function stringify(children: any): string { - if (typeof children === 'string') { - return children - } - - if (typeof children === 'undefined') { - return '' - } - - if (children === null) { - return '' - } - - if (children.props && children.props.children) { - children = children.props.children - } - if (children.props && children.props.children) { - children = children.props.children - } - - /** - * Necessary because now the pointer changed!!!! - */ - if (typeof children === 'string') { - return children - } - - if (Array.isArray(children)) { - return children - .map((el) => { - if (typeof el === 'string') { - return el - } else { - return stringify(el) - } - }) - .join('') - } - - return '' -} diff --git a/src/utils/treeData.ts b/src/utils/treeData.ts deleted file mode 100644 index 62a2d681ae..0000000000 --- a/src/utils/treeData.ts +++ /dev/null @@ -1,129 +0,0 @@ -import { urlGenerator } from './urlGenerator' -import { ArticleFields, ArticleFrontmatter } from '../interfaces/Article.interface' - -interface TreeNode { - node: { - fields: ArticleFields - frontmatter: ArticleFrontmatter - } -} - -const getCollpaseState = (part: string, location: any) => { - const mainpath = location.pathname.replace(/^\/|\/$/g, '').split('/') - const subpath = urlGenerator(part) - .replace(/^\/|\/$/g, '') - .split('/') - - const state = subpath.every((val) => mainpath.includes(val)) - return !state -} - -// TODO::Simplify the function -export const calculateTreeData = (edges: any, defaultCollapsed: any, location: any) => { - const tree = edges.reduce( - ( - accu: any, - { - node: { - fields: { slug, modSlug }, - frontmatter: { - title, - navTitle, - staticLink, - duration, - preview, - deprecated, - earlyaccess, - highlight, - dbSwitcher, - langSwitcher, - hidePage, - codeStyle, - hideTitle, - }, - }, - }: TreeNode - ) => { - const parts = slug.split('/') - const topLevel = parts.length == 3 && parts[parts.length - 1] === 'index' ? true : false - let { items: prevItems } = accu - const slicedParts = parts.slice(1, -1) - const newParams = `${langSwitcher ? `${langSwitcher[0]}${dbSwitcher ? '-' : ''}` : ''}${ - dbSwitcher ? `${dbSwitcher[0]}` : '' - }` - for (const part of slicedParts) { - let tmp = prevItems && prevItems.find(({ label }: any) => label == part) - if (tmp) { - if (!tmp.items) { - tmp.items = [] - } - } else { - tmp = { - label: part, - items: [], - topLevel, - preview, - deprecated, - earlyaccess, - highlight, - staticLink, - } - prevItems.push(tmp) - } - if (parts[parts.length - 1] === 'index' && parts[parts.length - 2] === part) { - tmp.url = `${urlGenerator(modSlug)}${newParams ? '-' + newParams : ''}` - tmp.slug = slug - tmp.title = title - tmp.navTitle = navTitle - tmp.staticLink = staticLink - tmp.duration = duration - tmp.preview = preview - tmp.deprecated = deprecated - tmp.earlyaccess = earlyaccess - tmp.highlight = highlight - tmp.topLevel = topLevel - tmp.hidePage = hidePage - tmp.codeStyle = codeStyle - tmp.parentLabel = parts[parts.length - 3] - tmp.parents = parts.filter((part) => part !== 'index') - tmp.hideTitle = hideTitle - if (defaultCollapsed && location) { - defaultCollapsed[part.toLowerCase()] = - tmp.topLevel || tmp.staticLink ? null : getCollpaseState(modSlug, location) - } - } - - prevItems = tmp.items - } - const slicedLength = parts.length - 1 - const existingItem = prevItems.find(({ label }: any) => label === parts[slicedLength]) - - if (!existingItem) { - prevItems.push({ - label: parts[slicedLength], - url: `${urlGenerator(modSlug)}${newParams ? '-' + newParams : ''}`, - slug: slug, - items: [], - title, - navTitle, - hideTitle, - staticLink, - duration, - preview, - deprecated, - earlyaccess, - highlight, - topLevel, - hidePage, - codeStyle, - parentLabel: parts[parts.length - 3], - parents: parts.filter((part) => part !== 'index'), - }) - } - - return accu - }, - { items: [] } - ) - return tree -} diff --git a/plugins/gatsby-remark-check-links-numberless/gatsby-node.js b/static/.nojekyll similarity index 100% rename from plugins/gatsby-remark-check-links-numberless/gatsby-node.js rename to static/.nojekyll diff --git a/static/_redirects b/static/_redirects new file mode 100644 index 0000000000..e134a484f3 --- /dev/null +++ b/static/_redirects @@ -0,0 +1,709 @@ +/docs/page-data/docs/* /docs/page-data/index/:splat +/docs/faq/* https://v1.prisma.io/docs/1.34/faq/:splat +/docs/-a002 https://v1.prisma.io/docs/1.34/get-started/ +/docs/-t002 https://v1.prisma.io/docs/1.34/get-started/ +/docs/-t002/ https://v1.prisma.io/docs/1.34/get-started/ +/docs/prisma-admin/ https://v1.prisma.io/docs/1.34/prisma-admin/ +/docs/prisma-cli-and-configuration/ https://v1.prisma.io/docs/1.34/prisma-cli-and-configuration/ +/docs/prisma-client/ https://v1.prisma.io/docs/1.34/prisma-client/ +/docs/prisma-server/ https://v1.prisma.io/docs/1.34/prisma-server/ +/docs/quickstart/ https://v1.prisma.io/docs/1.34/get-started/ +/docs/releases-and-maintenance/ https://v1.prisma.io/docs/1.34/releases-and-maintenance/ +/docs/datamodel-and-migrations/ https://v1.prisma.io/docs/1.34/datamodel-and-migrations +/docs/get-started/01-setting-up-prisma-new-database-GO-g002/ https://v1.prisma.io/docs/1.34/get-started +/docs/get-started/01-setting-up-prisma-new-database-JAVASCRIPT-a002/ https://v1.prisma.io/docs/1.34/get-started +/docs/get-started/01-setting-up-prisma-demo-server-a001/ https://v1.prisma.io/docs/1.34/get-started/01-setting-up-prisma-demo-server-JAVASCRIPT-a001/ +/docs/get-started/01-setting-up-prisma-existing-database-a003/ https://v1.prisma.io/docs/1.34/get-started/01-setting-up-prisma-demo-server-JAVASCRIPT-a001/ +/docs/get-started/01-setting-up-prisma-new-database-a002/ https://v1.prisma.io/docs/1.34/get-started/01-setting-up-prisma-new-database-JAVASCRIPT-a002/ +/docs/datamodel-and-migrations/datamodel-MYSQL-knul/ https://v1.prisma.io/docs/1.34/datamodel-and-migrations +/docs/data-model-and-migrations/introspection-mapping-to-existing-db-soi1/ https://v1.prisma.io/docs/1.34/data-model-and-migrations/introspection-mapping-to-existing-db-soi1/ +/docs/understand-prisma/how-prisma-works-under-the-hood-j8ff/ https://v1.prisma.io/docs/1.34/understand-prisma/how-prisma-works-under-the-hood-j8ff/ +/docs/understand-prisma/prisma-basics-datamodel-client-and-server-fgz4/ https://v1.prisma.io/docs/1.34/understand-prisma/prisma-basics-datamodel-client-and-server-fgz4/ +/docs/understand-prisma/prisma-introduction-what-why-how-j9ff/ https://v1.prisma.io/docs/1.34/understand-prisma/prisma-introduction-what-why-how-j9ff/ +/docs/understand-prisma/prisma-vs-traditional-orms/prisma-vs-mongoose-ys8c/ https://v1.prisma.io/docs/1.34/understand-prisma/prisma-vs-traditional-orms/prisma-vs-mongoose-ys8c/ +/docs/understand-prisma/prisma-vs-traditional-orms/prisma-vs-sequelize-c4fk/ https://v1.prisma.io/docs/1.34/understand-prisma/prisma-vs-traditional-orms/prisma-vs-sequelize-c4fk/ +/docs/understand-prisma/prisma-vs-traditional-orms/prisma-vs-typeorm-k9fh/ https://v1.prisma.io/docs/1.34/understand-prisma/prisma-vs-traditional-orms/prisma-vs-typeorm-k9fh/ +/docs/prisma-client/basic-data-access/reading-data-GO-go05/ https://v1.prisma.io/docs/1.34/prisma-client/basic-data-access/reading-data-GO-go05/ +/docs/prisma-client/basic-data-access/reading-data-JAVASCRIPT-rsc2/ https://v1.prisma.io/docs/1.34/prisma-client/basic-data-access/reading-data-JAVASCRIPT-rsc2/ +/docs/prisma-client/basic-data-access/reading-data-TYPESCRIPT-rsc3/ https://v1.prisma.io/docs/1.34/prisma-client/basic-data-access/reading-data-TYPESCRIPT-rsc3/ +/docs/prisma-client/basic-data-access/writing-data-GO-go08/ https://v1.prisma.io/docs/1.34/prisma-client/basic-data-access/writing-data-GO-go08/ +/docs/prisma-client/basic-data-access/writing-data-JAVASCRIPT-rsc6/ https://v1.prisma.io/docs/1.34/prisma-client/basic-data-access/writing-data-JAVASCRIPT-rsc6/ +/docs/prisma-client/basic-data-access/writing-data-TYPESCRIPT-rsc7/ https://v1.prisma.io/docs/1.34/prisma-client/basic-data-access/writing-data-TYPESCRIPT-rsc7/ +/docs/prisma-client/features/check-existence-GO-go01/ https://v1.prisma.io/docs/1.34/prisma-client/features/check-existence-GO-go01/ +/docs/prisma-client/features/check-existence-JAVASCRIPT-pyl1/ https://v1.prisma.io/docs/1.34/prisma-client/features/check-existence-JAVASCRIPT-pyl1/ +/docs/prisma-client/features/check-existence-TYPESCRIPT-pyl2/ https://v1.prisma.io/docs/1.34/prisma-client/features/check-existence-TYPESCRIPT-pyl2/ +/docs/prisma-client/features/realtime-GO-go06/ https://v1.prisma.io/docs/1.34/prisma-client/features/realtime-GO-go06/ +/docs/prisma-client/features/realtime-JAVASCRIPT-rsc8/ https://v1.prisma.io/docs/1.34/prisma-client/features/realtime-JAVASCRIPT-rsc8/ +/docs/prisma-client/features/realtime-TYPESCRIPT-rsc9/ https://v1.prisma.io/docs/1.34/prisma-client/features/realtime-TYPESCRIPT-rsc9/ +/docs/prisma-client/setup/constructor-GO-go02/ https://v1.prisma.io/docs/1.34/prisma-client/setup/constructor-GO-go02/ +/docs/prisma-client/setup/constructor-JAVASCRIPT-rsc4/ https://v1.prisma.io/docs/1.34/prisma-client/setup/constructor-JAVASCRIPT-rsc4/ +/docs/prisma-client/setup/constructor-TYPESCRIPT-rsc5/ https://v1.prisma.io/docs/1.34/prisma-client/setup/constructor-TYPESCRIPT-rsc5/ +/docs/prisma-client/setup/generating-the-client-GO-r3c3/ https://v1.prisma.io/docs/1.34/prisma-client/setup/generating-the-client-GO-r3c3/ +/docs/prisma-client/setup/generating-the-client-JAVASCRIPT-rsc1/ https://v1.prisma.io/docs/1.34/prisma-client/setup/generating-the-client-JAVASCRIPT-rsc1/ +/docs/prisma-client/setup/generating-the-client-TYPESCRIPT-r3c2/ https://v1.prisma.io/docs/1.34/prisma-client/setup/generating-the-client-TYPESCRIPT-r3c2/ +/docs/run-prisma-server/database-connector-MYSQL-jgfs/ https://v1.prisma.io/docs/1.34/prisma-server/database-connector-MYSQL-jgfs/ +/docs/guides/database-workflows/setting-up-a-database/postgresql /docs/dataguide/postgresql/setting-up-a-local-postgresql-database +/docs/guides/database-workflows/setting-up-a-database/mysql /docs/dataguide/mysql/setting-up-a-local-mysql-database +/docs/guides/database-workflows/setting-up-a-database/sqlite /docs/dataguide/sqlite/setting-up-a-local-sqlite-database +/docs/guides/database-workflows/import-and-export-data/postgresql /docs/dataguide/postgresql/inserting-and-modifying-data/importing-and-exporting-data-in-postgresql +/docs/guides/database-workflows/import-and-export-data/mysql /docs/dataguide/mysql/importing-and-exporting-data-in-mysql +/docs/guides/database-workflows/import-and-export-data/sqlite /docs/dataguide/sqlite/importing-and-exporting-data-in-sqlite +/docs/guides/database-workflows/* /docs/guides/general-guides/database-workflows/:splat +/docs/guides/troubleshooting /docs/support/help-articles +/docs/guides/troubleshooting/autocompletion-in-graphql-resolvers-with-js /docs/support/help-articles/autocompletion-in-graphql-resolvers-with-js +/docs/getting-started/quickstart-typescript /docs/getting-started/quickstart +/docs/getting-started/quickstart-javascript /docs/getting-started/quickstart +/docs/getting-started/quickstart-node /docs/getting-started/quickstart +/docs/reference/tools-and-interfaces/prisma-schema/prisma-schema-file /docs/reference/tools-and-interfaces/prisma-schema +/docs/reference/tools-and-interfaces/prisma-client/api /docs/reference/tools-and-interfaces/prisma-client +/docs/reference/tools-and-interfaces/prisma-client/api /docs/reference/tools-and-interfaces/prisma-client +/docs/guides/upgrade-from-prisma-1/should-you-upgrade /docs/guides/upgrade-from-prisma-1/how-to-upgrade +/docs/reference/tools-and-interfaces/prisma-schema/models /docs/reference/tools-and-interfaces/prisma-schema/data-model +/docs/concepts/overview/api-comparisons/prisma-and-typeorm /docs/concepts/more/comparisons/prisma-and-typeorm +/docs/concepts/overview/api-comparisons/prisma-and-sequelize /docs/concepts/more/comparisons/prisma-and-sequelize +/docs/concepts/overview/api-comparisons/prisma-and-mongoose /docs/concepts/more/comparisons/prisma-and-mongoose +/docs/concepts/overview/why-prisma/api-comparisons/prisma-and-typeorm /docs/concepts/more/comparisons/prisma-and-typeorm +/docs/concepts/overview/why-prisma/api-comparisons/prisma-and-sequelize /docs/concepts/more/comparisons/prisma-and-sequelize +/docs/concepts/overview/why-prisma/api-comparisons/prisma-and-mongoose /docs/concepts/more/comparisons/prisma-and-mongoose +/docs/getting-started/setup-prisma/start-from-scratch-sql-typescript-postgres /docs/getting-started/setup-prisma/start-from-scratch/relational-databases-typescript-postgresql +/docs/getting-started/setup-prisma/start-from-scratch-sql-node-postgres /docs/getting-started/setup-prisma/start-from-scratch/relational-databases-node-postgresql +/docs/getting-started/setup-prisma/start-from-scratch-sql-typescript-mysql /docs/getting-started/setup-prisma/start-from-scratch/relational-databases-typescript-mysql +/docs/getting-started/setup-prisma/start-from-scratch-sql-node-mysql /docs/getting-started/setup-prisma/start-from-scratch/relational-databases-node-mysql +/docs/getting-started/setup-prisma/start-from-scratch-prisma-migrate-typescript-postgres /docs/getting-started/setup-prisma/start-from-scratch/relational-databases-typescript-postgresql +/docs/getting-started/setup-prisma/start-from-scratch-prisma-migrate-node-postgres /docs/getting-started/setup-prisma/start-from-scratch/relational-databases-node-postgresql +/docs/getting-started/setup-prisma/start-from-scratch-prisma-migrate-typescript-mysql /docs/getting-started/setup-prisma/start-from-scratch/relational-databases-typescript-mysql +/docs/getting-started/setup-prisma/start-from-scratch-prisma-migrate-node-mysql /docs/getting-started/setup-prisma/start-from-scratch/relational-databases-node-mysql +/docs/getting-started/setup-prisma/start-from-scratch-typescript-postgres /docs/getting-started/setup-prisma/start-from-scratch/relational-databases-typescript-postgresql +/docs/getting-started/setup-prisma/start-from-scratch-node-postgres /docs/getting-started/setup-prisma/start-from-scratch/relational-databases-node-postgresql +/docs/getting-started/setup-prisma/start-from-scratch-typescript-mysql /docs/getting-started/setup-prisma/start-from-scratch/relational-databases-typescript-mysql +/docs/getting-started/setup-prisma/start-from-scratch-node-mysql /docs/getting-started/setup-prisma/start-from-scratch/relational-databases-node-mysql +/docs/reference/tools-and-interfaces/prisma-schema/prisma-schema-file /docs/reference/tools-and-interfaces/prisma-schema +/docs/reference/tools-and-interfaces/prisma-client/api /docs/reference/tools-and-interfaces/prisma-client +/docs/guides/upgrade-from-prisma-1/should-you-upgrade /docs/guides/upgrade-from-prisma-1/how-to-upgrade +/docs/reference/tools-and-interfaces/prisma-schema/models /docs/reference/tools-and-interfaces/prisma-schema/data-model +/docs/guides/upgrade-guides/upgrade-from-prisma-1/upgrading-the-prisma-layer /docs/guides/upgrade-guides/upgrade-from-prisma-1/upgrading-the-prisma-layer-postgresql +/docs/concepts/components/preview-features/sql-server/sql-server-start-from-scratch /docs/concepts/components/preview-features/sql-server/sql-server-start-from-scratch-typescript +/docs/guides/upgrade-guides/upgrade-from-prisma-1/schema-incompatibilities /docs/guides/upgrade-guides/upgrade-from-prisma-1/schema-incompatibilities-postgresql +/docs/guides/upgrade-from-prisma-1/how-to-upgrade /docs/guides/upgrade-guides/upgrade-from-prisma-1/how-to-upgrade +/docs/guides/upgrade-from-prisma-1/schema-incompatibilities /docs/guides/upgrade-guides/upgrade-from-prisma-1/schema-incompatibilities-postgresql +/docs/guides/upgrade-from-prisma-1/upgrading-the-prisma-layer-postgres /docs/guides/upgrade-guides/upgrade-from-prisma-1 +/docs/guides/upgrade-from-prisma-1/upgrading-nexus-prisma-to-nexus /docs/guides/upgrade-guides/upgrade-from-prisma-1/upgrading-nexus-prisma-to-nexus +/docs/guides/upgrade-from-prisma-1/upgrading-prisma-binding-to-nexus /docs/guides/upgrade-guides/upgrade-from-prisma-1/upgrading-prisma-binding-to-nexus +/docs/guides/upgrade-from-prisma-1/upgrading-prisma-binding-to-sdl-first /docs/guides/upgrade-guides/upgrade-from-prisma-1/upgrading-prisma-binding-to-sdl-first +/docs/guides/upgrade-from-prisma-1/upgrading-a-rest-api /docs/guides/upgrade-guides/upgrade-from-prisma-1/upgrading-a-rest-api +/docs/reference/tools-and-interfaces/prisma-schema/prisma-schema-reference /docs/reference/api-reference/prisma-schema-reference +/docs/reference/tools-and-interfaces/prisma-cli/command-reference /docs/reference/api-reference/command-reference +/docs/reference/database-connectors/database-features /docs/orm/reference/supported-databases +/docs/reference/database-connectors/connection-urls /docs/orm/reference/connection-urls +/docs/more/supported-databases /docs/orm/reference/supported-databases +/docs/reference/tools-and-interfaces/* /docs/concepts/components/:splat +/docs/reference/database-connectors/* /docs/concepts/database-connectors/:splat +/docs/reference/more/* /docs/concepts/more/:splat +/docs/understand-prisma/introduction /docs/concepts/overview/what-is-prisma +/docs/understand-prisma/data-modeling /docs/concepts/overview/what-is-prisma/data-modeling +/docs/understand-prisma/* /docs/concepts/overview/:splat +/docs/understand-prisma/api-comparisons/* /docs/concepts/overview/why-prisma/api-comparisons +/docs/more/* /docs/about/:splat +/docs/getting-started/setup-prisma/start-from-scratch-prisma-migrate /docs/getting-started/setup-prisma/start-from-scratch-typescript-postgresql +/docs/getting-started/setup-prisma/start-from-scratch-sql /docs/getting-started/setup-prisma +/docs/guides/prisma-guides/prisma-migrate-guides /docs/guides/prisma-guides/add-prisma-migrate-to-a-project +/docs/guides/prisma-guides/prisma-migrate-guides/add-prisma-migrate-to-a-project /docs/guides/prisma-guides/add-prisma-migrate-to-a-project +/docs/concepts/components/prisma-client/distinct /docs/concepts/components/prisma-client/aggregation-grouping-summarizing#select-distinct +/docs/concepts/components/prisma-client/configuring-the-prisma-client-api /docs/concepts/components/prisma-client/generating-prisma-client/customizing-the-prisma-client-api +/docs/concepts/components/prisma-client/constructor /docs/reference/api-reference/prisma-client-reference#prismaclient +/docs/concepts/components/prisma-client/field-selection /docs/concepts/components/prisma-client/select-fields +/docs/concepts/components/prisma-client/error-reference /docs/reference/api-reference/error-reference +/docs/concepts/components/prisma-client/sorting /docs/concepts/components/prisma-client/filtering-and-sorting +/docs/concepts/components/prisma-client/filtering /docs/concepts/components/prisma-client/filtering-and-sorting +/docs/concepts/components/prisma-client/aggregations /docs/concepts/components/prisma-client/aggregation-grouping-summarizing +/docs/concepts/components/prisma-client/working-with-json /docs/concepts/components/prisma-client/working-with-advanced-types +/docs/concepts/components/prisma-client/group-by /docs/concepts/components/prisma-client/aggregation-grouping-summarizing#group-by-preview +/docs/concepts/components/prisma-client/advanced-usage-of-generated-types /docs/concepts/components/prisma-client/working-with-generated-types +/docs/concepts/components/preview-features/native-types/native-types-mappings /docs/reference/api-reference/prisma-schema-reference#model-field-scalar-types +/docs/concepts/components/preview-features/native-types /docs/concepts/components/prisma-schema/data-model#native-types-mapping +/docs/concepts/components/prisma-client/generating-prisma-client /docs/concepts/components/prisma-client/working-with-prismaclient/generating-prisma-client +/docs/concepts/components/prisma-client/generating-prisma-client/customizing-the-prisma-client-api /docs/concepts/components/prisma-client/working-with-prismaclient/use-custom-model-and-field-names +/docs/concepts/components/prisma-client/connection-management /docs/concepts/components/prisma-client/working-with-prismaclient/connection-management +/docs/concepts/components/prisma-client/logging /docs/concepts/components/prisma-client/working-with-prismaclient/logging +/docs/concepts/components/prisma-client/error-formatting /docs/concepts/components/prisma-client/working-with-prismaclient/error-formatting +/docs/concepts/components/prisma-client/deployment /docs/guides/deployment/deployment +/docs/concepts/components/prisma-migrate/prisma-migrate-flows /docs/concepts/components/prisma-migrate +/docs/guides/prisma-guides/seed-database /docs/guides/application-lifecycle/seed-database +/docs/guides/prisma-guides/add-prisma-migrate-to-a-project /docs/guides/database/developing-with-prisma-migrate/add-prisma-migrate-to-a-project +/docs/about/creating-bug-reports /docs/support/creating-bug-reports +/docs/concepts/components/prisma-client/working-with-generated-types /docs/concepts/components/prisma-client/advanced-type-safety/operating-against-partial-structures-of-model-types +/docs/reference/utility-types-reference /docs/reference/api-reference/prisma-client-reference#prismavalidator +/docs/concepts/components/prisma-client/query-engine /docs/concepts/components/prisma-engines/query-engine +/docs/concepts/overview/under-the-hood /docs/concepts/components/prisma-engines +/docs/guides/application-lifecycle/add-prisma-migrate-to-a-project /docs/guides/database/developing-with-prisma-migrate/add-prisma-migrate-to-a-project +/docs/guides/deployment/patching-production /docs/guides/database/patching-production +/docs/guides/deployment/production-troubleshooting /docs/guides/database/production-troubleshooting +/docs/guides/application-lifecycle/* /docs/guides/database/:splat +/docs/guides/deployment/deploying-to-azure-functions /docs/guides/deployment/deployment-guides/deploying-to-azure-functions +/docs/guides/deployment/deploying-to-heroku /docs/guides/deployment/deployment-guides/deploying-to-heroku +/docs/guides/deployment/deploying-to-vercel /docs/guides/deployment/deployment-guides/deploying-to-vercel +/docs/guides/deployment/deploying-to-aws-lambda /docs/guides/deployment/deployment-guides/deploying-to-aws-lambda +/docs/guides/deployment/deploying-to-netlify /docs/guides/deployment/deployment-guides/deploying-to-netlify +/docs/guides/general-guides/database-workflows/cascading-deletes/* /docs/concepts/components/prisma-schema/relations/referential-actions +/docs/guides/database/advanced-database-tasks/cascading-deletes/* /docs/concepts/components/prisma-schema/relations/referential-actions +/docs/guides/general-guides/database-workflows/data-validation/* /docs/guides/database/advanced-database-tasks/data-validation/:splat +/docs/guides/general-guides/database-workflows/sql-views https://github.com/prisma/prisma/issues/678 +/docs/guides/general-guides/database-workflows/sql-views-postgres https://github.com/prisma/prisma/issues/678 +/docs/guides/database/advanced-database-tasks/sql-views-postgres https://github.com/prisma/prisma/issues/678 +/docs/guides/general-guides/database-workflows/sql-views-mysql https://github.com/prisma/prisma/issues/678 +/docs/guides/database/advanced-database-tasks/sql-views-mysql https://github.com/prisma/prisma/issues/678 +/docs/guides/general-guides/database-workflows/unique-constraints-and-indexes /docs/concepts/components/prisma-schema/data-model#defining-a-unique-field +/docs/guides/general-guides/database-workflows/unique-constraints-and-indexes/mysql /docs/concepts/components/prisma-schema/data-model#defining-a-unique-field +/docs/guides/database/advanced-database-tasks/unique-constraints-and-indexes/postgresql /docs/concepts/components/prisma-schema/data-model#defining-a-unique-field +/docs/guides/general-guides/database-workflows/unique-constraints-and-indexes/sqlite /docs/concepts/components/prisma-schema/data-model#defining-a-unique-field +/docs/guides/general-guides/database-workflows/foreign-keys /docs/concepts/components/prisma-schema/relations#relational-databases +/docs/guides/general-guides/database-workflows/foreign-keys/mysql /docs/concepts/components/prisma-schema/relations#relational-databases +/docs/guides/general-guides/database-workflows/foreign-keys/postgresql /docs/concepts/components/prisma-schema/relations#relational-databases +/docs/guides/general-guides/database-workflows/foreign-keys/sqlite /docs/concepts/components/prisma-schema/relations#relational-databases +/docs/guides/prisma-guides/* /docs/guides/performance-and-optimization/:splat +/docs/mongodb /docs/concepts/database-connectors/mongodb +/docs/guides/database/developing-with-prisma-migrate/advanced-migrate-scenarios /docs/guides/database/developing-with-prisma-migrate/customizing-migrations +/docs/concepts/components/prisma-migrate/type-mapping /docs/concepts/components/prisma-migrate/supported-types-and-db-features +/docs/concepts/components/prisma-client/working-with-advanced-types /docs/concepts/components/prisma-client/working-with-fields +/docs/concepts/more/codemod /docs/guides/upgrade-guides/upgrading-versions/codemods +/docs/getting-started/setup-prisma/start-from-scratch-typescript-postgres /docs/getting-started/setup-prisma/start-from-scratch/relational-databases-typescript-postgresql +/docs/getting-started/setup-prisma/add-to-existing-project-typescript-postgres /docs/getting-started/setup-prisma/add-to-existing-project/relational-databases-typescript-postgresql +/docs/getting-started/setup-prisma/start-from-scratch/connect-your-database-typescript-postgres /docs/getting-started/setup-prisma/start-from-scratch/relational-databases/connect-your-database-typescript-postgresql +/docs/getting-started/setup-prisma/start-from-scratch/using-prisma-migrate-typescript-postgres /docs/getting-started/setup-prisma/start-from-scratch/relational-databases/using-prisma-migrate-typescript-postgresql +/docs/getting-started/setup-prisma/start-from-scratch/install-prisma-client-typescript-postgres /docs/getting-started/setup-prisma/start-from-scratch/relational-databases/install-prisma-client-typescript-postgresql +/docs/getting-started/setup-prisma/start-from-scratch/querying-the-database-typescript-postgres /docs/getting-started/setup-prisma/start-from-scratch/relational-databases/querying-the-database-typescript-postgresql +/docs/getting-started/setup-prisma/start-from-scratch/next-steps-typescript-postgres /docs/getting-started/setup-prisma/start-from-scratch/relational-databases/next-steps-typescript-postgresql +/docs/getting-started/setup-prisma/add-to-existing-project/connect-your-database-typescript-postgres /docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/connect-your-database-typescript-postgresql +/docs/getting-started/setup-prisma/add-to-existing-project/introspection-typescript-postgres /docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/introspection-typescript-postgresql +/docs/getting-started/setup-prisma/add-to-existing-project/install-prisma-client-typescript-postgres /docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/install-prisma-client-typescript-postgresql +/docs/getting-started/setup-prisma/add-to-existing-project/querying-the-database-typescript-postgres /docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/querying-the-database-typescript-postgresql +/docs/getting-started/setup-prisma/add-to-existing-project/next-steps-typescript-postgres /docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/next-steps-typescript-postgresql +/docs/getting-started/setup-prisma/start-from-scratch/connect-your-database-node-postgres /docs/getting-started/setup-prisma/start-from-scratch/relational-databases/connect-your-database-node-postgresql +/docs/getting-started/setup-prisma/start-from-scratch/using-prisma-migrate-node-postgres /docs/getting-started/setup-prisma/start-from-scratch/relational-databases/using-prisma-migrate-node-postgresql +/docs/getting-started/setup-prisma/start-from-scratch/install-prisma-client-node-postgres /docs/getting-started/setup-prisma/start-from-scratch/relational-databases/install-prisma-client-node-postgresql +/docs/getting-started/setup-prisma/start-from-scratch/querying-the-database-node-postgres /docs/getting-started/setup-prisma/start-from-scratch/relational-databases/querying-the-database-node-postgresql +/docs/getting-started/setup-prisma/start-from-scratch/next-steps-node-postgres /docs/getting-started/setup-prisma/start-from-scratch/relational-databases/next-steps-node-postgresql +/docs/getting-started/setup-prisma/add-to-existing-project/connect-your-database-node-postgres /docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/connect-your-database-node-postgresql +/docs/getting-started/setup-prisma/add-to-existing-project/introspection-node-postgres /docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/introspection-node-postgresql +/docs/getting-started/setup-prisma/add-to-existing-project/install-prisma-client-node-postgres /docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/install-prisma-client-node-postgresql +/docs/getting-started/setup-prisma/add-to-existing-project/querying-the-database-node-postgres /docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/querying-the-database-node-postgresql +/docs/getting-started/setup-prisma/add-to-existing-project/next-steps-node-postgres /docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/next-steps-node-postgresql +/docs/getting-started/setup-prisma/start-from-scratch/connect-your-database-typescript-mysql /docs/getting-started/setup-prisma/start-from-scratch/relational-databases/connect-your-database-typescript-mysql +/docs/getting-started/setup-prisma/start-from-scratch/using-prisma-migrate-typescript-mysql /docs/getting-started/setup-prisma/start-from-scratch/relational-databases/using-prisma-migrate-typescript-mysql +/docs/getting-started/setup-prisma/start-from-scratch/install-prisma-client-typescript-mysql /docs/getting-started/setup-prisma/start-from-scratch/relational-databases/install-prisma-client-typescript-mysql +/docs/getting-started/setup-prisma/start-from-scratch/querying-the-database-typescript-mysql /docs/getting-started/setup-prisma/start-from-scratch/relational-databases/querying-the-database-typescript-mysql +/docs/getting-started/setup-prisma/start-from-scratch/next-steps-typescript-mysql /docs/getting-started/setup-prisma/start-from-scratch/relational-databases/next-steps-typescript-mysql +/docs/getting-started/setup-prisma/add-to-existing-project/connect-your-database-typescript-mysql /docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/connect-your-database-typescript-mysql +/docs/getting-started/setup-prisma/add-to-existing-project/introspection-typescript-mysql /docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/introspection-typescript-mysql +/docs/getting-started/setup-prisma/add-to-existing-project/install-prisma-client-typescript-mysql /docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/install-prisma-client-typescript-mysql +/docs/getting-started/setup-prisma/add-to-existing-project/querying-the-database-typescript-mysql /docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/querying-the-database-typescript-mysql +/docs/getting-started/setup-prisma/add-to-existing-project/next-steps-typescript-mysql /docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/next-steps-typescript-mysql +/docs/getting-started/setup-prisma/start-from-scratch/connect-your-database-node-mysql /docs/getting-started/setup-prisma/start-from-scratch/relational-databases/connect-your-database-node-mysql +/docs/getting-started/setup-prisma/start-from-scratch/using-prisma-migrate-node-mysql /docs/getting-started/setup-prisma/start-from-scratch/relational-databases/using-prisma-migrate-node-mysql +/docs/getting-started/setup-prisma/start-from-scratch/install-prisma-client-node-mysql /docs/getting-started/setup-prisma/start-from-scratch/relational-databases/install-prisma-client-node-mysql +/docs/getting-started/setup-prisma/start-from-scratch/querying-the-database-node-mysql /docs/getting-started/setup-prisma/start-from-scratch/relational-databases/querying-the-database-node-mysql +/docs/getting-started/setup-prisma/start-from-scratch/next-steps-node-mysql /docs/getting-started/setup-prisma/start-from-scratch/relational-databases/next-steps-node-mysql +/docs/getting-started/setup-prisma/add-to-existing-project/connect-your-database-node-mysql /docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/connect-your-database-node-mysql +/docs/getting-started/setup-prisma/add-to-existing-project/introspection-node-mysql /docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/introspection-node-mysql +/docs/getting-started/setup-prisma/add-to-existing-project/install-prisma-client-node-mysql /docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/install-prisma-client-node-mysql +/docs/getting-started/setup-prisma/add-to-existing-project/querying-the-database-node-mysql /docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/querying-the-database-node-mysql +/docs/getting-started/setup-prisma/add-to-existing-project/next-steps-node-mysql /docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/next-steps-node-mysql +/docs/concepts/more/environment-variables /docs/guides/development-environment/environment-variables +/docs/concepts/more/environment-variables/managing-env-files-and-setting-variables /docs/guides/development-environment/environment-variables/managing-env-files-and-setting-variables +/docs/concepts/more/environment-variables/using-multiple-env-files /docs/guides/development-environment/environment-variables/using-multiple-env-files +/docs/concepts/more/editor-setup /docs/guides/development-environment/editor-setup +/docs/about/about-the-docs /docs/about/prisma-docs/about-the-docs +/docs/about/whats-new-in-prisma-docs /docs/about/prisma-docs/whats-new-in-prisma-docs +/docs/about/limitations /docs/about/prisma/limitations +/docs/about/roadmap /docs/about/prisma/roadmap +/docs/about/faq /docs/about/prisma/faq +/docs/about/releases /docs/about/prisma/releases +/docs/about/example-projects /docs/about/prisma/example-projects +/docs/about/style-guide /docs/about/prisma-docs/style-guide +/docs/about/style-guide/mdx-examples /docs/about/prisma-docs/style-guide/mdx-examples +/docs/about/style-guide/frontmatter /docs/about/prisma-docs/style-guide/frontmatter +/docs/about/style-guide/template /docs/about/prisma-docs/style-guide/template +/docs/concepts/components/preview-features/sql-server/sql-server-start-from-scratch-typescript /docs/getting-started/setup-prisma/start-from-scratch/relational-databases-typescript-sqlserver +/docs/concepts/database-connectors/microsoft-sql-server /docs/concepts/database-connectors/sql-server +/docs/concepts/components/preview-features/sql-server/sql-server-connection-string /docs/concepts/database-connectors/sql-server +/docs/concepts/components/preview-features/sql-server/sql-server-local /docs/concepts/database-connectors/sql-server/sql-server-local +/docs/concepts/components/preview-features/sql-server/sql-server-docker /docs/concepts/database-connectors/sql-server/sql-server-docker +/docs/concepts/components/preview-features/sql-server /docs/concepts/database-connectors/sql-server +/docs/guides/upgrade-guides/upgrading-to-latest /docs/guides/upgrade-guides/upgrading-versions +/docs/guides/upgrade-guides/upgrading-to-use-preview-features/enabling-named-constraints /docs/guides/upgrade-guides/upgrading-versions/upgrading-to-prisma-3/named-constraints +/docs/concepts/components/prisma-schema/relations/referential-actions/cyclic-referential-actions /docs/concepts/components/prisma-schema/relations/referential-actions/special-rules-for-referential-actions +/docs/concepts/components/prisma-schema/index-configuration /docs/concepts/components/prisma-schema/indexes +/docs/concepts/components/prisma-data-platform /docs/concepts/data-platform +/docs/about/prisma/platform-releases /docs/concepts/data-platform/about-platform/platform-releases +/docs/support /docs/guides/database/troubleshooting-orm +/docs/support/* /docs/guides/database/troubleshooting-orm/:splat +/docs/concepts/data-platform /docs/data-platform +/docs/concepts/data-platform/* /docs/data-platform/:splat +/docs/data-platform/about-platform /docs/data-platform/about +/docs/data-platform/about-platform/* /docs/data-platform/about/:splat +/docs/data-platform/about/platform-limits-and-status /docs/data-platform/about/limits-and-status +/docs/data-platform/about/platform-releases /docs/data-platform/about/releases +/docs/data-platform/accounts /docs/data-platform/account +/docs/concepts/components/prisma-schema/relations/referential-integrity /docs/concepts/components/prisma-schema/relations/relation-mode +/docs/data-platform/billing/early-adopter-plan /docs/data-platform/billing/plans-and-quotas +/docs/data-platform/projects/add-project* /docs/data-platform/projects/create +/docs/data-platform/members/user-roles /docs/data-platform/members/roles-permissions +/docs/data-platform/members/data-collaborators /docs/data-platform/members/add +/docs/data-platform/environments/edit-settings/change-database-connection-string /docs/data-platform/troubleshooting/cannot-change-db-of-env +/docs/guides/database/developing-with-prisma-migrate/add-prisma-migrate-to-a-project /docs/guides/migrate/developing-with-prisma-migrate/add-prisma-migrate-to-a-project +/docs/guides/database/developing-with-prisma-migrate/team-development /docs/guides/migrate/developing-with-prisma-migrate/team-development +/docs/guides/database/developing-with-prisma-migrate/baselining /docs/guides/migrate/developing-with-prisma-migrate/baselining +/docs/guides/database/developing-with-prisma-migrate/enable-native-database-functions /docs/guides/migrate/developing-with-prisma-migrate/enable-native-database-functions +/docs/guides/database/developing-with-prisma-migrate/include-unsupported-database-features /docs/guides/migrate/developing-with-prisma-migrate/include-unsupported-database-features +/docs/guides/database/developing-with-prisma-migrate/customizing-migrations /docs/guides/migrate/developing-with-prisma-migrate/customizing-migrations +/docs/guides/database/developing-with-prisma-migrate/squashing-migrations /docs/guides/migrate/developing-with-prisma-migrate/squashing-migrations +/docs/guides/database/developing-with-prisma-migrate/generating-down-migrations /docs/guides/migrate/developing-with-prisma-migrate/generating-down-migrations +/docs/guides/database/developing-with-prisma-migrate/troubleshooting-development /docs/guides/migrate/developing-with-prisma-migrate/troubleshooting-development +/docs/guides/database/developing-with-prisma-migrate /docs/guides/migrate/developing-with-prisma-migrate +/docs/guides/database/seed-database /docs/guides/migrate/seed-database +/docs/guides/database/prototyping-schema-db-push /docs/guides/migrate/prototyping-schema-db-push +/docs/guides/database/patching-production /docs/guides/migrate/patching-production +/docs/guides/database/production-troubleshooting /docs/guides/migrate/production-troubleshooting +/docs/guides/database/using-prisma-with-planetscale /docs/guides/database/planetscale +/docs/guides/database/using-prisma-with-cockroachdb /docs/guides/database/cockroachdb +/docs/guides/database/using-prisma-with-mongodb /docs/guides/database/mongodb +/docs/guides/database/multi-schema /docs/guides/other/multi-schema +/docs/guides/database/prisma-type-system /docs/guides/other/prisma-type-system +/docs/guides/database/troubleshooting-orm/creating-bug-reports /docs/guides/other/troubleshooting-orm/creating-bug-reports +/docs/guides/database/troubleshooting-orm/help-articles/autocompletion-in-graphql-resolvers-with-js /docs/guides/other/troubleshooting-orm/help-articles/autocompletion-in-graphql-resolvers-with-js +/docs/guides/database/troubleshooting-orm/help-articles/working-with-many-to-many-relations /docs/guides/other/troubleshooting-orm/help-articles/working-with-many-to-many-relations +/docs/guides/database/troubleshooting-orm/help-articles/finding-entities-based-on-relation /docs/guides/other/troubleshooting-orm/help-articles/finding-entities-based-on-relation +/docs/guides/database/troubleshooting-orm/help-articles/nextjs-prisma-client-dev-practices /docs/guides/other/troubleshooting-orm/help-articles/nextjs-prisma-client-dev-practices +/docs/guides/database/troubleshooting-orm/help-articles/nextjs-prisma-client-monorepo /docs/guides/other/troubleshooting-orm/help-articles/nextjs-prisma-client-monorepo +/docs/guides/database/troubleshooting-orm/help-articles/pkg-issue /docs/guides/other/troubleshooting-orm/help-articles/pkg-issue +/docs/guides/database/troubleshooting-orm/help-articles/comparing-columns-through-raw-queries /docs/guides/other/troubleshooting-orm/help-articles/comparing-columns-through-raw-queries +/docs/guides/database/troubleshooting-orm/help-articles /docs/guides/other/troubleshooting-orm/help-articles +/docs/guides/database/troubleshooting-orm /docs/guides/other/troubleshooting-orm +/docs/guides/database/advanced-database-tasks/data-validation/postgresql /docs/guides/other/advanced-database-tasks/data-validation/postgresql +/docs/guides/database/advanced-database-tasks/data-validation /docs/guides/other/advanced-database-tasks/data-validation +/docs/guides/database/advanced-database-tasks /docs/guides/other/advanced-database-tasks +/docs/concepts/components/prisma-cli/installation /docs/reference/api-reference/command-reference#installation +/docs/guides/other/troubleshooting-orm/help-articles/finding-entities-based-on-relation /docs/concepts/components/prisma-client/relation-queries#filter-on-presence-of-related-records +/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/connect-your-database-typescript-postgres /docs/getting-started/setup-prisma/start-from-scratch/relational-databases/connect-your-database-typescript-postgresql +/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/connect-your-database-node-postgres /docs/getting-started/setup-prisma/start-from-scratch/relational-databases/connect-your-database-node-postgresql +/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/using-prisma-migrate-typescript-postgres /docs/getting-started/setup-prisma/start-from-scratch/relational-databases/using-prisma-migrate-typescript-postgresql +/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/using-prisma-migrate-node-postgres /docs/getting-started/setup-prisma/start-from-scratch/relational-databases/using-prisma-migrate-node-postgresql +/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/install-prisma-client-typescript-postgres /docs/getting-started/setup-prisma/start-from-scratch/relational-databases/install-prisma-client-typescript-postgresql +/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/install-prisma-client-node-postgres /docs/getting-started/setup-prisma/start-from-scratch/relational-databases/install-prisma-client-node-postgresql +/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/querying-the-database-typescript-postgres /docs/getting-started/setup-prisma/start-from-scratch/relational-databases/querying-the-database-typescript-postgresql +/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/querying-the-database-node-postgres /docs/getting-started/setup-prisma/start-from-scratch/relational-databases/querying-the-database-node-postgresql +/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/next-steps-typescript-postgres /docs/getting-started/setup-prisma/start-from-scratch/relational-databases/next-steps-typescript-postgresql +/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/next-steps-node-postgres /docs/getting-started/setup-prisma/start-from-scratch/relational-databases/next-steps-node-postgresql +/docs/getting-started/setup-prisma/start-from-scratch/relational-databases-typescript-postgres /docs/getting-started/setup-prisma/start-from-scratch/relational-databases-typescript-postgresql +/docs/getting-started/setup-prisma/start-from-scratch/relational-databases-node-postgres /docs/getting-started/setup-prisma/start-from-scratch/relational-databases-node-postgresql +/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/connect-your-database-typescript-postgres /docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/connect-your-database-typescript-postgresql +/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/connect-your-database-node-postgres /docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/connect-your-database-node-postgresql +/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/introspection-typescript-postgres /docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/introspection-typescript-postgresql +/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/introspection-node-postgres /docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/introspection-node-postgresql +/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/baseline-your-database-typescript-postgres /docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/baseline-your-database-typescript-postgresql +/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/baseline-your-database-node-postgres /docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/baseline-your-database-node-postgresql +/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/install-prisma-client-typescript-postgres /docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/install-prisma-client-typescript-postgresql +/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/install-prisma-client-node-postgres /docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/install-prisma-client-node-postgresql +/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/querying-the-database-typescript-postgres /docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/querying-the-database-typescript-postgresql +/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/querying-the-database-node-postgres /docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/querying-the-database-node-postgresql +/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/evolve-your-schema-typescript-postgres /docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/evolve-your-schema-typescript-postgresql +/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/evolve-your-schema-node-postgres /docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/evolve-your-schema-node-postgresql +/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/next-steps-typescript-postgres /docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/next-steps-typescript-postgresql +/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/next-steps-node-postgres /docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/next-steps-node-postgresql +/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases-typescript-postgres /docs/getting-started/setup-prisma/add-to-existing-project/relational-databases-typescript-postgresql +/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases-node-postgres /docs/getting-started/setup-prisma/add-to-existing-project/relational-databases-node-postgresql +/docs/guides/upgrade-guides/upgrade-from-prisma-1/schema-incompatibilities-postgres /docs/guides/upgrade-guides/upgrade-from-prisma-1/schema-incompatibilities-postgresql +/docs/guides/upgrade-guides/upgrade-from-prisma-1/upgrading-the-prisma-layer-postgres /docs/guides/upgrade-guides/upgrade-from-prisma-1/upgrading-the-prisma-layer-postgresql +/docs/guides/migrate/deployment/deploy-database-changes-with-prisma-migrate /docs/guides/deployment/deploy-database-changes-with-prisma-migrate +/docs/guides/deployment/deployment /docs/guides/deployment/deploy-prisma +/docs/guides/deployment/deployment-guides/deploying-to-heroku /docs/guides/deployment/traditional/deploy-to-heroku +/docs/guides/deployment/deployment-guides/deploying-to-koyeb /docs/guides/deployment/traditional/deploy-to-koyeb +/docs/guides/deployment/deployment-guides /docs/guides/deployment/deploy-prisma +/docs/guides/deployment/deployment-guides/deploying-to-azure-functions /docs/guides/deployment/serverless/deploy-to-azure-functions +/docs/guides/deployment/deployment-guides/deploying-to-vercel /docs/guides/deployment/serverless/deploy-to-vercel +/docs/guides/deployment/deployment-guides/deploying-to-aws-lambda /docs/guides/deployment/serverless/deploy-to-aws-lambda +/docs/guides/deployment/deployment-guides/deploying-to-netlify /docs/guides/deployment/serverless/deploy-to-netlify +/docs/guides/deployment/deployment-guides/deploying-to-deno-deploy /docs/guides/deployment/edge/deploy-to-deno-deploy +/docs/guides/deployment/deployment-guides/deploying-to-cloudflare-workers /docs/guides/deployment/edge/deploy-to-cloudflare-workers +/docs/guides/deployment/deployment-guides/deploying-migrations-from-a-local-environment /docs/guides/deployment/deploy-migrations-from-a-local-environment +/docs/guides/deployment/deployment-guides/caveats-when-deploying-to-aws-platforms /docs/guides/deployment/caveats-when-deploying-to-aws-platforms +/docs/guides/deployment/deployment-guides/deploying-to-a-different-os /docs/guides/deployment/deploy-to-a-different-os +/docs/guides/deployment/deployment-guides/use-prisma-with-serverless-framework /docs/guides/deployment/serverless/deploy-to-aws-lambda +/docs/guides/deployment/use-prisma-with-serverless-framework /docs/guides/deployment/serverless/deploy-to-aws-lambda +/docs/data-platform/about/releases /docs/data-platform/platform-console/maturity-levels +/docs/data-platform/about/limits-and-status /docs/data-platform/classic-projects/about/limits-and-status +/docs/data-platform/about /docs/data-platform/classic-projects/about +/docs/data-platform/data-proxy/use-data-proxy /docs/data-platform/classic-projects/data-proxy/use-data-proxy +/docs/data-platform/data-proxy/deploy /docs/data-platform/classic-projects/data-proxy/deploy +/docs/data-platform/data-proxy/prisma-cli-with-data-proxy /docs/data-platform/classic-projects/data-proxy/prisma-cli-with-data-proxy +/docs/data-platform/data-proxy/considerations-limitations /docs/data-platform/classic-projects/data-proxy/considerations-limitations +/docs/data-platform/data-proxy /docs/data-platform/classic-projects/data-proxy +/docs/data-platform/static-ips /docs/data-platform/classic-projects/platform/static-ips +/docs/data-platform/projects/create /docs/data-platform/classic-projects/platform/projects/create +/docs/data-platform/projects/edit-settings /docs/data-platform/classic-projects/platform/projects/edit-settings +/docs/data-platform/projects/delete-project /docs/data-platform/classic-projects/platform/projects/delete-project +/docs/data-platform/projects /docs/data-platform/classic-projects/platform/projects +/docs/data-platform/environments/view-all /docs/data-platform/classic-projects/platform/environments/view-all +/docs/data-platform/environments/create /docs/data-platform/classic-projects/platform/environments/create +/docs/data-platform/environments/edit-settings/edit-name-and-url-handle /docs/data-platform/classic-projects/platform/environments/edit-settings/edit-name-and-url-handle +/docs/data-platform/environments/edit-settings/change-default-environment /docs/data-platform/classic-projects/platform/environments/edit-settings/change-default-environment +/docs/data-platform/environments/edit-settings /docs/data-platform/classic-projects/platform/environments/edit-settings +/docs/data-platform/environments/delete /docs/data-platform/classic-projects/platform/environments/delete +/docs/data-platform/environments /docs/data-platform/classic-projects/platform/environments +/docs/data-platform/members/roles-permissions /docs/data-platform/classic-projects/platform/members/roles-permissions +/docs/data-platform/members/add /docs/data-platform/classic-projects/platform/members/add +/docs/data-platform/members/change-role /docs/data-platform/classic-projects/platform/members/change-role +/docs/data-platform/members/remove /docs/data-platform/classic-projects/platform/members/remove +/docs/data-platform/members /docs/data-platform/classic-projects/platform/members +/docs/data-platform/data-browser /docs/data-platform/classic-projects/platform/data-browser +/docs/data-platform/query-console /docs/data-platform/classic-projects/platform/query-console +/docs/data-platform/schema-viewer /docs/data-platform/classic-projects/platform/schema-viewer +/docs/data-platform/account /docs/data-platform/classic-projects/platform/account +/docs/data-platform/github-integration /docs/data-platform/classic-projects/platform/github-integration +/docs/data-platform/billing/plans-and-quotas /docs/data-platform/classic-projects/platform/billing/plans-and-quotas +/docs/data-platform/billing/manage-plans /docs/data-platform/classic-projects/platform/billing/manage-plans +/docs/data-platform/billing/invoices /docs/data-platform/classic-projects/platform/billing/invoices +/docs/data-platform/billing/data-proxy-usage /docs/data-platform/classic-projects/platform/billing/data-proxy-usage +/docs/data-platform/billing/payment-method-and-billing-information /docs/data-platform/classic-projects/platform/billing/payment-method-and-billing-information +/docs/data-platform/billing /docs/data-platform/classic-projects/platform/billing +/docs/data-platform/troubleshooting/connection-to-db-timed-out /docs/data-platform/classic-projects/platform/troubleshooting/connection-to-db-timed-out +/docs/data-platform/troubleshooting/cannot-change-db-of-env /docs/data-platform/classic-projects/platform/troubleshooting/cannot-change-db-of-env +/docs/data-platform/troubleshooting/cannot-edit-schema-file /docs/data-platform/classic-projects/platform/troubleshooting/cannot-edit-schema-file +/docs/data-platform/troubleshooting/schema-file-does-not-update /docs/data-platform/classic-projects/platform/troubleshooting/schema-file-does-not-update +/docs/data-platform/troubleshooting /docs/data-platform/platform-console/support +/docs/data-platform/contact-support /docs/data-platform/platform-console/support +/docs/data-platform/cloud-projects/platform/account /docs/data-platform/platform-console/concepts +/docs/data-platform/cloud-projects/platform/projects /docs/data-platform/platform-console/concepts/projects +/docs/data-platform/cloud-projects/platform/organizations /docs/data-platform/platform-console/concepts/workspaces +/docs/data-platform/cloud-projects/platform/billing /docs/data-platform/platform-console/concepts/workspaces +/docs/data-platform/cloud-projects/platform /docs/data-platform/platform-console +/docs/data-platform/cloud-projects/faq /docs/data-platform/platform-console/limits +/docs/data-platform/cloud-projects/support /docs/data-platform/platform-console/support +/docs/data-platform/cloud-projects/about-cloud-projects /docs/data-platform/platform-console/about +/docs/data-platform/cloud-projects /docs/data-platform/platform-console +/docs/data-platform/classic-projects/about/releases /docs/data-platform/platform-console/maturity-levels +/docs/data-platform/classic-projects/about/limits-and-status /docs/data-platform/platform-console/limits +/docs/data-platform/classic-projects/about /docs/data-platform/platform-console/about +/docs/data-platform/classic-projects/contact-support /docs/data-platform/platform-console/support +/docs/guides/performance-and-optimization/connection-management/configure-pg-bouncer /docs/guides/performance-and-optimization/connection-management/configure-for-external-connection-pooler +/docs/data-platform/classic-projects/platform/billing https://www.prisma.io/pricing +/docs/data-platform/accelerate/testing /docs/data-platform/accelerate/evaluating +/docs/data-platform/classic-projects/platform/billing/plans-and-quotas https://www.prisma.io/pricing +/docs/data-platform/classic-projects/platform/billing/manage-plans https://www.prisma.io/pricing +/docs/concepts/components/prisma-schema /docs/orm/prisma-schema +/docs/concepts/components/prisma-client/working-with-prismaclient /docs/orm/prisma-client +/docs/concepts/components/prisma-client/transactions /docs/orm/prisma-client/queries/transactions +/docs/concepts/components/prisma-migrate/get-started /docs/orm/prisma-migrate/getting-started +/docs/concepts/components/prisma-migrate/db-push /docs/orm/prisma-migrate/workflows/prototyping-your-schema +/docs/concepts/components/prisma-cli /docs/orm/tools/prisma-cli +/docs/concepts/components/prisma-engines /docs/orm/more/under-the-hood/engines +/docs/concepts/database-connectors/mongodb /docs/orm/ +/docs/concepts/database-connectors /docs/orm/overview +/docs/concepts/more/telemetry /docs/orm/tools/prisma-cli#telemetry +/docs/concepts/more /docs/orm/more +/docs/concepts /docs/orm +/docs/concepts/overview/why-prisma /docs/orm/overview/introduction/why-prisma +/docs/concepts/overview/should-you-use-prisma /docs/orm/overview/introduction/should-you-use-prisma +/docs/concepts/overview/what-is-prisma/data-modeling /docs/orm/overview/introduction/data-modeling +/docs/concepts/overview/what-is-prisma /docs/orm/overview/introduction/what-is-prisma +/docs/concepts/components/database-drivers /docs/orm/overview/databases/database-drivers +/docs/concepts/database-connectors/postgresql /docs/orm/overview/databases/postgresql +/docs/concepts/database-connectors/mysql /docs/orm/overview/databases/mysql +/docs/concepts/database-connectors/sqlite /docs/orm/overview/databases/sqlite +/docs/guides/database/mongodb /docs/orm/overview/databases/mongodb +/docs/concepts/database-connectors/cockroachdb /docs/orm/overview/databases/cockroachdb +/docs/concepts/database-connectors/sql-server/sql-server-local /docs/orm/overview/databases/sql-server/sql-server-local +/docs/concepts/database-connectors/sql-server/sql-server-docker /docs/orm/overview/databases/sql-server/sql-server-docker +/docs/concepts/database-connectors/sql-server /docs/orm/overview/databases/sql-server +/docs/guides/database/planetscale /docs/orm/overview/databases/planetscale +/docs/guides/database/cockroachdb /docs/orm/overview/databases/cockroachdb +/docs/guides/database/supabase /docs/orm/overview/databases/supabase +/docs/guides/database/neon /docs/orm/overview/databases/neon +/docs/guides/database/turso /docs/orm/overview/databases/turso +/docs/concepts/overview/prisma-in-your-stack/fullstack /docs/orm/overview/prisma-in-your-stack/fullstack +/docs/concepts/overview/prisma-in-your-stack/is-prisma-an-orm /docs/orm/overview/prisma-in-your-stack/is-prisma-an-orm +/docs/concepts/overview/prisma-in-your-stack /docs/orm/overview/prisma-in-your-stack +/docs/concepts/overview /docs/orm/overview +/docs/concepts/components/prisma-client/working-with-prismaclient/generating-prisma-client /docs/orm/prisma-client/setup-and-configuration/generating-prisma-client +/docs/concepts/components/prisma-client/working-with-prismaclient/instantiate-prisma-client /docs/orm/prisma-client/setup-and-configuration/instantiate-prisma-client +/docs/concepts/components/prisma-client/read-replicas /docs/orm/prisma-client/setup-and-configuration/read-replicas +/docs/concepts/components/prisma-client/working-with-prismaclient/use-custom-model-and-field-names /docs/orm/prisma-client/setup-and-configuration/custom-model-and-field-names +/docs/concepts/components/prisma-client/working-with-prismaclient/logging /docs/orm/prisma-client/observability-and-logging/logging +/docs/concepts/components/prisma-client/working-with-prismaclient/error-formatting /docs/orm/prisma-client/setup-and-configuration/error-formatting +/docs/concepts/components/prisma-client/database-polyfills /docs/orm/prisma-client/setup-and-configuration/database-polyfills +/docs/concepts/components/prisma-client/working-with-prismaclient/connection-management /docs/orm/prisma-client/setup-and-configuration/databases-connections/connection-management +/docs/concepts/components/prisma-client/working-with-prismaclient/connection-pool /docs/orm/prisma-client/setup-and-configuration/databases-connections/connection-pool +/docs/guides/performance-and-optimization/connection-management/configure-for-external-connection-pooler /docs/orm/prisma-client/setup-and-configuration/databases-connections/pgbouncer +/docs/guides/performance-and-optimization/connection-management /docs/orm/prisma-client/setup-and-configuration/databases-connections +/docs/concepts/components/prisma-client/crud /docs/orm/prisma-client/queries/crud +/docs/concepts/components/prisma-client/select-fields /docs/orm/prisma-client/queries/select-fields +/docs/concepts/components/prisma-client/relation-queries /docs/orm/prisma-client/queries/relation-queries +/docs/concepts/components/prisma-client/filtering-and-sorting /docs/orm/prisma-client/queries/filtering-and-sorting +/docs/concepts/components/prisma-client/pagination /docs/orm/prisma-client/queries/pagination +/docs/concepts/components/prisma-client/aggregation-grouping-summarizing /docs/orm/prisma-client/queries/aggregation-grouping-summarizing +/docs/guides/performance-and-optimization/prisma-client-transactions-guide /docs/orm/prisma-client/queries/transactions +/docs/concepts/components/prisma-client/full-text-search /docs/orm/prisma-client/queries/full-text-search +/docs/concepts/components/prisma-client/custom-validation /docs/orm/prisma-client/queries/custom-validation +/docs/concepts/components/prisma-client/computed-fields /docs/orm/prisma-client/queries/computed-fields +/docs/concepts/components/prisma-client/excluding-fields /docs/orm/prisma-client/queries/excluding-fields +/docs/concepts/components/prisma-client/custom-models /docs/orm/prisma-client/queries/custom-models +/docs/concepts/components/prisma-client/case-sensitivity /docs/orm/prisma-client/queries/case-sensitivity +/docs/concepts/components/prisma-client/raw-database-access /docs/orm/prisma-client/queries/raw-database-access/raw-queries +/docs/guides/other/advanced-database-tasks/typesafe-raw-sql/safeql /docs/orm/prisma-client/queries/raw-database-access/custom-and-type-safe-queries +/docs/guides/performance-and-optimization/query-optimization-performance /docs/orm/prisma-client/queries/query-optimization-performance +/docs/concepts/components/prisma-client/composite-types /docs/orm/prisma-client/special-fields-and-types/composite-types +/docs/concepts/components/prisma-client/null-and-undefined /docs/orm/prisma-client/special-fields-and-types/null-and-undefined +/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields /docs/orm/prisma-client/special-fields-and-types/working-with-json-fields +/docs/concepts/components/prisma-client/working-with-fields/working-with-scalar-lists-arrays /docs/orm/prisma-client/special-fields-and-types/working-with-scalar-lists-arrays +/docs/concepts/components/prisma-client/working-with-fields/working-with-composite-ids-and-constraints /docs/orm/prisma-client/special-fields-and-types/working-with-composite-ids-and-constraints +/docs/concepts/components/prisma-client/working-with-fields /docs/orm/prisma-client/special-fields-and-types +/docs/concepts/components/prisma-client/client-extensions/model /docs/orm/prisma-client/client-extensions/model +/docs/concepts/components/prisma-client/client-extensions/client /docs/orm/prisma-client/client-extensions/client +/docs/concepts/components/prisma-client/client-extensions/query /docs/orm/prisma-client/client-extensions/query +/docs/concepts/components/prisma-client/client-extensions/result /docs/orm/prisma-client/client-extensions/result +/docs/concepts/components/prisma-client/client-extensions/shared-extensions /docs/orm/prisma-client/client-extensions/shared-extensions +/docs/concepts/components/prisma-client/client-extensions/type-utilities /docs/orm/prisma-client/client-extensions/type-utilities +/docs/concepts/components/prisma-client/client-extensions/extension-examples /docs/orm/prisma-client/client-extensions/extension-examples +/docs/concepts/components/prisma-client/middleware/soft-delete-middleware /docs/orm/prisma-client/client-extensions/middleware/soft-delete-middleware +/docs/concepts/components/prisma-client/middleware/logging-middleware /docs/orm/prisma-client/client-extensions/middleware/logging-middleware +/docs/concepts/components/prisma-client/middleware/session-data-middleware /docs/orm/prisma-client/client-extensions/middleware/session-data-middleware +/docs/concepts/components/prisma-client/middleware /docs/orm/prisma-client/client-extensions/middleware +/docs/concepts/components/prisma-client/client-extensions /docs/orm/prisma-client/client-extensions +/docs/concepts/components/prisma-client/advanced-type-safety/operating-against-partial-structures-of-model-types /docs/orm/prisma-client/type-safety/operating-against-partial-structures-of-model-types +/docs/guides/other/prisma-type-system /docs/orm/prisma-client/type-safety/prisma-type-system +/docs/concepts/components/prisma-client/advanced-type-safety/prisma-validator /docs/orm/prisma-client/type-safety/prisma-validator +/docs/concepts/components/prisma-client/advanced-type-safety /docs/orm/prisma-client/type-safety +/docs/guides/testing/unit-testing /docs/orm/prisma-client/testing/unit-testing +/docs/guides/testing/integration-testing /docs/orm/prisma-client/testing/integration-testing +/docs/guides/testing /docs/orm/prisma-client/testing +/docs/guides/deployment/deploy-prisma /docs/orm/prisma-client/deployment/deploy-prisma +/docs/guides/deployment/traditional/deploy-to-heroku /docs/orm/prisma-client/deployment/traditional/deploy-to-heroku +/docs/guides/deployment/traditional/deploy-to-koyeb /docs/orm/prisma-client/deployment/traditional/deploy-to-koyeb +/docs/guides/deployment/traditional /docs/orm/prisma-client/deployment/traditional +/docs/guides/deployment/serverless/deploy-to-azure-functions /docs/orm/prisma-client/deployment/serverless/deploy-to-azure-functions +/docs/guides/deployment/serverless/deploy-to-vercel /docs/orm/prisma-client/deployment/serverless/deploy-to-vercel +/docs/guides/deployment/serverless/deploy-to-aws-lambda /docs/orm/prisma-client/deployment/serverless/deploy-to-aws-lambda +/docs/guides/deployment/serverless/deploy-to-netlify /docs/orm/prisma-client/deployment/serverless/deploy-to-netlify +/docs/guides/deployment/serverless /docs/orm/prisma-client/deployment/serverless +/docs/concepts/components/prisma-client/module-bundlers /docs/orm/prisma-client/deployment/module-bundlers +/docs/guides/deployment/edge/deploy-to-cloudflare-workers /docs/orm/prisma-client/deployment/edge/deploy-to-cloudflare-workers +/docs/guides/deployment/edge/deploy-to-deno-deploy /docs/orm/prisma-client/deployment/edge/deploy-to-deno-deploy +/docs/guides/deployment/edge /docs/orm/prisma-client/deployment/edge +/docs/guides/deployment/deploy-database-changes-with-prisma-migrate /docs/orm/prisma-client/deployment/deploy-database-changes-with-prisma-migrate +/docs/guides/deployment/deploy-migrations-from-a-local-environment /docs/orm/prisma-client/deployment/deploy-migrations-from-a-local-environment +/docs/guides/deployment/caveats-when-deploying-to-aws-platforms /docs/orm/prisma-client/deployment/caveats-when-deploying-to-aws-platforms +/docs/guides/deployment/deploy-to-a-different-os /docs/orm/prisma-client/deployment/deploy-to-a-different-os +/docs/guides/deployment /docs/orm/prisma-client/deployment +/docs/concepts/components/prisma-client/metrics /docs/orm/prisma-client/observability-and-logging/metrics +/docs/concepts/components/prisma-client/opentelemetry-tracing /docs/orm/prisma-client/observability-and-logging/opentelemetry-tracing +/docs/concepts/components/prisma-client/debugging /docs/orm/prisma-client/debugging-and-troubleshooting/debugging +/docs/concepts/components/prisma-client/handling-exceptions-and-errors /docs/orm/prisma-client/debugging-and-troubleshooting/handling-exceptions-and-errors +/docs/concepts/components/prisma-client /docs/orm/prisma-client +/docs/guides/migrate/developing-with-prisma-migrate/add-prisma-migrate-to-a-project /docs/orm/prisma-migrate/getting-started +/docs/concepts/components/prisma-migrate/mental-model /docs/orm/prisma-migrate/understanding-prisma-migrate/mental-model +/docs/concepts/components/prisma-migrate/migration-histories /docs/orm/prisma-migrate/understanding-prisma-migrate/migration-histories +/docs/concepts/components/prisma-migrate/shadow-database /docs/orm/prisma-migrate/understanding-prisma-migrate/shadow-database +/docs/concepts/components/prisma-migrate/prisma-migrate-limitations-issues /docs/orm/prisma-migrate/understanding-prisma-migrate/limitations-and-known-issues +/docs/concepts/components/prisma-migrate/legacy-migrate /docs/orm/prisma-migrate/understanding-prisma-migrate/legacy-migrate +/docs/guides/migrate/seed-database /docs/orm/prisma-migrate/workflows/seeding +/docs/guides/migrate/developing-with-prisma-migrate/team-development /docs/orm/prisma-migrate/workflows/team-development +/docs/concepts/components/prisma-migrate/supported-types-and-db-features /docs/orm/prisma-migrate/workflows/native-database-types +/docs/guides/migrate/developing-with-prisma-migrate/enable-native-database-functions /docs/orm/prisma-migrate/workflows/native-database-functions +/docs/guides/migrate/prototyping-schema-db-push /docs/orm/prisma-migrate/workflows/prototyping-your-schema +/docs/guides/migrate/developing-with-prisma-migrate/troubleshooting-development /docs/orm/prisma-migrate/workflows/troubleshooting +/docs/guides/migrate/developing-with-prisma-migrate/baselining /docs/orm/prisma-migrate/workflows/baselining +/docs/guides/migrate/developing-with-prisma-migrate/customizing-migrations /docs/orm/prisma-migrate/workflows/customizing-migrations +/docs/guides/migrate/data-migration /docs/orm/prisma-migrate/workflows/data-migration +/docs/guides/migrate/developing-with-prisma-migrate/squashing-migrations /docs/orm/prisma-migrate/workflows/squashing-migrations +/docs/guides/migrate/developing-with-prisma-migrate/generating-down-migrations /docs/orm/prisma-migrate/workflows/generating-down-migrations +/docs/guides/migrate/production-troubleshooting /docs/orm/prisma-migrate/workflows/patching-and-hotfixing +/docs/guides/migrate/developing-with-prisma-migrate/include-unsupported-database-features /docs/orm/prisma-migrate/workflows/unsupported-database-features +/docs/concepts/components/prisma-migrate/migrate-development-production /docs/orm/prisma-migrate/workflows/development-and-production +/docs/concepts/components/prisma-migrate /docs/orm/prisma-migrate +/docs/concepts/components/prisma-schema/data-sources /docs/orm/prisma-schema/overview/data-sources +/docs/concepts/components/prisma-schema/generators /docs/orm/prisma-schema/overview/generators +/docs/concepts/components/prisma-schema/data-model /docs/orm/prisma-schema/data-model/models +/docs/concepts/components/prisma-schema/relations/one-to-one-relations /docs/orm/prisma-schema/data-model/relations/one-to-one-relations +/docs/concepts/components/prisma-schema/relations/one-to-many-relations /docs/orm/prisma-schema/data-model/relations/one-to-many-relations +/docs/concepts/components/prisma-schema/relations/many-to-many-relations /docs/orm/prisma-schema/data-model/relations/many-to-many-relations +/docs/concepts/components/prisma-schema/relations/self-relations /docs/orm/prisma-schema/data-model/relations/self-relations +/docs/concepts/components/prisma-schema/relations/referential-actions/special-rules-for-referential-actions /docs/orm/prisma-schema/data-model/relations/referential-actions/special-rules-for-referential-actions +/docs/concepts/components/prisma-schema/relations/referential-actions /docs/orm/prisma-schema/data-model/relations/referential-actions +/docs/concepts/components/prisma-schema/relations/relation-mode /docs/orm/prisma-schema/data-model/relations/relation-mode +/docs/concepts/components/prisma-schema/relations/troubleshooting-relations /docs/orm/prisma-schema/data-model/relations/troubleshooting-relations +/docs/concepts/components/prisma-schema/relations /docs/orm/prisma-schema/data-model/relations +/docs/concepts/components/prisma-schema/indexes /docs/orm/prisma-schema/data-model/indexes +/docs/concepts/components/prisma-schema/views /docs/orm/prisma-schema/data-model/views +/docs/concepts/components/prisma-schema/names-in-underlying-database /docs/orm/prisma-schema/data-model/database-mapping +/docs/guides/other/multi-schema /docs/orm/prisma-schema/data-model/multi-schema +/docs/concepts/components/prisma-schema/features-without-psl-equivalent /docs/orm/prisma-schema/data-model/unsupported-database-features +/docs/concepts/components/introspection /docs/orm/prisma-schema/introspection +/docs/concepts/components/prisma-schema/postgresql-extensions /docs/orm/prisma-schema/postgresql-extensions +/docs/concepts/components/prisma-studio /docs/orm/tools/prisma-studio +/docs/concepts/components /docs/orm/tools +/docs/reference/api-reference/prisma-client-reference /docs/orm/reference/prisma-client-reference +/docs/reference/api-reference/prisma-schema-reference /docs/orm/reference/prisma-schema-reference +/docs/reference/api-reference/command-reference /docs/orm/reference/prisma-cli-reference +/docs/reference/api-reference/error-reference /docs/orm/reference/error-reference +/docs/reference/api-reference/environment-variables-reference /docs/orm/reference/environment-variables-reference +/docs/reference/database-reference/database-features /docs/orm/reference/database-features +/docs/reference/database-reference/supported-databases /docs/orm/reference/supported-databases +/docs/reference/database-reference/connection-urls /docs/orm/reference/connection-urls +/docs/reference/system-requirements /docs/orm/reference/system-requirements +/docs/concepts/components/preview-features/client-preview-features /docs/orm/reference/preview-features/client-preview-features +/docs/concepts/components/preview-features/cli-preview-features /docs/orm/reference/preview-features/cli-preview-features +/docs/concepts/components/preview-features /docs/orm/reference/preview-features +/docs/reference /docs/orm/reference +/docs/concepts/components/prisma-engines/query-engine /docs/orm/more/under-the-hood/engines +/docs/guides/upgrade-guides/upgrading-versions/upgrading-to-prisma-5/rejectonnotfound-changes /docs/orm/more/upgrade-guides/upgrading-versions/upgrading-to-prisma-5/rejectonnotfound-changes +/docs/guides/upgrade-guides/upgrading-versions/upgrading-to-prisma-5/jsonprotocol-changes /docs/orm/more/upgrade-guides/upgrading-versions/upgrading-to-prisma-5/jsonprotocol-changes +/docs/guides/upgrade-guides/upgrading-versions/upgrading-to-prisma-5 /docs/orm/more/upgrade-guides/upgrading-versions/upgrading-to-prisma-5 +/docs/guides/upgrade-guides/upgrading-versions/upgrading-to-prisma-4 /docs/orm/more/upgrade-guides/upgrading-versions/upgrading-to-prisma-4 +/docs/guides/upgrade-guides/upgrading-versions/upgrading-to-prisma-3/named-constraints /docs/orm/more/upgrade-guides/upgrading-versions/upgrading-to-prisma-3/named-constraints +/docs/guides/upgrade-guides/upgrading-versions/upgrading-to-prisma-3/referential-actions /docs/orm/more/upgrade-guides/upgrading-versions/upgrading-to-prisma-3/referential-actions +/docs/guides/upgrade-guides/upgrading-versions/upgrading-to-prisma-3 /docs/orm/more/upgrade-guides/upgrading-versions/upgrading-to-prisma-3 +/docs/guides/upgrade-guides/upgrading-versions/codemods /docs/orm/more/upgrade-guides/upgrading-versions/codemods +/docs/guides/upgrade-guides/upgrading-versions /docs/orm/more/upgrade-guides/upgrading-versions +/docs/guides/upgrade-guides/upgrading-to-use-preview-features /docs/orm/more/upgrade-guides/upgrading-to-use-preview-features +/docs/guides/upgrade-guides/upgrade-from-prisma-1/how-to-upgrade /docs/orm/more/upgrade-guides/upgrade-from-prisma-1/how-to-upgrade +/docs/guides/upgrade-guides/upgrade-from-prisma-1/schema-incompatibilities /docs/orm/more/upgrade-guides/upgrade-from-prisma-1/schema-incompatibilities +/docs/guides/upgrade-guides/upgrade-from-prisma-1/upgrading-the-prisma-layer /docs/orm/more/upgrade-guides/upgrade-from-prisma-1/upgrading-the-prisma-layer +/docs/guides/upgrade-guides/upgrade-from-prisma-1/upgrading-nexus-prisma-to-nexus /docs/orm/more/upgrade-guides/upgrade-from-prisma-1/upgrading-nexus-prisma-to-nexus +/docs/guides/upgrade-guides/upgrade-from-prisma-1/upgrading-prisma-binding-to-nexus /docs/orm/more/upgrade-guides/upgrade-from-prisma-1/upgrading-prisma-binding-to-nexus +/docs/guides/upgrade-guides/upgrade-from-prisma-1/upgrading-prisma-binding-to-sdl-first /docs/orm/more/upgrade-guides/upgrade-from-prisma-1/upgrading-prisma-binding-to-sdl-first +/docs/guides/upgrade-guides/upgrade-from-prisma-1/upgrading-a-rest-api /docs/orm/more/upgrade-guides/upgrade-from-prisma-1/upgrading-a-rest-api +/docs/guides/upgrade-guides/upgrade-from-prisma-1/upgrade-from-mongodb-beta /docs/orm/more/upgrade-guides/upgrade-from-prisma-1/upgrade-from-mongodb-beta +/docs/guides/upgrade-guides/upgrade-from-prisma-1 /docs/orm/more/upgrade-guides/upgrade-from-prisma-1 +/docs/concepts/more/comparisons/prisma-and-typeorm /docs/orm/more/comparisons/prisma-and-typeorm +/docs/concepts/more/comparisons/prisma-and-sequelize /docs/orm/more/comparisons/prisma-and-sequelize +/docs/concepts/more/comparisons/prisma-and-mongoose /docs/orm/more/comparisons/prisma-and-mongoose +/docs/concepts/more/comparisons/prisma-and-drizzle /docs/orm/more/comparisons/prisma-and-drizzle +/docs/concepts/more/comparisons /docs/orm/more/comparisons +/docs/guides/migrate-to-prisma/migrate-from-typeorm /docs/orm/more/migrating-to-prisma/migrate-from-typeorm +/docs/guides/migrate-to-prisma/migrate-from-sequelize /docs/orm/more/migrating-to-prisma/migrate-from-sequelize +/docs/guides/migrate-to-prisma/migrate-from-mongoose /docs/orm/more/migrating-to-prisma/migrate-from-mongoose +/docs/guides/migrate-to-prisma /docs/orm/more/migrating-to-prisma +/docs/guides/development-environment/environment-variables/env-files /docs/orm/more/development-environment/environment-variables/env-files +/docs/guides/development-environment/environment-variables/managing-env-files-and-setting-variables /docs/orm/more/development-environment/environment-variables/managing-env-files-and-setting-variables +/docs/guides/development-environment/environment-variables/using-multiple-env-files /docs/orm/more/development-environment/environment-variables/using-multiple-env-files +/docs/guides/development-environment/environment-variables /docs/orm/more/development-environment/environment-variables +/docs/guides/development-environment/editor-setup /docs/orm/more/development-environment/editor-setup +/docs/guides/development-environment /docs/orm/more/development-environment +/docs/guides/other/troubleshooting-orm/creating-bug-reports /docs/orm/more/help-and-troubleshooting/creating-bug-reports +/docs/guides/other/troubleshooting-orm/help-articles/autocompletion-in-graphql-resolvers-with-js /docs/orm/more/help-and-troubleshooting/help-articles/autocompletion-in-graphql-resolvers-with-js +/docs/guides/other/troubleshooting-orm/help-articles/working-with-many-to-many-relations /docs/orm/more/help-and-troubleshooting/help-articles/working-with-many-to-many-relations +/docs/guides/other/troubleshooting-orm/help-articles/nextjs-prisma-client-dev-practices /docs/orm/more/help-and-troubleshooting/help-articles/nextjs-prisma-client-dev-practices +/docs/guides/other/troubleshooting-orm/help-articles/nextjs-prisma-client-monorepo /docs/orm/more/help-and-troubleshooting/help-articles/nextjs-prisma-client-monorepo +/docs/guides/other/troubleshooting-orm/help-articles/pkg-issue /docs/orm/more/help-and-troubleshooting/help-articles/pkg-issue +/docs/guides/other/troubleshooting-orm/help-articles/comparing-columns-through-raw-queries /docs/orm/more/help-and-troubleshooting/help-articles/comparing-columns-through-raw-queries +/docs/guides/other/troubleshooting-orm/help-articles/vercel-caching-issue /docs/orm/more/help-and-troubleshooting/help-articles/vercel-caching-issue +/docs/guides/other/troubleshooting-orm/help-articles/netlify-caching-issue /docs/orm/more/help-and-troubleshooting/help-articles/netlify-caching-issue +/docs/guides/other/advanced-database-tasks/data-validation/postgresql /docs/orm/more/help-and-troubleshooting/help-articles/check-constraints +/docs/guides/other/troubleshooting-orm/help-articles /docs/orm/more/help-and-troubleshooting/help-articles +/docs/about/prisma/releases /docs/orm/more/releases +/docs/data-platform/accelerate/what-is-accelerate /docs/accelerate/what-is-accelerate +/docs/data-platform/accelerate/getting-started /docs/accelerate/getting-started +/docs/data-platform/accelerate/concepts /docs/accelerate/concepts +/docs/data-platform/accelerate/api-reference /docs/accelerate/api-reference +/docs/data-platform/accelerate/limitations /docs/accelerate/limitations +/docs/data-platform/accelerate/evaluating /docs/accelerate/evaluating +/docs/data-platform/accelerate/faq /docs/accelerate/faq +/docs/data-platform/accelerate/feedback /docs/accelerate/feedback +/docs/guides/migrate/developing-with-prisma-migrate /docs/orm/prisma-migrate +/docs/guides/migrate/patching-production /docs/orm/prisma-migrate/workflows/patching-and-hotfixing +/docs/guides/migrate /docs/orm/prisma-migrate +/docs/guides/database /docs/orm/overview/databases +/docs/guides/performance-and-optimization/metrics /docs/orm/prisma-client/observability-and-logging/metrics +/docs/guides/performance-and-optimization/query-tracing /docs/orm/prisma-client/observability-and-logging/opentelemetry-tracing +/docs/guides/performance-and-optimization /docs/orm/prisma-client/queries/query-optimization-performance +/docs/guides/upgrade-guides /docs/orm/more/upgrade-guides +/docs/guides/other/troubleshooting-orm /docs/orm/more/help-and-troubleshooting +/docs/guides/other/advanced-database-tasks/typesafe-raw-sql /docs/orm/prisma-client/queries/raw-database-access/custom-and-type-safe-queries +/docs/guides/other/advanced-database-tasks/data-validation /docs/orm/prisma-client/queries/custom-validation +/docs/guides/other/advanced-database-tasks /docs/orm +/docs/guides/other /docs/orm +/docs/guides /docs/orm +/docs/guides/upgrade-guides/upgrade-from-prisma-1/schema-incompatibilities-postgresql /docs/orm/more/upgrade-guides/upgrade-from-prisma-1/schema-incompatibilities-postgresql +/docs/guides/upgrade-guides/upgrade-from-prisma-1/upgrading-the-prisma-layer-postgresql /docs/orm/more/upgrade-guides/upgrade-from-prisma-1/upgrading-the-prisma-layer-postgresql +/docs/data-platform/pulse/what-is-pulse /docs/pulse/what-is-pulse +/docs/data-platform/pulse/getting-started /docs/pulse/getting-started +/docs/data-platform/pulse/concepts /docs/pulse/concepts +/docs/data-platform/pulse/api-reference /docs/pulse/api-reference +/docs/data-platform/pulse/current-limitations /docs/pulse/current-limitations +/docs/data-platform/pulse/faq /docs/pulse/faq +/docs/data-platform/pulse/feedback /docs/pulse/feedback +/docs/reference/api-reference /docs/orm/reference +/docs/reference/database-reference /docs/orm/reference +/docs/data-platform/platform-console/about /docs/platform/platform-console/about +/docs/data-platform/platform-console/concepts/workspaces /docs/platform/platform-console/concepts/workspaces +/docs/data-platform/platform-console/concepts/projects /docs/platform/platform-console/concepts/projects +/docs/data-platform/platform-console/concepts /docs/platform/platform-console/concepts +/docs/data-platform/platform-console/maturity-levels /docs/platform/platform-console/maturity-levels +/docs/data-platform/platform-console/limits /docs/platform/platform-console/limits +/docs/data-platform/platform-console/support /docs/platform/platform-console/support +/docs/data-platform/platform-console /docs/platform/platform-console +/docs/data-platform/classic-projects/data-proxy/use-data-proxy /docs/platform/classic-projects/data-proxy/use-data-proxy +/docs/data-platform/classic-projects/data-proxy/deploy /docs/platform/classic-projects/data-proxy/deploy +/docs/data-platform/classic-projects/data-proxy/prisma-cli-with-data-proxy /docs/platform/classic-projects/data-proxy/prisma-cli-with-data-proxy +/docs/data-platform/classic-projects/data-proxy/considerations-limitations /docs/platform/classic-projects/data-proxy/considerations-limitations +/docs/data-platform/classic-projects/data-proxy /docs/platform/classic-projects/data-proxy +/docs/data-platform/classic-projects/platform/static-ips /docs/platform/classic-projects/platform/static-ips +/docs/data-platform/classic-projects/platform/projects/create /docs/platform/classic-projects/platform/projects/create +/docs/data-platform/classic-projects/platform/projects/edit-settings /docs/platform/classic-projects/platform/projects/edit-settings +/docs/data-platform/classic-projects/platform/projects/delete-project /docs/platform/classic-projects/platform/projects/delete-project +/docs/data-platform/classic-projects/platform/projects /docs/platform/classic-projects/platform/projects +/docs/data-platform/classic-projects/platform/environments/view-all /docs/platform/classic-projects/platform/environments/view-all +/docs/data-platform/classic-projects/platform/environments/create /docs/platform/classic-projects/platform/environments/create +/docs/data-platform/classic-projects/platform/environments/edit-settings/edit-name-and-url-handle /docs/platform/classic-projects/platform/environments/edit-settings/edit-name-and-url-handle +/docs/data-platform/classic-projects/platform/environments/edit-settings/change-default-environment /docs/platform/classic-projects/platform/environments/edit-settings/change-default-environment +/docs/data-platform/classic-projects/platform/environments/edit-settings /docs/platform/classic-projects/platform/environments/edit-settings +/docs/data-platform/classic-projects/platform/environments/delete /docs/platform/classic-projects/platform/environments/delete +/docs/data-platform/classic-projects/platform/environments /docs/platform/classic-projects/platform/environments +/docs/data-platform/classic-projects/platform/members/roles-permissions /docs/platform/classic-projects/platform/members/roles-permissions +/docs/data-platform/classic-projects/platform/members/add /docs/platform/classic-projects/platform/members/add +/docs/data-platform/classic-projects/platform/members/change-role /docs/platform/classic-projects/platform/members/change-role +/docs/data-platform/classic-projects/platform/members/remove /docs/platform/classic-projects/platform/members/remove +/docs/data-platform/classic-projects/platform/members /docs/platform/classic-projects/platform/members +/docs/data-platform/classic-projects/platform/data-browser /docs/platform/classic-projects/platform/data-browser +/docs/data-platform/classic-projects/platform/query-console /docs/platform/classic-projects/platform/query-console +/docs/data-platform/classic-projects/platform/schema-viewer /docs/platform/classic-projects/platform/schema-viewer +/docs/data-platform/classic-projects/platform/account /docs/platform/classic-projects/platform/account +/docs/data-platform/classic-projects/platform/github-integration /docs/platform/classic-projects/platform/github-integration +/docs/data-platform/classic-projects/platform/troubleshooting/connection-to-db-timed-out /docs/platform/classic-projects/platform/troubleshooting/connection-to-db-timed-out +/docs/data-platform/classic-projects/platform/troubleshooting/cannot-change-db-of-env /docs/platform/classic-projects/platform/troubleshooting/cannot-change-db-of-env +/docs/data-platform/classic-projects/platform/troubleshooting/cannot-edit-schema-file /docs/platform/classic-projects/platform/troubleshooting/cannot-edit-schema-file +/docs/data-platform/classic-projects/platform/troubleshooting/schema-file-does-not-update /docs/platform/classic-projects/platform/troubleshooting/schema-file-does-not-update +/docs/data-platform/classic-projects/platform/troubleshooting /docs/platform/classic-projects/platform/troubleshooting +/docs/data-platform/classic-projects/platform /docs/platform/classic-projects/platform +/docs/data-platform/classic-projects/support /docs/platform/classic-projects/support +/docs/data-platform/classic-projects /docs/platform/classic-projects +/docs/data-platform /docs/platform +/docs/about/prisma/example-projects https://github.com/prisma/prisma-examples/ +/docs/about/prisma/roadmap /docs/orm/more/releases#roadmap +/docs/about/prisma/faq /docs/support +/docs/about/prisma/limitations /docs/orm/prisma-schema/data-model/models#limitations +/docs/about/prisma /docs/about +/docs/data-platform/accelerate /docs/accelerate +/docs/data-platform/pulse /docs/pulse +/docs/guides/upgrade-guides/upgrade-from-prisma-1/schema-incompatibilities-mysql /docs/orm/more/upgrade-guides/upgrade-from-prisma-1/schema-incompatibilities-mysql +/docs/guides/upgrade-guides/upgrade-from-prisma-1/upgrading-the-prisma-layer-mysql /docs/orm/more/upgrade-guides/upgrade-from-prisma-1/upgrading-the-prisma-layer-mysql +/docs/concepts/overview/prisma-in-your-stack/graphql /docs/orm/overview/prisma-in-your-stack/graphql +/docs/concepts/overview/prisma-in-your-stack/rest /docs/orm/overview/prisma-in-your-stack/rest +/docs/accelerate/concepts /docs/accelerate +/docs/platform/classic-projects/data-proxy/* /docs/accelerate +/docs/platform/classic-projects/platform/* /docs/platform +/docs/platform/classic-projects/support https://www.prisma.io/support +/docs/platform/classic-projects /docs/platform +/docs/platform/platform-console/about /docs/platform/about +/docs/platform/platform-console/concepts/workspaces /docs/platform/concepts/workspaces +/docs/platform/platform-console/concepts/projects /docs/platform/concepts/projects +/docs/platform/platform-console/maturity-levels /docs/platform/maturity-levels +/docs/platform/platform-console/limits /docs/platform/limits +/docs/platform/platform-console/support /docs/platform/support +/docs/platform/platform-console /docs/platform +/docs/orm/prisma-client/deployment/edge/deploy-to-cloudflare-workers /docs/orm/prisma-client/deployment/edge/deploy-to-cloudflare +/docs/orm/prisma-client/deployment/module-bundlers /docs/orm/prisma-client/deployment/module-bundlers +/docs/pulse/current-limitations /docs/pulse/known-limitations 301 +/docs/pulse/current-limitations#change-events-are-not-persisted /docs/pulse/known-limitations#database-events-are-not-persisted 301 +/pulse/current-limitations /pulse/known-limitations 301 +/pulse/getting-started#configuring-replication-slot /pulse/database-setup/general-database-instructions#enable-logical-replication 301 diff --git a/static/ai_button.svg b/static/ai_button.svg deleted file mode 100644 index 1c632110c0..0000000000 --- a/static/ai_button.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/static/ai_logo.png b/static/ai_logo.png deleted file mode 100644 index 74d2ee4a59..0000000000 Binary files a/static/ai_logo.png and /dev/null differ diff --git a/static/fonts/Barlow-Bold.woff2 b/static/fonts/Barlow-Bold.woff2 index 4e73de50c2..5a99c42ec0 100644 Binary files a/static/fonts/Barlow-Bold.woff2 and b/static/fonts/Barlow-Bold.woff2 differ diff --git a/static/fonts/Barlow-Regular.woff2 b/static/fonts/Barlow-Regular.woff2 new file mode 100644 index 0000000000..04e90b0939 Binary files /dev/null and b/static/fonts/Barlow-Regular.woff2 differ diff --git a/static/fonts/Barlow-SemiBold.woff2 b/static/fonts/Barlow-SemiBold.woff2 deleted file mode 100644 index 77b92f377b..0000000000 Binary files a/static/fonts/Barlow-SemiBold.woff2 and /dev/null differ diff --git a/static/fonts/Inter-Bold.woff2 b/static/fonts/Inter-Bold.woff2 index 3813d99430..87e7b0a694 100644 Binary files a/static/fonts/Inter-Bold.woff2 and b/static/fonts/Inter-Bold.woff2 differ diff --git a/static/fonts/Inter-BoldItalic.woff2 b/static/fonts/Inter-BoldItalic.woff2 index ec305f36d8..501ebfc15e 100644 Binary files a/static/fonts/Inter-BoldItalic.woff2 and b/static/fonts/Inter-BoldItalic.woff2 differ diff --git a/static/fonts/Inter-Italic.woff2 b/static/fonts/Inter-Italic.woff2 index 4fb825a4ac..aa2ed52bc6 100644 Binary files a/static/fonts/Inter-Italic.woff2 and b/static/fonts/Inter-Italic.woff2 differ diff --git a/static/fonts/Inter-Medium.woff2 b/static/fonts/Inter-Medium.woff2 index effc911a0d..a2905b2603 100644 Binary files a/static/fonts/Inter-Medium.woff2 and b/static/fonts/Inter-Medium.woff2 differ diff --git a/static/fonts/Inter-MediumItalic.woff2 b/static/fonts/Inter-MediumItalic.woff2 index 420a657eac..326dd14829 100644 Binary files a/static/fonts/Inter-MediumItalic.woff2 and b/static/fonts/Inter-MediumItalic.woff2 differ diff --git a/static/fonts/Inter-Regular.woff2 b/static/fonts/Inter-Regular.woff2 index 59ed376834..5011ab8f91 100644 Binary files a/static/fonts/Inter-Regular.woff2 and b/static/fonts/Inter-Regular.woff2 differ diff --git a/static/fonts/Inter-SemiBold.woff2 b/static/fonts/Inter-SemiBold.woff2 index 08f0dc7aba..02a6fb928b 100644 Binary files a/static/fonts/Inter-SemiBold.woff2 and b/static/fonts/Inter-SemiBold.woff2 differ diff --git a/static/fonts/Inter-SemiBoldItalic.woff2 b/static/fonts/Inter-SemiBoldItalic.woff2 index cdf2cb112d..070164c1b6 100644 Binary files a/static/fonts/Inter-SemiBoldItalic.woff2 and b/static/fonts/Inter-SemiBoldItalic.woff2 differ diff --git a/static/fonts/JetBrainsMono-Regular.woff2 b/static/fonts/JetBrainsMono-Regular.woff2 index cc9a1ae35f..86e501f205 100644 Binary files a/static/fonts/JetBrainsMono-Regular.woff2 and b/static/fonts/JetBrainsMono-Regular.woff2 differ diff --git a/static/fonts/fa-brands-400.woff2 b/static/fonts/fa-brands-400.woff2 index 76fbd53382..f27ea1a4de 100644 Binary files a/static/fonts/fa-brands-400.woff2 and b/static/fonts/fa-brands-400.woff2 differ diff --git a/static/fonts/fa-light-300.woff2 b/static/fonts/fa-light-300.woff2 index 1f5e395d13..87ee1769f3 100644 Binary files a/static/fonts/fa-light-300.woff2 and b/static/fonts/fa-light-300.woff2 differ diff --git a/static/fonts/fa-regular-400.woff2 b/static/fonts/fa-regular-400.woff2 index 377777b767..7266a63f39 100644 Binary files a/static/fonts/fa-regular-400.woff2 and b/static/fonts/fa-regular-400.woff2 differ diff --git a/static/fonts/fa-solid-900.woff2 b/static/fonts/fa-solid-900.woff2 index 0fdabda469..bf573acd03 100644 Binary files a/static/fonts/fa-solid-900.woff2 and b/static/fonts/fa-solid-900.woff2 differ diff --git a/static/icons/breadcrumb.svg b/static/icons/breadcrumb.svg new file mode 100644 index 0000000000..9f1f05b719 --- /dev/null +++ b/static/icons/breadcrumb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/icons/chevron-up-solid.svg b/static/icons/chevron-up-solid.svg new file mode 100644 index 0000000000..24fbd45ed3 --- /dev/null +++ b/static/icons/chevron-up-solid.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/static/icons/technologies/cockroachdbgradient.svg b/static/icons/technologies/cockroachdbgradient.svg new file mode 100644 index 0000000000..80edaa3041 --- /dev/null +++ b/static/icons/technologies/cockroachdbgradient.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/icons/technologies/mongodbsimple.svg b/static/icons/technologies/mongodbsimple.svg new file mode 100644 index 0000000000..c544636f49 --- /dev/null +++ b/static/icons/technologies/mongodbsimple.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/icons/technologies/mysqlsimple.svg b/static/icons/technologies/mysqlsimple.svg new file mode 100644 index 0000000000..49fa851770 --- /dev/null +++ b/static/icons/technologies/mysqlsimple.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/icons/technologies/planetscale.svg b/static/icons/technologies/planetscale.svg new file mode 100644 index 0000000000..eb481abea5 --- /dev/null +++ b/static/icons/technologies/planetscale.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/icons/technologies/postgresqlsimple.svg b/static/icons/technologies/postgresqlsimple.svg new file mode 100644 index 0000000000..e458a949b2 --- /dev/null +++ b/static/icons/technologies/postgresqlsimple.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/icons/technologies/sqlserver.svg b/static/icons/technologies/sqlserver.svg new file mode 100644 index 0000000000..513c4cfd68 --- /dev/null +++ b/static/icons/technologies/sqlserver.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/icons/triangle-right.svg b/static/icons/triangle-right.svg new file mode 100644 index 0000000000..222c1a4c6e --- /dev/null +++ b/static/icons/triangle-right.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/content/300-accelerate/images/accelerate-in-dev.png b/static/img/accelerate/accelerate-in-dev.png similarity index 100% rename from content/300-accelerate/images/accelerate-in-dev.png rename to static/img/accelerate/accelerate-in-dev.png diff --git a/content/300-accelerate/images/accelerate-in-prod.png b/static/img/accelerate/accelerate-in-prod.png similarity index 100% rename from content/300-accelerate/images/accelerate-in-prod.png rename to static/img/accelerate/accelerate-in-prod.png diff --git a/content/300-accelerate/images/accelerate-update-database-connection-string.png b/static/img/accelerate/accelerate-update-database-connection-string.png similarity index 100% rename from content/300-accelerate/images/accelerate-update-database-connection-string.png rename to static/img/accelerate/accelerate-update-database-connection-string.png diff --git a/content/300-accelerate/images/accelerate.png b/static/img/accelerate/accelerate.png similarity index 100% rename from content/300-accelerate/images/accelerate.png rename to static/img/accelerate/accelerate.png diff --git a/content/300-accelerate/images/swr.png b/static/img/accelerate/swr.png similarity index 100% rename from content/300-accelerate/images/swr.png rename to static/img/accelerate/swr.png diff --git a/content/300-accelerate/images/ttl.png b/static/img/accelerate/ttl.png similarity index 100% rename from content/300-accelerate/images/ttl.png rename to static/img/accelerate/ttl.png diff --git a/content/300-accelerate/images/ttl_and_swr.png b/static/img/accelerate/ttl_and_swr.png similarity index 100% rename from content/300-accelerate/images/ttl_and_swr.png rename to static/img/accelerate/ttl_and_swr.png diff --git a/static/img/docs-social.png b/static/img/docs-social.png new file mode 100644 index 0000000000..17ca200216 Binary files /dev/null and b/static/img/docs-social.png differ diff --git a/src/images/favicon-32x32.png b/static/img/favicon.png similarity index 100% rename from src/images/favicon-32x32.png rename to static/img/favicon.png diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/1-create-database.jpg b/static/img/getting-started/1-create-database.jpg similarity index 100% rename from content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/1-create-database.jpg rename to static/img/getting-started/1-create-database.jpg diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/2-create-user.jpg b/static/img/getting-started/2-create-user.jpg similarity index 100% rename from content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/2-create-user.jpg rename to static/img/getting-started/2-create-user.jpg diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/3-create-posts.jpg b/static/img/getting-started/3-create-posts.jpg similarity index 100% rename from content/100-getting-started/02-setup-prisma/200-add-to-existing-project/120-mongodb/3-create-posts.jpg rename to static/img/getting-started/3-create-posts.jpg diff --git a/content/100-getting-started/images/prisma-client-install-and-generate.png b/static/img/getting-started/prisma-client-install-and-generate.png similarity index 100% rename from content/100-getting-started/images/prisma-client-install-and-generate.png rename to static/img/getting-started/prisma-client-install-and-generate.png diff --git a/content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/prisma-client-node-module.png b/static/img/getting-started/prisma-client-node-module.png similarity index 100% rename from content/100-getting-started/02-setup-prisma/200-add-to-existing-project/110-relational-databases/prisma-client-node-module.png rename to static/img/getting-started/prisma-client-node-module.png diff --git a/content/doc-images/prisma-db-pull-generate-schema.png b/static/img/getting-started/prisma-db-pull-generate-schema.png similarity index 100% rename from content/doc-images/prisma-db-pull-generate-schema.png rename to static/img/getting-started/prisma-db-pull-generate-schema.png diff --git a/content/100-getting-started/images/prisma-evolve-app-workflow.png b/static/img/getting-started/prisma-evolve-app-workflow.png similarity index 100% rename from content/100-getting-started/images/prisma-evolve-app-workflow.png rename to static/img/getting-started/prisma-evolve-app-workflow.png diff --git a/static/img/logo-dark.svg b/static/img/logo-dark.svg new file mode 100644 index 0000000000..8db99f452c --- /dev/null +++ b/static/img/logo-dark.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/img/logo-white.svg b/static/img/logo-white.svg new file mode 100644 index 0000000000..a5f22571d5 --- /dev/null +++ b/static/img/logo-white.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/img/logo.svg b/static/img/logo.svg new file mode 100644 index 0000000000..8db99f452c --- /dev/null +++ b/static/img/logo.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/doc-images/baseline-production-from-local.png b/static/img/orm/baseline-production-from-local.png similarity index 100% rename from content/doc-images/baseline-production-from-local.png rename to static/img/orm/baseline-production-from-local.png diff --git a/content/doc-images/connect-sql-server.png b/static/img/orm/connect-sql-server.png similarity index 100% rename from content/doc-images/connect-sql-server.png rename to static/img/orm/connect-sql-server.png diff --git a/content/doc-images/cursor-1.png b/static/img/orm/cursor-1.png similarity index 100% rename from content/doc-images/cursor-1.png rename to static/img/orm/cursor-1.png diff --git a/content/doc-images/cursor-2.png b/static/img/orm/cursor-2.png similarity index 100% rename from content/doc-images/cursor-2.png rename to static/img/orm/cursor-2.png diff --git a/content/doc-images/cursor-3.png b/static/img/orm/cursor-3.png similarity index 100% rename from content/doc-images/cursor-3.png rename to static/img/orm/cursor-3.png diff --git a/content/doc-images/offset-skip-take.png b/static/img/orm/offset-skip-take.png similarity index 100% rename from content/doc-images/offset-skip-take.png rename to static/img/orm/offset-skip-take.png diff --git a/static/img/orm/prisma-db-pull-generate-schema.png b/static/img/orm/prisma-db-pull-generate-schema.png new file mode 100644 index 0000000000..4328184337 Binary files /dev/null and b/static/img/orm/prisma-db-pull-generate-schema.png differ diff --git a/content/doc-images/prisma-evolve-app-workflow.png b/static/img/orm/prisma-evolve-app-workflow.png similarity index 100% rename from content/doc-images/prisma-evolve-app-workflow.png rename to static/img/orm/prisma-evolve-app-workflow.png diff --git a/content/doc-images/prisma-migrate-development-workflow.png b/static/img/orm/prisma-migrate-development-workflow.png similarity index 100% rename from content/doc-images/prisma-migrate-development-workflow.png rename to static/img/orm/prisma-migrate-development-workflow.png diff --git a/static/img/pulse/add-group.png b/static/img/pulse/add-group.png new file mode 100644 index 0000000000..083ac2897d Binary files /dev/null and b/static/img/pulse/add-group.png differ diff --git a/static/img/pulse/aws-rds-create-parameter-group.png b/static/img/pulse/aws-rds-create-parameter-group.png new file mode 100644 index 0000000000..20e969cb77 Binary files /dev/null and b/static/img/pulse/aws-rds-create-parameter-group.png differ diff --git a/static/img/pulse/pulse-usecase.png b/static/img/pulse/pulse-usecase.png new file mode 100644 index 0000000000..2bc05b4742 Binary files /dev/null and b/static/img/pulse/pulse-usecase.png differ diff --git a/static/img/pulse/railway-database-url.png b/static/img/pulse/railway-database-url.png new file mode 100644 index 0000000000..565c9eab05 Binary files /dev/null and b/static/img/pulse/railway-database-url.png differ diff --git a/static/img/pulse/railway-template-configure.png b/static/img/pulse/railway-template-configure.png new file mode 100644 index 0000000000..a190ef7936 Binary files /dev/null and b/static/img/pulse/railway-template-configure.png differ diff --git a/static/img/pulse/replication-slot-submission.png b/static/img/pulse/replication-slot-submission.png new file mode 100644 index 0000000000..7815f39f95 Binary files /dev/null and b/static/img/pulse/replication-slot-submission.png differ diff --git a/static/img/pulse/set-logical-replication-parameter.png b/static/img/pulse/set-logical-replication-parameter.png new file mode 100644 index 0000000000..451aa42ab0 Binary files /dev/null and b/static/img/pulse/set-logical-replication-parameter.png differ diff --git a/static/img/pulse/supabase-direct-database-connection.png b/static/img/pulse/supabase-direct-database-connection.png new file mode 100644 index 0000000000..c7cbf59ab2 Binary files /dev/null and b/static/img/pulse/supabase-direct-database-connection.png differ diff --git a/static/img/pulse/what-is-pulse.png b/static/img/pulse/what-is-pulse.png new file mode 100644 index 0000000000..8443201104 Binary files /dev/null and b/static/img/pulse/what-is-pulse.png differ diff --git a/static/img/technologies/cockroachdb.svg b/static/img/technologies/cockroachdb.svg new file mode 100644 index 0000000000..9af463e9ed --- /dev/null +++ b/static/img/technologies/cockroachdb.svg @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file diff --git a/static/img/technologies/cockroachdbdark.svg b/static/img/technologies/cockroachdbdark.svg new file mode 100644 index 0000000000..9f223f6e91 --- /dev/null +++ b/static/img/technologies/cockroachdbdark.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/img/technologies/cockroachdbgradient.svg b/static/img/technologies/cockroachdbgradient.svg new file mode 100644 index 0000000000..a09d52314c --- /dev/null +++ b/static/img/technologies/cockroachdbgradient.svg @@ -0,0 +1,20 @@ + + + + + + + + + + \ No newline at end of file diff --git a/static/img/technologies/flow.svg b/static/img/technologies/flow.svg new file mode 100644 index 0000000000..bf45c87c65 --- /dev/null +++ b/static/img/technologies/flow.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/static/img/technologies/go.svg b/static/img/technologies/go.svg new file mode 100644 index 0000000000..2e04b15109 --- /dev/null +++ b/static/img/technologies/go.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/icons/technologies/JS.tsx b/static/img/technologies/js.svg similarity index 95% rename from src/icons/technologies/JS.tsx rename to static/img/technologies/js.svg index dd6c4e7643..fb449b8a8f 100644 --- a/src/icons/technologies/JS.tsx +++ b/static/img/technologies/js.svg @@ -1,6 +1,3 @@ -import * as React from 'react' - -export default () => ( ( d="M14.0653 19.7432L15.9226 18.7016C16.4115 19.475 17.0469 20.0431 18.1711 20.0431C19.1163 20.0431 19.7189 19.5854 19.7189 18.9541C19.7189 18.1966 19.0998 17.9282 18.057 17.4865L17.4869 17.2496C15.8412 16.5711 14.7495 15.7189 14.7495 13.9197C14.7495 12.2626 16.0529 11 18.0897 11C19.5398 11 20.5825 11.4893 21.332 12.7677L19.556 13.8723C19.1649 13.1938 18.7414 12.9255 18.0897 12.9255C17.4216 12.9255 16.998 13.3358 16.998 13.8723C16.998 14.5352 17.4216 14.8035 18.3992 15.2139L18.9694 15.4506C20.9083 16.2555 22 17.0761 22 18.9225C22 20.9111 20.387 22 18.22 22C16.1019 22 14.7332 21.0216 14.0653 19.7432Z" fill="#000" /> - -) + \ No newline at end of file diff --git a/static/img/technologies/mariadb.svg b/static/img/technologies/mariadb.svg new file mode 100644 index 0000000000..ef34e995a6 --- /dev/null +++ b/static/img/technologies/mariadb.svg @@ -0,0 +1,47 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/icons/technologies/MariaDBDark.tsx b/static/img/technologies/mariadbdark.svg similarity index 99% rename from src/icons/technologies/MariaDBDark.tsx rename to static/img/technologies/mariadbdark.svg index 50a0a6cfbd..cc5e9791c8 100644 --- a/src/icons/technologies/MariaDBDark.tsx +++ b/static/img/technologies/mariadbdark.svg @@ -1,6 +1,3 @@ -import React from 'react' - -export default () => ( ( xlinkHref="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAJCCAMAAAEQNLY4AAAAnFBMVEX///////////8fMF8pNF8tPWkzOV47SnM9PV5HQl5JV31RRl1XZIdbSl1lT11lcZFwU11zfpt6V1yBi6WEXFyOYFyPmK+YZVudpLmiY0uiaVuobVarscOsbVuud2KzgG22clq5ini5vs2/lIPAdlrFno/Hy9fLp5rRsaXV2OHWu7Dcxbzizsfj5evo2NLu4t3x8vXz7On59fT////HuKzxAAAAA3RSTlMgQIDf+k4bAAAAAWJLR0QzN9V8XgAAPbVJREFUeNrsXQljmzqzzfdk7Jjg2MQOXoIbx5fQ0JSUlv//357ZjCQkkEBgIDO3t01YhuFwNBqNtru7/6mVu/8L1QooBIUCghBSpRA5sahSGKlbOc4cOWoUXvQdEXLmB8dRgqGfvK5zWDimEoVOJtNAyVeeZvqQItrw9dVTmOmbuGoUGiUG1lLoKFaY61Oj8JArDFQoPF31HZECbzNznPI3llOIHEehQnPhkILM+go95BSEbaCIQvvosKSuQuRwpJ5Cz5HUV6GQa15NhZsyfTUUsj5tUkYifTUUOjyFCNVSyNVXU2HsBR4RKZg+CYXLy9WH7E7NdQ1S4QppJRoLChGXGVZm4KVallGIEJdo8Rmky0ZffN7GJzTZcG7rbDmvczFwgRTGh4hfPGoqRCJXDSnGzl+I9WoaosmFsjqFpKSoQsRQmCoiiw2mEEmAn16jo+z5IgoRml3KW/QnOmLljQgrv8ZAZQoR/m8E0eWn6Aakackdl58u/wcIf3qJwvQgSu+9WouyO2b0seQX0lFcFboouSq6YnZ9op1ZcDUl/ZFWWLQQpXdEGFE3VykkvkCuMDmqoeLNpQqx80WFGY7iCoMqhdcPgH+UkHEMpfqC9PyMrRD7O7rFReQrJV/NRHlJCfglxaD/NuOrDOJYcD0WSdpKiX7swtu8XaTswn3hwO9yhfuvry9RhfHP/yosTG/4sd+nv0X/7l/TX/df6b//4r/jc9EL/UvPv+z3BYUfHx+xpn97TOE++hP+2ocf2NH0rzfsuvwNKIXRVaTCyLT9R6ZkTyr8KFOY/L1nKvxB3ndV+FWpMEzeMdz/2WMKqaP4K3/ueQozeUu+HkWhN+Kf8L/rifdPSKaBQgUK/6c6MR6qthAUgsJK0RE6K1K4jhOxkxNaq1G4dZzLn8mqkMeuqS9usF7+P9Jpzrva+uIXLjaD6ylE/DTsXRMDncNMDW2ydN1JU8TD0rRzA30LRQonZQbWUOg5ihVWZYkl1VmOWoUPeKpOb6zwXiSpW6O4KVCINuJpZ3nTEnlAdj2FJ9m0c7m6J/k8thiJGfq8Ggr5+qbcbNFdLX0lmcQShQduHrsk0V6iUKuVaOcrXOI5cJnEePGQe7l4fr3Tci22PlGFfOBThQjRiZByhZkdJ8YN0fE5ko2+ELcgRGcmVdnKO8ZdqwtyjEvdkgJXy8GeTiLJVAkHSwWCo4+xWXnstGK9/GSzFKLCD1UKE50WldRlKHQFDM4fYyHieVeFRp4PR/m/UV7cCi+vlBDTjFKQtoVlT+1EYVBUiNxM4TXtu0Npuc0zqt7FcxhYOtZGXAtRlgBHIcpzpwjLi4cJ9jZCBOA8DFGIZ4iv748pXGLAFRTqTIXoenUhwxz9kLbB1rTC+F+PoTDTxFPoZcRjKMzTzoRClCTazyEyigo1xitfrksUrmmFBsrpm99hkh+loPDKw6sFV4XJgeTmiEBm1OOEyK+cgmwgRkkp0MbAy0GqHPlJDjw/fzlmhOs0MZ56M/vyo9WBt3mrSIzvBY4QCve/yhPjRF78i5FULShMte2v6en435c9kW5OM71YZjc5kufFc4XvaV78mkYu5r1f9nECOn14oilJVKdZZLbC1z1PYWTPnlSYnkyz04xX3l9z4wyFmSFSCvdJV8D+D6Fw/0kovGIYHQnZCjP5m3y8DzLf/Z5ky78+Uo7lZ94gmQYKVShUnWkHA8FAMBAM7JuBQfkwslsZmKVYTnFyxeiTgWdEpM6i7qJLyN0bAxPrJhfUtvFP23jkZm8+cZrmm8Tf1jlcsJvzBnPfxMAHVhrS7k0pDsTT1Tcx0KCt25R/264NRDXQ69LAaU37ujKQwT63RwZqEn0btzCwWHqPqGLUepcGHqQ6h7o2EPE6r/pgoIHke9e6MtBCx/Lev5sZeEbo2amQexn7lBk4QxtHUFDXBmoLR0bk7GtqIHJkJbJv2ZGB8tal3bvdtOoWThf21Tbwvo55J9SVgYGQPY+IHGFQ3nuv0kAkiNeK+rYdGWgSZmypkROrY24S2z7hQKaWgTo6MR/Kko3DudRTayCr8pqyH+TOCsNQrsEBYWKgzEBU21dc75zkHf6peabqT4wo6wTe30fXEZJVUzSbGhhcSfcs/nHQ0/V1zDBs18Bkkq5hSfuhlbRL6Spg1ROmGSPJsIKB3RvISsiKkr28XJD1iZs3sUqqaZaBRQvFS6Pvlpuf1+jE2K2sYVP0mUUD3aKzQ/FcYgXNePJFvfT3q4HRs6sNjEbIkBYitMNuxL/HdRJ2mE/Iztt5+XVGfiHD4txAXczA6P+A/OTYdOHrKWKW+JkiAwa6Fr8y08AwHltp0YPcqg3ELYwpmVJ6TWpAxedex9FpjKLDMhDhhUQTKCQG9amSIlP4gLg5RQMZI2zLDbzmJYrTYf6PBToOhUs8WNTAQsHjGWjgHGRcwjCQ/NRuWMvAmRCCdCFhlGPaQC+/IC6b7vUXLeG7KAddMqVU9uWlECQflncDpdT0sPM64htIHdOKF0aaUvUW7iOqOEg0NPBuquxOj+0Hi3UO3kYy8FUrMlkyqjoNopnWDdxnUlMf78aPj7/YIxoZ+NXohXkPr6233EASzmx05xt58o11bUjdSZxJ7/jDuOZ6suoT4x8j/5U2MIyWKKCupbQVXxxTEP39SSj4oj9BKYL7fTzs8k3MwA/CwAiLt1IDPwi1tQz8mZn0mZ77zTfwB4ngfv9OIfibg+C+gYEUecIC6XCNn0wOZr9+MDiYXvMZyhgIjhoMBAPBQNUG/q/nchf2HUEwEAwEA8FAMBAMBAPBwH4bqJV3kt/YQLdyJM2NDMzW2n5w+mggNkpzs3B6Z2C6OEsyeso5omgMVZ8MTIerrOJxXYftqmpYf8cGevfXwTfxP4spb2mvGxm4yIcuxfOZHhfRqOD+GHjv4AAu4s99QP1x1PRAsFU8L6c/NYnu1JjV1KWBpzqzru5u94GjJZ/sHgULtlNrWlN3Bq7qTbvqzECt7rS1rgws8u/cKwNR7Xl1HcV/xWHEZq8MfKoLYEcGFj7woV8Gek1mJnZh4IFh4K5HBk4YK4mKAtiFgajZ1Mlb2NcrAxF7pdPeGIg4U6+sfhh4XjSffNo5fHEZ7oWB3BmyqA8GuqW77knMu2rHQDQtmc72JDc7VrlxAUJKp+8qbvqie9Xzi9UZtyz9sMQEz3XnBp7RpK0J0ErKxH2LM7QbW+fLzYM+dGygPa0xBTrozMBgUmuOdtiVgTUmuaMuDdw4TusANjDQ7GgSvrJkkHAR7sZA3akNoN2FgZ6QPVuWfXIANtySp1wWuIGLik0N1BooVrVRXmjSnYFiBNyS60BcJ7V0wEHREuEwF1rQWjfwUci+Z+5CEG0bSFJrQU5Umj/nNt3fxkAeLkXhXei2aKCbP3ZRuZQGvlBZbQjFDLTSif95Z8wqe5hhua61ZNk3wQG0665GUm2gcc+rs4qTotdMACdxya2JYaWBW4Z5scvlL02ajjnBm3ExeWtBWGXghAOfJ16WcsDWLXDQp8qj8LpUqE6urW4hucdX1hSrClTZJ2KgfiTWDxKqqZZTRfYJGEiURtHlDFDujMKWDVxGxfi0nUuxG9VsIdVC0IqdxlKmftLu6zTRu0tgBiitCG0FytowUHplqI4NXKqzLoRBtmDg+Ax0OzDQb+Zhqv3PpcK0GYd1UQMZjxDuNyjvaOW0TEoX1SsaaDFiZeEqVRBBcmkz7JAtYCDjGRJ1vlVuPmVs9qPFfw7TQL++gaGogdjSKDktGKNVmAaiqiNKDAyzpg1uIBIzMCgzcHdND/hWrDn6W08X37Es6isusytC1oI/qKaBiH/Awoqcm+9omF6DGOvNzLB1fAp5Co8y0BQxkFx2K/ot759M0fOjZb/Mq4EXUN0dAUG8bo6VtjR5BmabPWYGGiKFxErwIJVgBQ5v5Np5i5z6RgENJdtAjTBQY67Yw3QpOITxjoKp6jPeagoYax4RG2wyiiuz2JSmRBgGLouPdFnPjT8f20DEXF2q2kBfyMBkpbKA+j1NM7BLocE/EslMGEEkYiABAbGmGq1glh0OCgYyHSDXQIvvcDkGYutnebiBM/bbUJjuahrI2hKJbyDKi1nmoAqhCsdAS9TANWUgvTwfw0BsLcDkb5dwWIZaAxFtYPEj3fHigvgHjaQi/QHWHANDcQN3BQNRlYEzTOk1I5+4ZJtXiotHiASnzTGwUBcLGZgvFolmxFJ68d+6oIEiflBLa1DMQL+Qu73jR0REhJscn1GLY/IMFKpJGPFgWF2KKQMZhdvPD2lcA43KunjGiKgtbLVPAQNDvImQBULYw5Dmcg2MPl9y946IZpjNptIulDuOl2E0IWht67DEQHL9XKaBrLZUZV1sGLinOzNP5J2qXrppssG8X8+fmR41MrF86qGxuJD6AAPD8OdbKjXViazOKLc6JGXgW+MVJtl3/v34yH78amrgVyyKDcStevvVzMBGjBExsBEHaQPxz/1GLSIZ79O93/9Lf30nyfFWXIywwMH46G+2OjEDiWcWDcTP/tozl9wsMzC95J11R4mBH5F8YR8su6lo4FuIrymJX5sc/nu9Fv/E2Y/JGpjv+R2vrCLOKcUfuCqugcnfX8Rve6ZHYRm4j/eux1bYxNWJIljfwE/ig7EN/IffImxgEYA6Bu7TZU5LDQxvaqDAJ/6VU7mugR/YsY8KA7+kDdwXAZUz8GfkA97SN41ufom9HcfA/c+QcCzR7ZjL+/xiuJl4PeD6BoYvMdF/MB0frTE+9Zqdfd0X15ilDfxXpk403Pp4+8DtL4ty/hKXhv+9UXHSb0YNWB02QcAKBoKBYCAYCAaCgWDgwA3s+4reACAACAIAAoAAIAAIAgACgAAgAAgCAAKAACAAODpxdx4AWFN8rdaaI98eQNdKd0TZFHegBgCZkqyKMV89b7H9Ch5X6dJfqDDqHwDMxURocmAtmzY5TOLlCw6rucRav98MwBl3LU4U/XecZwtogA9kCLFCbbrkUbqcz+rhcH/Fz5FaZvXbABigRXGVuRTRyelxG3Mwxc8IAUBacPhy/E5p8X16dqbO6pAuOARxIKPmoFZDfrjUwVlVMkn/oGQFTrP+Y0YLIDpULjR43F4gfGgE32gB9JDoWo31C++YATQeBBfP1Rs/apQAcjdOaLJ28zcCsLr4Rg1gU83DRgggEvF8S1VPGx2A7rSrwjtOAM1Vt/iNDUDt2DF+IwMQOV3jNyoA/YkQfjoAyImenyrxmygn4IgAFGi8PSLxlYq/G4DmQmx3KtUEHAmAARLbhgIA5JTekwh+9zF+OwCwAN9BKHV1aIWAgwfQE4QvK8AaAEg0PMT3cLvnrvz4XQEMkEjaj945JgQAk6BZfOdKYmsgGwAMgxmaHB1JWbRFwIEBuMT3VqpBQPf7AhitT7hx6gpqjYD9B9COBkA+Oo3kgFqqgvsMYLw913TjqJAWCdg/AINoIOT9s6NQHlrEr08AXqpXdH90lMsJtdQI6ROAl/L67LQkbRbgPgDoXoc8tiPZuDZzjAC6aOq0LIt2CXhLAA10dFqXDVK6iVt/ADQmThdyxc8MxwSgJ5ZCbi4r1HIBvgmA+tTpSKbt49c9gNqmK/iw3a2XowFQpPdRtftrJwtzGwCRQnrxgsd5083f+wvgequyePLi5gMxK2RMACK17o1XbxThG0cRdu/V4seOI+cXYFFRzOEDqDTyizA5cPBjy9AB1KvbHdvtarWaR3L592m7rQpPpPBrsQx3AaDN8VeHByQs04fVFu/g3ZbGzR1SsHUAbVZpe0JNpSRv1S2CLQHontNFHYop5gVSIKXtjk4RVAOgv4wXdLgUs+1JZIBFutEap5fsuqIGVw48/MzibnH8PeJ6AqAhOk5gU7YJN//bMNBc8dIu1/4Btux6CKBoUnRVtjOuDNddHT1w6OcT/QQFsfrIwFm8FMs2lkP54G5FY3tMtGCPXGMFy7YZsdEwz72OAy8uy1hbLm/kxTzfQlyBzArld9Fin2V3tfAZMfNU2ww8VT0ShfrjvvVsQQcABuihrDtMXXdOQMUvpzar1+4ALARlm0k7flsnMwjpM7wwHDaAzIBh3cJAKHzwwua6Z++tZTADLNdZ8T3dd5DlGx+ACD2eVpNaoTgAGHUkYy0yr1emDYSB3tIwLK+PlsEitAAgAAgAAoB9Fe227VxlAAq+hKU6tG3SWOMmptds0wtiqwPQFaOBpXxBhyYtjvI+Ab8aQEEMRQA0hAqS3UJxa5DNYWS53DW3k8kiUx/BUrgnSgRAIV026pe/4ptjMyC0irkjXeyFxAFEAvj1IDtSDWBurV4GYIKgrgBAS2Cmj13d++q7rpAz81zBSsMtVVhhjU2aywIwFKKgAIBXr6GVVjN8AA1m95iLX57dS20MwFbps6sE0lVXvj1hLwvAs0oALbcMweSkz6wxNV79xgBQozN9jFcI2NVqIA1giHd1sQAUq8GqAUxftATB7BSj742x00RaeOwigMXIoYCCx+grMFMIZQHEESoCmGit7g+tBjCzi4ugS5S/IvuK93iFEs8ZfUFr5PW0mEUXIgDgLv/iJICWxHiaagCvGHAQ9K+Pspivy64pmACa5TWBXzLadFkDQOwaViAtNjdCDEA7L3waF7/k0jVp3k4suORgTRwNSjEJlAMoNgylEkCcVnbRy+H4kUYbFf2aRQBtgWtKwqTGAKbGBu5uKT4qrhJAQksBQdJqXeJ9yaYf52L8sFdVrDRFABIusrJ9LwSgEXIQpEqVi1dclW5EEkCrCpGdLIB+OYBFt1AHQI8K7ggEA1YtqeHhY5cAurXCmHMJgOklVhMAC5kYDMGiV+c6RN6nkQDQrRoiKRsHmtglPACtSjVVABYVXBFk1IpL7IhWEcgjSQArIZGsRJZVTTkixm0E4DpkIsjQ7eOBWvmzTWkAK9qmkmGMQDIhu2rZAECm44kPzpgW4geDsny8hqQBTPcmFMy5lQNIPZ4HYPNKhK2A39RhvATi0k8WwLT9ovEBEQMwyw6dw3IANZFIsBaAGYKcE2eKM1QZSKIHzZUH8PpOZ0bAZlZVIu7OnPE6PEgAXTuPpKv2mysH0OPV4tyYgqZI3kbSDGtpYKnFWgDi6THdsAwNyzEyAOTKklempCdGlAPI706yOMcZr7xkJe9qA8hKMRq8MIaJnV+SdW8jmaBG7IR8hqqe48CK241aG0NhpQSGdgCAACBf9pEo0PP360YAvu1pGSKAX21aPi4AY6i+mGrebgfg13CK8Ff39jYE8Gf8ih/04c+Pi2S/RD9/EqfTI39fo5t/MdS+p1rZAP56iSn1lzp8URrf9449m2dB7Bj/i65+/R2GzKv/vvGsUwYgv2y/4UeKBajcL7yWniVO/eOdqSzCn/jVrxLWqQMwec+vqzFvsgC+RK//UrAxOfk3R7L43v+u133W9IGJAbmb/ydqXcNK5IMqZZn9H9EvP+UAxJ3AX+rcX54PfIuE7yBFAdzT9u0FrVMIIPlYyggJAOl3JooUhwD/viI/VR/AL5K81Oky6xQWYZJzb0oB/CgBsNRBCQL4Qd655//aMoBvLTGQD+CP6MCPpkW4NwCSRfiFcpD1AeS6p/jAuxof+EKEYr87BzB5zp/4xz/0u+AH9nIA/sVOcqpo3sn05vdqAD+xe18xUncKYPoGmbyU1j7iAIb/yuKwz4ogTTgOJLV8hrcA8NIkuFrwmwvvD8kifOVvdMlHEYyP68mfrEbQqyCA2Dd++ReGbQEIAglVABAABABBAEAAEAAEAEEAQAAQAAQAQQBAxQD+D6SR3AGHGjIQIAAAAUAAEAAEAQABQAAQAAQBAAFAABAABAEAAUAAEAAEAQABQAAQAAQBAAFAABAABAEAAUAAsMfi2S4AWF+sRttk3wF8zXbjvgP0JPa+AACvXu+cLOCI5gCghPg7g1g+dLLJd2sHACvknKzg+7Dabp1ckONMAEAB6kXEW5wcWtDpguACAKyC74LOo8MQdECnefTDZjEBALlyKbtbFnzO/Wa+QYdVgiUAyKtvEdow4XNW8+f75weUkrFyyfJvCqCJphhmx9VF0p8v7u/y33GeAegBgAzR0VMOX1rfXitg5Cy26W8PtTemHTeAGspr3ucsXEkd4PZpdYFw2rAEjxtAHeX0O12j56QwTy/orTaPh/i3Rf2dke++CX7OtcGxTQvwYhuX4hTcNQBYkB1yGAAmZXa7iLCbpgA22Zp7vAD6CG95HFP8skrXOTw6m+fEBU6abG0+XgDp6PlpkrdHTvfOBcnkTzP8xgug9uDwZXWKCu/lz6opfqMF0EJOuRxjADcn1Ay/0QJYhV9WrpviN1YA0bMQfhP+vvHfG8DdRAS+LXe/7G8PoFABvke1MwhjB3C2qYbvhJoX37EC6AkQcKWi+I4VQHTqqPiOFEDroRK/iq2PvzmASAg/VU8bH4Cz5y7xGx+AfiUBpxf8fACwdg3yhBqkT8cP4G7eaQEeH4BCBdgFAHmiPws0QFQScGQABkIEtAHA+m0Q1QQcF4DVbZC5ohTCSAEUa4PYACBHtGMVfhvlJXhMANpzIQICgPULcBzDGAAgpwBXZwHjOQ1nAJAp60fnFiV4NAD6Av1wzwBgEweYjVAFAJn4HR3BEmwCgKwcwkZwGIfaTMxoADQfHFECqi7BowDQvncAwCb4CQ2EibvSAcD6+KUEXAKAtP8TxC8F0AUAqfp3KojfYzsleOgAooUjRUAAkJCz4EBUAJCTfxEYhkVG0errkAEDaKG548gS0AUAs+AFSdCvxRI8UABdhM8DFpANAEjCt3DkJJ1rPQMA48L76MhKSsAzALjkriFRJofWSvCwADwjND06NeQeAAxDf4bQyqknqK0ocDAAejpC96ea8F3XS/C+KYC2htBk69SXRXsluPcA+stonYOD00jQdwVwjVCdmIUHoPmtAIxX51wcHQWSJhJUzU0aAIA7TRl4bZfg/gEYrzT5eHIUyjcCMHJ6D0dHrWSJhN3YAdwh2RxLDwjYGwADvR30vgmAZ/kElXQdrI8XwDWaHJzWBLXYjusFgAZ6cFqUU7sl+OYAzmpnWCQzWeME0KiTHa1Xgu0RAmi1Ve8Wx2S1RsAbAui3V/GyVv4cHYD6pAP48r0a7JEBGEiMauk1AW8E4LoT+uVBdBsdwrcEUJt3g19OwGBUALYfuzjXBd7bLsE3ADBAB6drAq5HBKCHnM7xa7EEdw5gh/itUAcluGsAg+7wO6ExAtgdfg4aI4BIXWdRVc/JdIwALrfK8HvmcXlDjuYYFYDeXGUB5Z0g28CjAlChA1zwADwhfEDluADUTioJyGHz9JGB3zgAtBXm7jfcsZaIhd84AERqQ5QtZ2WYgv8bC4Aq8TsingtE6LBAowRQf1IcI/OXJholgKLTyoUJiCpbH7ichw6g2hQCtjuXGAFVLzjWOYBB9bo4h+1qtXqYX+Th8sO2rMkyR7w6BHFl4ACWjD44ruaoRCbz1ZY55L6y+TsmABFnXZenKRKWC5BHfKiGHAFbGlzZDYABYlUgh3vURB7kCDjkbs0ZA79TM/QQc7L1qfQGf5gArlnzPA6oucgV4AEO7XAtI7H7iRnENRVGCd5W3LLrP4BX0BK5Xzzzp45jIZppWe5FdpZl6M0J6HPvCfoMYDwz5lJTlgdwVKSrc9oHvr3UpAGcZwXV7hhBBQDaohNj8FK2rlTr7wweFBuH4xiCsAxBq5cAesKzAfPSO5Mgg2tqAgTEx7D5nVYkTQEUXjztOlCq1qTJwMZwXHC+zXVC+rLDMtwQwOVEIgGgYs6pu2MQMFmZDd+lwewskGkGoCs4UGilLi3CWPHpwALII6t0raVpIg0BPEft/dVmG0v1IAsVO3kUCXjiEuwSWEUF37Baa4co8IH5Rz5UjdJT8RpG0QO2PgCr5TAmsAzDsM4GJ2d6UDrMOygSsNWJXN21REzOsJeJ2hisEAOeboyfKgA5ayHOFTdEbZqAp5YnMXQEoFfeRaGuHU/nsZ5vzT81AJqsLo/DRP1iIxqVhpnfHj8VAOoPzME/6rNIdAzdfqdvJwAu6R6j4xW9mdr4CxFMX6mLLW8LIHrOYujtdrXIOyZ01SWLyKMe28ywdAwgqyO7haEAS7wAT9Btw2eVAPr2+pq40y4RdUvv5OU18GnSF/qFA1qA8dq9sml/AuEYAdSS3tHnSb/gGwyAUQSznXcyWmicAJJ1lN0jy+4Gh5/VL9OGBeDs3DvTBlKELcMwz720bFx7rAOAACAACAIAAoAAIAAIMhYAAwCwgbh9yxzUBNBGgu0tpJh9DTbTs1gdDZZb1djOumJ9pQAuBYcFqe5hnDXot7R4o1RnngCAEstO3wkBgwRtVgsgagNA9tZKgpfVB9BXh7O4aC0ByMCm/phqQQCRmMlqu4L9BhlUq2KihC8CIFIIoC90leJs8br+GvhWsfoh503sigDi1aawIxQFsPJj2K309ZzrBjEWp/4+s0e7F17RFe24FwDwLDQ+tw8DfQQAxFyrWcqRQJCCAgCaItjYwwEwGuRAd+4xjDfFXkgAQE1kiDgaEIAMa1nGKwNQZI6CPSwAM1J0CmCpQxXY9SSa0yrUABZtul30+XUBDKlCzAXQVQigVk1AThzjY/HD1XVbkWRYRD/7eeWX+m4/Osx6hbPGGKZAXFwFIFXpdQJgCQVLx6y4VHSqFW3OXtckI1iX/U3oiXAmIxCtBHBHoN9mEY6jGLeUgslZzgN5LSkGgBZFZCaALkOhKw8gScE2AYy/d1hKweQk84Hs6c8aE0CfbkKxANS5jVtJAN0KANeqAIyZFZZRMD2nMx54LW2zXYS+i5XRIoDJVPbAu87HZgB4dX7LGB1bzxtdkgCGONcZYAmuWnYn5gLDMgqmpyxeMErakVYoRQC1wicqApjipwWFlIMuDSAeKRcBFA3LxAA0whIKZmXBLcQxNnN9hKSsawUAiwYXAJwxc9RJW9OSBTAsAXAnPL9UDEArLKHg9VH06wa82FCnnZ3FjsNpANeoqqJSAqCrSwxFFAPQDfkUzJ0xHcfwgx+dDaBZDmDAL1b1AfT4+UChTFAlgOerzRw4cq5Tr2eVtE00JoBhOYBlbqkOgEaeF6y/RkUlgObVaJtJQR+RCFPvtBRqzlvsgfckgH5ZY9GrASDmNVkAmmoA1ChHEXAJSAG4K63GbAaA53IAtdIE3UweQDf3OfVXDr0TcYEo5FIQI2CyXAt5oy3WELDYYJMAVsQVLQAo0skjBKAeloebPgawJ/i+a1kAzxXTa5oDeM3yWLp4RSIEoIWXuxmPgMkvFm6dLkZtIQD1CkbsVAFIxPuVCAoB6HJZRYabuN9YC+WT8NedlQNY2TKoV4mYXOWaUGVcBaBLaKYp6PPzurrI+xIAGl0DSIcxnGi1GYDr0r4DqmFVlSAqml8MKDoEkBtAkDW73wjAGaPHeUY2DcJBA1iqXGBRgbtQ+CHF3zXKSqMRgOeOAfSrARTICcoCiFOwkELFra58tMZI6XcKoI7FCTzlagA0OCppAhIvbEhXIl0DiEfKpQAGTQHchUwKBuwspIFdt+sQQF8SQEvEY1f3zN0JRDE++8W1onKJWsSXBdCq+CLLOp1KpgiAXgMA10XFGQUDXsNODEBdFkDFbeFZZb+wEh8443f3MQhIPM8oz2egegD6pWVFHMAdmW7hAOU1BpClYJdQkHVKF/mqeFNTBkCrVKFcPtATGBsTCvUs1QAwOThjtbQJs7WSp/tIHsCwLM25lALQpjsL2aaeBdYMFwDQYNdf1Tn4kiGKqA6AJX0ErlRKf1kYwMt8m0BBW5jdxOInywjATS5lUC0AQ26S05PpVHIZn5/bJ1iZ2b+rjmLckEfBqiLPGanto5oAhpzvZkl0a66ZxYcxxFdwksWdbBRT9iLsbA1ddSYFyKsDoMccaKflQx1KAHSp7Tr4dvt4SrpZRnrGUWGJxk3FdcTNrBzWAfBaVvVr88qf4YNtrCIphfqL6u+hcSdfCWcnbJEbiJ1XDLyzphaAubeL5g6aBk4UGQD9UAzAMGwJQItzfFlAQufZVQ9A9rvqoRSALr9Wk95GqBpAjXPG5gb4Fq/KIDx9XQAZ2HihOIDariyskl/irBxAI1rlnd0UYjfS/OgOOvL0NFaHf3RlpsSOfi6GJ1502ObGwdSLEhfHGkmx+NOFQ/pS8QlSHc1Y99axr9eVTaY7J3W5cfP57LDoBAAIAAKAACDIOAH82l/kQ4WivzcC8K0gQwTwd6TmNgDuCzJEAGPDvwBAAfmIhP0WnwCgKNeKjujGRfgLlyECGP56e/t3QwAHVAvfwF4A8KYA/nmNLnj7U+bMPwuO/W965Fd8M6Nw/X65nHj9ywHw73/R4ZdfjIfG9l7+JWuMT2bVEv6KnrJ/L6ivsk4dgF953fKHf1/Rhcf3hZ/Zva+U2n/ZiRcWgH/zh/7k1nhv1ZXI+/Xil1DGOoUAvuO18y9ZALG7/2PjlwoJ4E/81Gt9AIlH/BO3TiGAH+R7/pYEkBsb7csA/EOe+6wL4AvfgC+5yK0+gDkHXgqXCQEYvf1ngb4Jxd6zFhgFYF503/c8XgnEgR/Xx34VSnGpdbUA/MgFO/UD88Cv9FcXARD7+Qen2cAG8AcfLFEA8YIb//yXtu4f27qmLRGerWUnOQB+sm/9h//+uwBglM/4xFj0pxaAv3HfRoNUZp1CAL+IavA/yhULAPjFNvED96elceAXI0UgCOAP4gDrzb5aB/Cd+PUP9ab1ASTejQfgVxTZvdcHkLzstW0AmT6QeirlBOsDuK8E8BX/oioA/GgbQJEznQH4ThYJAFASwBS/H5e65HXYAL4V3/u/DgDEaPelCsD3mwD4QdS7X1SzoD6Ab6UA/sTuVAbg/iYA/iUyGT/k40COiZ/4pygA+IJd3ADA1x4AKB5I/5ACkPj9gwawcLIegH/w2PmTcj9dAfiGtSFfmC/6J7dPFsB3LHPwQVPnF3ayHoB4e/EffU9XAIbXJMzvYtLiPXv13y97SQDT1v1X+OetmEz4zOD988IMY2K2//j686sCwOQhP/5mlr7dAkAqs/RPtBFdZeJLWTqrNNcV5mnQqnTWa0U6qwsASQT/cJOF75IAYiC9FjD6R5185bQ9KxOqrzU/r9o+kStZihmfX1dkv6RNfLvSi0GyPXFyz+kOqE7pf/FYrBTASvl9aRL895t76mfNQT2/Lvf+5p38KDsZP/ZDrBc4UvTRdNgRDG8DAAFAABAABAEAAUAAEAAEAQABQAAQAAQBAAFAABAABAEAAUAAEAAEAQABQAAQAAQBAAFAAHC0AP4fYAACBAQBAoKAAAFBgIAgIEBAECAgCAgQEAQICAICBAQBAoKAAAFBgIAgIEBAECAgCAgQEAQICAICBAQBAoKAAAFBgIAgIEBAECAgCAgQEAQICAICBAQBAoKAAAFBgIAgIEBAEFL8tYZimVkBEBCkW7FnCBc9AAKCdOT4bAMVRQuAgCCtine2WMzLxAICgqjzcq67syzTMGZFpi22jnNfPGwAAUEace7i4DSuf7ufzxerzcG5yPZCQGcKBARRJedlRqLp4ml7ckrlEd2fIh4eJkBAkOZuz0wd3NPBEZENmhye0Nw5Rr+cnuYQA4LUlsBKvN7GEZWL13s+TdF2hVbPW+x4rMcFAoJIsC+udqdbR0Ie0MJZXf6fo+cFwu7cxgQMgYAgorKLW7MnGfZdaDY9nSaT42k6ORL8uxCz4xoYCDhs56df+PLAZN/mIW9aUEHhHG2cJ7RyjmjqkPx7jnvjQiAgiIh4Gro0JFgBHpXbI2rnw8X9XTh4uPBvfqmGn7FTx/hqHwgIIki/+YndvqAEJ+kKPTqnyfTS8L3w7/nySy6nSdctECDgoCvfBTPAWxT7O4ggbxu7PseZTpP/qQaIFwIBQSrF5NHPeSzw74EI/44XRzePrztcHOCGIu4sCIGAIFVyRuie0+490PQjgsSIf4nbO0aV7wOi7rO7fxcg4BBr3wm/s+OEu0AqM72IosFVHBI+xlScE2GjeYu3AQIO0P09ObVkE98YB4BOXA2ntfMN6QcEHJwY3Nq3Uo7HuKlxjGvcVUTAVdwsviH9gIBDy73Udn80GWPX5xymt4r9gIBDFAtNTo4yOSUjYDT3lq8EBByQ6ERKpSH7Hm8xBQkIOGDxNaLfrJGs0ulH9s3fCgg4nNavqur3KU3SmEEPXgsIOBBZo7kS9m3TnmLd68d7AQGHkn1ZqQj8HnpT9QIBhySBhrbN6ZcNk9GDHr0aEHAIzQ80OTam3yaL/Pr1bkDAITQ/pmOlHxBwAGI1b370svIFAg5Dls2bH9mc33MPXw8I2HPRG2efsyGCsyAEAoJIN3+PiqI/o59vCATss7jRDDYlnW595R8QsM+ya978yPinh0BAEEkxmzc/NrdY9BQIOA6ZNe/9eEY9bv8CAXstvoLBL0fU1/QzEPAbhH/pSgeRBEBAEClZqpj6cX+LBSeBgGOofjUFgw+wNTpCICBIx9Vv3gDutwMEAvZPdCVTP475+ggBEBBEWM71J54Tkm++YIZAQBBx97dRQT98kTYXCAgiKDa6VzPxbYPtPRgCAUEEG7/ooIZ/J2yFrB0QEERIDN6akw0ygD3PwQAB+yOmosYHPvO8/00QIGBvgr/JQRX98AxM35sgQMDx0Y/c/nIWAgFBqipfpfQjlym3gIAgZRIYiulHLVMeAAFB+OJqCpsejAq4tzNBgID9cH5KVhzit4D7PBIaCHhj9i0Ruj8opx/ZAu5/EwQIeBPxL75v8uy0IeQ2hRYQEISWXbTH5cZpR8gKuP9NECBgx40OQ3pv89p9wBdZh0BAEIJ8k9XJaVEeSAL6QECQWM5GvG3q0WlXnkn+mSEQEMS3tPY9HysFOIgIEAjYaqplN4sd39bpRqitgq0QCPhtxVtr8V7Rz053cqR2Cg6BgN+yyt3pqFO/x2uB7ICA362Zu54lu0Q/Hp0bCNUC0UIg4Lepb63E6aHJ4tm5mUxIAtpAwPE3Ms6pz7sEe09H57ZCtUBmIRBwxJWtZaTfebrY3Jp57BbIGQgIxLthC0QPgYBjatnaSy35sPePzyenh7KhHKALBBxH82JnZB6vn8RjD0IYwEBoIGBVbWtqaU5l6/RfqAoYeUDAIbu9hHv3T0dnIEJXwGYIBBxosBf3oE0fD86QhG4BD2MUAhCQSurFIwfuNydncEINghnIKAQgIB7wRX5viNyjlgIcVCccEDAWO5og9Hh0Bit0ADicHDQQ0NUjx+cMWg40/5YhEHAQ7Y3l8MnHyAAOqwXybQl4nnU0SL51/k1o/tkhELDnYmnofuuMQ6YDr4C/HwF3Gno4Oc5Y+acFQMA+17yjYh+DfwMahPD9CBjoaHoYEfsY8d+wUtDfi4A2UrcGfU864Ir8M0MgYD+dn9HWYlS3k22BfsMZhv/NCOi1sAzpzWVV5N/AukC+CwEv9Fs4o5N7NBIHOHYC+pqizf/63f021BbI6Amot7AIc/+Gvww2BTN2Au7Qwwjpd5iw+YdCIGC/mr7apI+DrDboSTLdR14/RwgIOAz318faN0reSfZDz+fYL08IAQGH0e0x6WPmJZ69IRvwPZXl/oCAvRQXPTp95d9UMt83rQz+gIB9kyXqZadv0nm7kIsYsxq7in6DG4k6XgL62n2fs8cyecnnrMZ+rqQfpGH6IlZfc39p+k4iNt2mIeMTEhFIREPyRYB/c9nxBo9zJCYGEPD2Ysp84Jt0X2wk+SchPhDwxuIh1NdRV9flg9rj3zDr4BERMNBRT1sf2ODlVXv8G2YiZjwENBq4v9P2ebWaz6dCn3kynz+sVpvt9iRb/Uo0QZ5r8G+QLnAsBFzLD7k/Pq/mE6RGphdObrbHysErog5wU88MHwh4G9khiUHPx82DKt6VyTwWynm2y78hjkkdAQHtaAdooa6Pw+MU3VQEm8Cr2g8wgYDddnpY8UYd99X0Oy4m6Oby0Db/BsjAQRIwcHemnkFevQvvYY76ISe5jE0tMYCASpnmujvLsgzD0AtQ3z8KLCl5WqDeiFgFTEQJmi79FM0DAjZIJduWMWMH9A+rOPchM87luSzk0wxr55Y3G33XtSyTZVAdEWqlH+kdL8/yD9Jhjega0Vyy7dpkvnraqhlLxYukZua59gdyz9bSqMk/oST5E2O7I7sGBT0goEwz9sK9udIVmk/MOEozlY5Ycm1rKV5DCo3QvmdXpa423ozMzQm4u9RNakfPH1ltjmXLo+UiNpb6xqNk7xvVq2FpI22L3JaAUfet2tFTrBav2XkHgXfho2kYcvybV4RxrnjlbwwnCrwpAdeKR68c7ntAvkIhi3zXVq7zgxvC+bvqFpExqA65WxJwpnRHrG2BfbM+DFL3kQj/iLXWKscU+Laps9tXNqyQKuUcLE4hll7CeVtIuFj9+BSeSP17uh/kVr/jaIQEu2Jhlpu56GzoXjajN/Nzoixe5RyBxaAXeR5bT4gpNW3COT3SuZZdj14m8vDTkwT9vDAEAt4yYNJlxlUVwj7N6pf/MConIRGV7zBXmBwPAYNLo3giPGdnS+Wa9d59vbj5+yi80NU39H69IuDuwj7BdaNOT9N+e75r+FeaZVohoF9fCBjogquInzZ0sqWX5Auj5UFKu9/IZrsehCEQ8Jb0E/B92+Jw5mVvgyZfKwv/qIS5HX5j6QEB3fKRmtunRXFU1Wzd6yrLKhn+R7WcjCAMgYA3FblBHgNI9gczXvV7WpEpy5kXfnfpAQEFhjTpS+s8mG8Vj99jtH430x72FAIBizXyRfwBIxqXJ2pM7aEwJcrwgXs9JeCw5UyvgPVcnI43swEnIGA7YuRDKQ5PrIGxQD4gYHvixcOWeUvMaCY0OYCArSdf2I2oHYR8QMBOqt9CrhyoBwTsqgLWyXwlMA8ICAIEBAEBAoIAAUFAgIAgQEAQECAgCBAQBAQICAIEHK4E8Qrpmgk9Hn0goGeo3aYnMJb9Bs69zawi2+CKaUVydl1PsfKL4p3r9ZyAltodAqJJ3f2fdnSDBYUsuaV65Xqkq5WrnwymioCG0j0q4kUFer3zGfVh7H4SMKON5atUPjv3j4CB0l1SYv71e5VZ6pvsek1A0SXDxJVrbs8IaKvcpyfQ+r/7qEl+j7D/BBRYOUxKud0rAi5V7hSVrULb62mL1m3WlMwfS6LjR5MJo0191kbpvialrsviLNIa7ZfCWJPV6xEBNYV7lV3xW/e8Hayni9PchvfVxdPbLTWp7eSsqlWCfVP5/sRqCOgq3C1vNuTNR3tFwDSgsWaiFLQEqBXoakNfNQS01O3XOFPt4787ARMSCu2tbgn5Nk/pDtlqCGgo2zF0NvQt6HtJQEazyatNwGTh/3TOVU8ISBavtSL+DW7r0V4TkN7xy6pNQLzC6wcBz0IOXpp//U7EDI+AZO3JKN6iBMRCfrcXBDSRGgYWomXJ1wvO5GavhrlrGkaes4akrqQTytuZeLgyMyy3SwKS0fqsLgHDvhGw2NivxcBipkm8MneXJV1Hu4Bdfqs+rlWWfHXlXtYv226QGlFj8DU3JWCydiuHgTU8YNAHAub2GE0YmN+sySViPEOq/1KUgAW/Trb5JAgYiOx1uQ46ISBRzvWmMWDzFLwKAlp5VNGAgditrkQixhPesjdbjlSMgMWdymdBWIuAa+HeLasTAuI5i3XDVrDdCwIaWF6yNgOJG4WVSHaN2sIELDrVJdfvlybNZlIGJsvlt0xA3Ad68gRUmoVRQkCiiqrJQPI2QywRY1YPO/LWM3rYigABba1QMXphDQJ6dNVrFkYyBbZRoGDbBAw0dh0qREBT7a7sCgh4Ju2pxUCDTGNbIomYtfDKjzZOQleAgCK7x1QTkKLfmh+w+0sikd82AfH4wpUiYLBUnaZVQECTCihqMJDiH5avcoVSWlplLHLWik2cKgKKNgUtgUb9sqq5GGCOUGubgOGSWYuWE5Bux6sZj6WAgBq91540A41CN17liBi8JOpCPZJBsbVSTkAvbEJAV/5b7QSyWYoI6DJBKBIwGuNlWUtdZkxN1wRk1GiSDFwW38osDzOwIEZil7VgJkNAP2xCQKtWUtTsioCYe3ZrNOnUDYhWQECLERJIMdBklKpzqR/Ck6lSI4LO4gQ8h00IaNbcB45y0+0RkFnbChJwHSqU5gRkRswzcQaaTK9edj/m/2Q3GA80QQKuwyYENOsPmbO6IeCZFQRKJLWUbUrfnIBsRIQZyOZfaSJGb5IHmIkRMGxCQLtJX6ndCQFdVltWMqtq9YKAZ843m4lF4Bz+lSVids3yUDMRAlpNCBg02wPdGgoBRbIP7RPQ5LkqIQby+IcB5HJdbr3xuJ4IAd0mBFw3jJaWtycgpwC665nqyXGNCcjPWQkw0OS36rkfcde0CjAFCBg2IWDT2Zpep40QGQImL26IZ+vbJ2DZuIFKBpbwLw8CZ9ykYdD0+4p8FHkCuo2DJKN9AprlreAKy8kRIOtbEtAqK+0VDDTLPrjFY3bzniCtkoBmEwI254jVPgG18jxg9QgzXVGfXFMCGqXfrJSB5Q6HWw81b4QZlQS01BCwcbXSGgHPgj0hYrF0k26RpgSsaO+VMLCqwptxTgMBFRBQZ9afcgDgOVX3VgR0qwIyLgMrAy5eW6F5sasmoHtbAtptE3DHHlMvR0DcBxq3IuC60gIOA6sD/jPHuRqNh4Ojdgm4a8yRdcsE9DmZRkkC4h0+tyLgrNpiJgNFGpyVKeqan+DcMgH9xj665eFYAW9SiCwBVUzPbEZAT8QABgOFEh4Gu4HtNR0QrrdMQCxRVG/lCrvdPCA+lCMYOAHFwp0CA8USbjysl82y8DvUNgHdZpPGsOC+DQK6/CGPsgS0b14FC87doBgomPDlfWG/UblzUesELE2wy3joNgi4LJn3L0vAmYLpmc0IKGowwUBbtO3Eu67JYBMXdUBALM27rF+o2yCgXTrkVpKADQadKSKgK4oGVqvYwvzDPgUXKNlk4A51QsCAO5tYJrmmnIDELCnGUEo5Ai6VTI9rRMC1cK97wFgaoNJqi5vltup9YHpaSGsEJN7Xrl1A1BJwVzmnQ4aABJn9GxFwJl7RFBlYXWo8PlpunX4gU3hSUmMCEpGc8HiRwjRidQS0NYEhLOIEJEcjNMmJNyGgJ1PIaQaKeG2N72GJCUaGgBcMiku9tEpAYnSn0CQeW2SNpzoEtA3BQXyCBAzIGdlaowWKmhDQknLBJANnci7LrYintYqhx/i04F03BKQm4VVMDManBVuqhmO57FXK7f9v79x2G4WBMHyxqiJFK62iStFGXoFcRPAGFoJ5/3fbkCoNTjw+gDmU/P9lC8EePo/H9tjYXyi5Mf1j9xZ2f+YQAD0Xxc5vvlHrh9kgD4fO7olXrJxNdel7jhMB+NSlkht5lJMbdo75gFvdZ93sp3CZ4oEeHyHZDj2fbQiAvkPRs+exa53BpDVh4fbD7x8db/zvz27zbP3pANREdT9+dc/MPB/3W40/cQKwjyxfqvH+8d3g4wGHAHj0DkduBG68fewPh77VtbVOCaDat7ru8RkHQPtOSs8vIc79oZp3/3WYTwLdZ432LtvL3My2OT6TMwWAzdcXbdz3ewcHcPv7n5+5rU1lf27CaACAmx7JYC2Bmz5O1hzqHi1uRjkCd3IAG/sZqerZXqEA3P7cf4T9XOulpLs/odgbPg+4LD0P0K4xV1h7DdHfvc4Vbt5f+pPrKwKw86aPx+Oiv7J0bk+dOjfQSgGEACAEAUAIAEIQABxF5eEmAWMAwJcHsIzaokTFCwHID3YBwIkU3QrDACAAnLMw3y0gAICLBfD+gNJ6bX03eQUAAeDkADYy/rw0lq/YBZfNC2pZAL7iKBgAAsDvD2BVtqrnqPr10V4Rk7wWti+A15tLuRAAP+tSTWa75QGYRw/xIi9cn0f9gzu8zfaaOlUezBwIKtTSptIDwDJ5DI0Ts8WIgJq7GIfbwX4sTiSkW0vQ2O4g5LcEUOhNzPLRATw0qebB5tj9FuGrDLoBmDN9VU1PHBHAkihO2oxku0UCmBrGzfnYABIy1CGx3GoAMDfcxqcH0FQcmqMhtlsigJXi/jMhRNptlqyeAkCeiYwr3oB6rFSuilMhOHMFMO5WtLVSeep05RHZP1x1b6bp5x/yoQB2HTlLLr+YKa79FNx2iwQw1/r9bi9Xjgwglzq6Ejt/uT6GEHbXKbR/TcMNQhxs0KlJXGu7o9Ruu46flJHNdpMB6NMzFXcHICnHWI8JIFMfG1kmzWPq9XA7gF9XZASXkwLIqN+LLTXpbbtFAsjIDkjem9mYAJbUcKg0t5c02Dxg4UZWYABT+ue4uemTBTkFiAKnBtD0vnNzfcYBsHR9qAwGYDkHgLWho5XmTriv7RYJIDdF4I63TgkgPQT1ALA6Jcx/+BgWQKOnT4zJXMsH0OPxxjkFsxXnBVD0BLCI+s5fjAWg7z9XCqB4CQDTARNoAHAMAJnJUPHKAFTmfnI5awwIAO0xoFxgDBgNiAErYsZpFgCNIzxjZL4uAO92eE49yMxZvbMAmJEzFHYAOTGtNAuAjWGkW5mrsioAO5OX9LxGYulE5HQA1uSoyQ4gdcE8AGb0crtlQnldAJK7F+6+kdmcZ0qAOQKAnfemrtZXB3cAI8LfuAIoQgBILnh0luiKFwCwa392v7Fg1HqPZgDTWcuUmVu6SH8jdqY7E6kpLs1HqllFlsI9jcSen+HXC0S6IlexNRNpZQB2F7Gv7uEhuYQ7QOSfrzTAiLZsLNpBPVT0eTLanIKbeGzxcsqGydTkS66mOZKYrw3AS6tj5MtklVOnNCWAav6YVz6gjV1zOoxkgQHUZ9ZaEzHXB+AlEtRbIrEl1+omdvNyZAAfetxbRCgcQjSpWa/kkrsm0sWBAXzygl/e2a3drwfA9t3kqnkTt2NNaiV7Nc6bhz0LYxlRKW3aglO4jRGUArPrndXBFZdGsMAAtlVWm3F8sjT7pQIIQcMFACEACAFACAKAEACEIAAIAUAIAoAQAIQgAAgBQAgCgBAAhCAACAFACAKAEACEIAAIAUAIAoAQAIQgAAgBQAgCgBAAhCAACAFACAKA0PL0H45go6fiA5NSAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAABJRU5ErkJggg==" /> - -) + \ No newline at end of file diff --git a/src/icons/technologies/MongoDB.tsx b/static/img/technologies/mongodb.svg similarity index 94% rename from src/icons/technologies/MongoDB.tsx rename to static/img/technologies/mongodb.svg index fb9084221c..69b6564fd8 100644 --- a/src/icons/technologies/MongoDB.tsx +++ b/static/img/technologies/mongodb.svg @@ -1,6 +1,3 @@ -import * as React from 'react' - -export default () => ( @@ -29,5 +26,4 @@ export default () => ( - -) + \ No newline at end of file diff --git a/src/icons/technologies/MongoDBSimple.tsx b/static/img/technologies/mongodbsimple.svg similarity index 94% rename from src/icons/technologies/MongoDBSimple.tsx rename to static/img/technologies/mongodbsimple.svg index 046f0a56ad..ebe9937d6b 100644 --- a/src/icons/technologies/MongoDBSimple.tsx +++ b/static/img/technologies/mongodbsimple.svg @@ -1,6 +1,3 @@ -import React from 'react' - -export default () => ( ( d="M8.88795 2.83463C10.2488 4.2257 12.9549 6.99194 14.2726 12.7401C14.4458 13.7185 14.5366 14.7095 14.5443 15.7027C14.5707 17.8182 14.1477 19.9156 13.3025 21.8593C12.4573 23.803 11.2088 25.5497 9.63774 26.9864L9.59973 27.0207C9.26491 27.3281 8.91095 27.6145 8.53994 27.8782L8.48964 27.9113C8.18549 29.2608 7.95635 30.6257 7.80323 32H7.15372C7.00852 30.4623 6.81283 28.9884 6.7377 28.4225C6.71797 28.2739 6.70655 28.1879 6.70655 28.1798L6.61265 28.1147C5.77645 27.5157 -0.363168 22.8193 0.0169244 14.9414C0.424965 6.49106 5.43324 2.33828 6.41254 1.57911C7.04193 0.913875 7.06764 0.663029 7.11683 0C7.12357 0.01589 7.12983 0.0320177 7.1355 0.0466186C7.14205 0.0634952 7.14781 0.0783319 7.15261 0.0884039C7.15261 0.0884039 7.62996 1.26307 8.10619 1.92389C8.20443 2.13593 8.48813 2.42593 8.88795 2.83463ZM7.45109 12.6152C7.07659 12.6152 7.07659 23.6657 7.07659 23.6657C7.07659 24.5255 7.59977 26.8107 8.11178 26.8704C8.11178 26.8704 7.73839 12.6152 7.45109 12.6152Z" fill="#00684A" /> - -) + \ No newline at end of file diff --git a/src/icons/technologies/MSSQL.tsx b/static/img/technologies/mssql.svg similarity index 99% rename from src/icons/technologies/MSSQL.tsx rename to static/img/technologies/mssql.svg index dcd40b2d34..b6b81fb5ec 100644 --- a/src/icons/technologies/MSSQL.tsx +++ b/static/img/technologies/mssql.svg @@ -1,6 +1,3 @@ -import * as React from 'react' - -export default () => ( ( - -) + \ No newline at end of file diff --git a/src/icons/technologies/MySQL.tsx b/static/img/technologies/mysql.svg similarity index 98% rename from src/icons/technologies/MySQL.tsx rename to static/img/technologies/mysql.svg index 9a062e98e2..eef39d31a2 100644 --- a/src/icons/technologies/MySQL.tsx +++ b/static/img/technologies/mysql.svg @@ -1,6 +1,3 @@ -import * as React from 'react' - -export default () => ( ( transform="matrix(.13333 0 0 -.13333 3 21)" fill="#fff" /> - -) + \ No newline at end of file diff --git a/src/icons/technologies/MySQLSimple.tsx b/static/img/technologies/mysqlsimple.svg similarity index 99% rename from src/icons/technologies/MySQLSimple.tsx rename to static/img/technologies/mysqlsimple.svg index 9fcc87a680..953749db04 100644 --- a/src/icons/technologies/MySQLSimple.tsx +++ b/static/img/technologies/mysqlsimple.svg @@ -1,6 +1,3 @@ -import React from 'react' - -export default () => ( ( - -) + \ No newline at end of file diff --git a/static/img/technologies/nodejs.svg b/static/img/technologies/nodejs.svg new file mode 100644 index 0000000000..a650e25707 --- /dev/null +++ b/static/img/technologies/nodejs.svg @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/src/icons/technologies/PlanetScale.tsx b/static/img/technologies/planetscale.svg similarity index 72% rename from src/icons/technologies/PlanetScale.tsx rename to static/img/technologies/planetscale.svg index 564d87ab47..866cd7adff 100644 --- a/src/icons/technologies/PlanetScale.tsx +++ b/static/img/technologies/planetscale.svg @@ -1,6 +1,3 @@ -import * as React from 'react' - -export default () => ( ( > - -) + \ No newline at end of file diff --git a/src/icons/technologies/PlanetscaleDark.tsx b/static/img/technologies/planetscaledark.svg similarity index 89% rename from src/icons/technologies/PlanetscaleDark.tsx rename to static/img/technologies/planetscaledark.svg index 3e141201a8..e91b360fb3 100644 --- a/src/icons/technologies/PlanetscaleDark.tsx +++ b/static/img/technologies/planetscaledark.svg @@ -1,6 +1,3 @@ -import React from 'react' - -export default () => ( ( d="M29.207 16.0039L16.0039 29.207C23.2969 29.2031 29.2031 23.2969 29.207 16.0039Z" fill="#E2E8F0" /> - -) + \ No newline at end of file diff --git a/src/icons/technologies/PostgreSQL.tsx b/static/img/technologies/postgresql.svg similarity index 98% rename from src/icons/technologies/PostgreSQL.tsx rename to static/img/technologies/postgresql.svg index 0a9d605f1a..216d321828 100644 --- a/src/icons/technologies/PostgreSQL.tsx +++ b/static/img/technologies/postgresql.svg @@ -1,6 +1,3 @@ -import * as React from 'react' - -export default () => ( ( transform="translate(5.796 5.819)" fill="#fff" /> - -) + \ No newline at end of file diff --git a/src/icons/technologies/PostgresSQLDark.tsx b/static/img/technologies/postgresqldark.svg similarity index 99% rename from src/icons/technologies/PostgresSQLDark.tsx rename to static/img/technologies/postgresqldark.svg index 2a158bea06..120364907e 100644 --- a/src/icons/technologies/PostgresSQLDark.tsx +++ b/static/img/technologies/postgresqldark.svg @@ -1,6 +1,3 @@ -import React from 'react' - -export default () => ( ( /> - -) + \ No newline at end of file diff --git a/src/icons/technologies/PostgresSQLSimple.tsx b/static/img/technologies/postgresqlsimple.svg similarity index 99% rename from src/icons/technologies/PostgresSQLSimple.tsx rename to static/img/technologies/postgresqlsimple.svg index 63c072e02b..0fa5c685d9 100644 --- a/src/icons/technologies/PostgresSQLSimple.tsx +++ b/static/img/technologies/postgresqlsimple.svg @@ -1,6 +1,3 @@ -import React from 'react' - -export default () => ( ( d="M30.0001 19.4037C29.8627 18.987 29.4203 18.8528 28.6853 19.0051C26.5029 19.4567 25.7214 19.1438 25.4647 18.9543C27.161 16.3631 28.5565 13.2311 29.3093 10.3087C29.666 8.9244 29.863 7.63886 29.879 6.59107C29.8968 5.44083 29.7015 4.59575 29.2986 4.07947C27.6741 1.99814 25.29 0.881737 22.4039 0.851055C20.4199 0.828708 18.7436 1.33787 18.4186 1.481C17.7342 1.31035 16.9882 1.20558 16.176 1.19222C14.6865 1.16808 13.3991 1.52562 12.3331 2.25437C11.8701 2.08163 10.6735 1.66976 9.21027 1.43344C6.68033 1.02494 4.67 1.33442 3.23533 2.35353C1.52348 3.5696 0.73319 5.74334 0.886331 8.81425C0.937856 9.84752 1.52491 13.0259 2.4515 16.0698C3.67111 20.076 4.99678 22.344 6.39175 22.8105C6.55499 22.8651 6.74332 22.9033 6.95085 22.9033C7.45972 22.9033 8.08354 22.6733 8.73265 21.8909C9.8108 20.5903 10.8174 19.5005 11.1885 19.1045C11.7369 19.3997 12.3392 19.5645 12.9554 19.581C12.9565 19.5972 12.9581 19.6133 12.9595 19.6294C12.8359 19.7764 12.7345 19.9053 12.6481 20.0153C12.2212 20.5586 12.1324 20.6717 10.7582 20.9555C10.3673 21.0363 9.32902 21.2509 9.3139 21.9806C9.29734 22.7778 10.541 23.1126 10.6828 23.1481C11.1766 23.2721 11.6523 23.3332 12.106 23.3332C13.2094 23.3332 14.1804 22.9696 14.9564 22.266C14.9325 25.1082 15.0507 27.9089 15.391 28.7623C15.6697 29.4608 16.3507 31.168 18.5018 31.1679C18.8173 31.1679 19.1648 31.1311 19.547 31.049C21.7919 30.5663 22.7667 29.5715 23.1438 27.3782C23.3456 26.206 23.692 23.4069 23.8548 21.9055C24.1985 22.013 24.6411 22.0622 25.1195 22.0621C26.1174 22.0621 27.2687 21.8496 27.9907 21.5135C28.8018 21.1358 30.2656 20.2089 30.0001 19.4037ZM24.6541 9.25788C24.6466 9.70115 24.5858 10.1035 24.5213 10.5236C24.4519 10.9753 24.3801 11.4424 24.3621 12.0094C24.3442 12.5612 24.413 13.1349 24.4795 13.6896C24.6138 14.8101 24.7516 15.9637 24.218 17.102C24.1351 16.9544 24.0551 16.7933 23.9817 16.6148C23.9154 16.4537 23.7714 16.1948 23.5721 15.8364C22.7965 14.4417 20.9801 11.1757 21.91 9.84292C22.1869 9.44614 22.8897 9.03837 24.6541 9.25788ZM22.5155 1.74866C25.1013 1.80593 27.1468 2.77589 28.5951 4.63146C29.7058 6.05475 28.4827 12.531 24.9418 18.118C24.9068 18.0735 24.8712 18.0285 24.8344 17.9824C24.8197 17.9639 24.8047 17.9452 24.7896 17.9262C25.7046 16.411 25.5256 14.9119 25.3664 13.5827C25.301 13.0373 25.2392 12.5221 25.2549 12.0382C25.2712 11.5252 25.3388 11.0854 25.4042 10.66C25.4847 10.1357 25.5664 9.59337 25.5438 8.95394C25.5607 8.8869 25.5675 8.80764 25.5587 8.71358C25.5011 8.10038 24.8029 6.26543 23.3799 4.60437C22.6016 3.69599 21.4664 2.67932 19.9165 1.99361C20.5831 1.85508 21.4948 1.72588 22.5155 1.74866ZM8.04577 21.3182C7.33066 22.1803 6.83677 22.0151 6.67438 21.9609C5.61615 21.6069 4.38837 19.3644 3.30585 15.8083C2.36916 12.7313 1.82173 9.63713 1.77845 8.76949C1.64165 6.02551 2.30502 4.1131 3.75022 3.08544C6.10216 1.41303 9.96903 2.41403 11.5228 2.92176C11.5004 2.94382 11.4772 2.96451 11.4551 2.98693C8.90543 5.56887 8.96591 9.98016 8.97214 10.2498C8.97193 10.3538 8.9806 10.5011 8.99257 10.7037C9.03642 11.4456 9.11804 12.8265 8.89998 14.3904C8.69725 15.8436 9.14399 17.2659 10.1255 18.2927C10.2271 18.399 10.3331 18.4988 10.4427 18.5927C10.0058 19.0618 9.05634 20.0992 8.04577 21.3182ZM10.7704 17.673C9.97935 16.8454 9.62011 15.6942 9.78464 14.5144C10.015 12.8624 9.9299 11.4236 9.88425 10.6507C9.87787 10.5426 9.87221 10.4478 9.86884 10.373C10.2413 10.0419 11.9675 9.11446 13.1984 9.39728C13.7602 9.52633 14.1024 9.90982 14.2447 10.5696C14.9813 13.985 14.3423 15.4086 13.8288 16.5525C13.723 16.7882 13.623 17.011 13.5376 17.2415L13.4714 17.4196C13.3039 17.8701 13.148 18.2888 13.0514 18.6865C12.2105 18.684 11.3924 18.3238 10.7704 17.673ZM10.8995 22.2792C10.654 22.2177 10.4331 22.1108 10.3035 22.0222C10.4118 21.9712 10.6044 21.9017 10.9384 21.8328C12.555 21.499 12.8046 21.2635 13.3498 20.5694C13.4749 20.4103 13.6165 20.2299 13.8127 20.0102C13.8128 20.01 13.8129 20.01 13.813 20.0099C14.1053 19.6818 14.2389 19.7374 14.4814 19.8382C14.6779 19.9198 14.8692 20.1667 14.9468 20.4384C14.9835 20.5668 15.0248 20.8104 14.8898 20.9999C13.7509 22.5988 12.0914 22.5783 10.8995 22.2792ZM19.3597 30.1732C17.3821 30.5981 16.6819 29.5863 16.2204 28.4296C15.9226 27.6829 15.7763 24.3155 15.8801 20.597C15.8815 20.5475 15.8745 20.4997 15.8608 20.4548C15.849 20.3681 15.8308 20.2803 15.8056 20.192C15.6511 19.651 15.2748 19.1984 14.8233 19.0108C14.644 18.9362 14.3147 18.7995 13.919 18.901C14.0034 18.5524 14.1498 18.1588 14.3084 17.7326L14.3749 17.5533C14.4499 17.3511 14.5438 17.1417 14.6433 16.9201C15.1806 15.7232 15.9165 14.0838 15.1179 10.3802C14.8187 8.9931 13.8197 8.31572 12.3053 8.47301C11.3973 8.56722 10.5668 8.93454 10.1525 9.14514C10.0634 9.19041 9.98193 9.2341 9.90582 9.27671C10.0214 7.87899 10.4583 5.26701 12.0925 3.61443C13.1214 2.57398 14.4917 2.06015 16.1612 2.08781C19.4509 2.14185 21.5604 3.83459 22.7509 5.24517C23.7767 6.46073 24.3323 7.68513 24.554 8.34547C22.8868 8.17554 21.7529 8.50556 21.178 9.32952C19.9275 11.1219 21.8622 14.6008 22.792 16.2727C22.9625 16.5791 23.1096 16.8439 23.1559 16.9564C23.4587 17.6922 23.8507 18.1834 24.1369 18.542C24.2246 18.6519 24.3098 18.7585 24.3745 18.8515C23.8695 18.9975 22.9625 19.3347 23.0451 21.0205C22.9785 21.8665 22.5044 25.8268 22.2636 27.226C21.9457 29.0745 21.2673 29.7631 19.3597 30.1732ZM27.6146 20.7011C27.0983 20.9415 26.2342 21.1218 25.4133 21.1604C24.5066 21.203 24.0451 21.0586 23.9366 20.9698C23.8855 19.9193 24.2756 19.8095 24.6883 19.6933C24.7531 19.675 24.8164 19.6572 24.8775 19.6358C24.9154 19.6668 24.957 19.6975 25.0025 19.7276C25.7312 20.2099 27.031 20.262 28.8659 19.8822C28.8727 19.8808 28.8794 19.8795 28.8861 19.8781C28.6386 20.1101 28.2151 20.4215 27.6146 20.7011Z" fill="white" /> - -) + \ No newline at end of file diff --git a/static/img/technologies/sqlite.svg b/static/img/technologies/sqlite.svg new file mode 100644 index 0000000000..2cb5c6e2f0 --- /dev/null +++ b/static/img/technologies/sqlite.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + diff --git a/static/img/technologies/sqlserver.svg b/static/img/technologies/sqlserver.svg new file mode 100644 index 0000000000..25ac983cfd --- /dev/null +++ b/static/img/technologies/sqlserver.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/technologies/Typescript.tsx b/static/img/technologies/typescript.svg similarity index 95% rename from src/icons/technologies/Typescript.tsx rename to static/img/technologies/typescript.svg index 31f5dfdacd..3dc53d6eac 100644 --- a/src/icons/technologies/Typescript.tsx +++ b/static/img/technologies/typescript.svg @@ -1,6 +1,3 @@ -import * as React from 'react' - -export const Typescript = () => ( ( transform="translate(5.257 10.945)" fill="#fff" /> - -) + \ No newline at end of file diff --git a/static/robots.txt b/static/robots.txt new file mode 100644 index 0000000000..48e72177db --- /dev/null +++ b/static/robots.txt @@ -0,0 +1,8 @@ +User-agent: * +Disallow: / +Disallow: /*?query=* +Disallow: /*?page=* +Disallow: /*&query=* +Disallow: /*&page=* +Sitemap: https://www.prisma.io/docs/sitemap.xml +Host: https://www.prisma.io diff --git a/static/tech/sqlserver.svg b/static/tech/sqlserver.svg deleted file mode 100644 index 9c07c314da..0000000000 --- a/static/tech/sqlserver.svg +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tsconfig.json b/tsconfig.json index b9a5c790b4..f8d224fe2d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,105 +1,10 @@ { + // This file is not used in compilation. It is here just for a nice editor experience. + "extends": "@docusaurus/tsconfig", "compilerOptions": { - /* Visit https://aka.ms/tsconfig.json to read more about this file */ - - /* Projects */ - // "incremental": true, /* Enable incremental compilation */ - // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ - // "tsBuildInfoFile": "./", /* Specify the folder for .tsbuildinfo incremental compilation files. */ - // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects */ - // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ - // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ - - /* Language and Environment */ - "target": "esnext" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, - "lib": [ - "dom", - "esnext" - ] /* Specify a set of bundled library declaration files that describe the target runtime environment. */, - "jsx": "react" /* Specify what JSX code is generated. */, - // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ - // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ - // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h' */ - // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ - // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using `jsx: react-jsx*`.` */ - // "reactNamespace": "", /* Specify the object invoked for `createElement`. This only applies when targeting `react` JSX emit. */ - // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ - // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ - - /* Modules */ - "module": "esnext" /* Specify what module code is generated. */, - // "rootDir": "./", /* Specify the root folder within your source files. */ - "moduleResolution": "node" /* Specify how TypeScript looks up a file from a given module specifier. */, - // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ - // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ - // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ - // "typeRoots": [], /* Specify multiple folders that act like `./node_modules/@types`. */ - // "types": [], /* Specify type package names to be included without being referenced in a source file. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - // "resolveJsonModule": true, /* Enable importing .json files */ - // "noResolve": true, /* Disallow `import`s, `require`s or ``s from expanding the number of files TypeScript should add to a project. */ - - /* JavaScript Support */ - // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */ - // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ - // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */ - - /* Emit */ - // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ - // "declarationMap": true, /* Create sourcemaps for d.ts files. */ - // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ - // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ - // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If `declaration` is true, also designates a file that bundles all .d.ts output. */ - // "outDir": "./", /* Specify an output folder for all emitted files. */ - // "removeComments": true, /* Disable emitting comments. */ - // "noEmit": true, /* Disable emitting files from a compilation. */ - // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ - // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types */ - // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ - // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ - // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ - // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ - // "newLine": "crlf", /* Set the newline character for emitting files. */ - // "stripInternal": true, /* Disable emitting declarations that have `@internal` in their JSDoc comments. */ - // "noEmitHelpers": true, /* Disable generating custom helper functions like `__extends` in compiled output. */ - // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ - // "preserveConstEnums": true, /* Disable erasing `const enum` declarations in generated code. */ - // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ - // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ - - /* Interop Constraints */ - // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ - // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ - "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */, - // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ - "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, - - /* Type Checking */ - "strict": true /* Enable all strict type-checking options. */, - // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied `any` type.. */ - // "strictNullChecks": true, /* When type checking, take into account `null` and `undefined`. */ - // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ - // "strictBindCallApply": true, /* Check that the arguments for `bind`, `call`, and `apply` methods match the original function. */ - // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ - // "noImplicitThis": true, /* Enable error reporting when `this` is given the type `any`. */ - // "useUnknownInCatchVariables": true, /* Type catch clause variables as 'unknown' instead of 'any'. */ - // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ - // "noUnusedLocals": true, /* Enable error reporting when a local variables aren't read. */ - // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read */ - // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ - // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ - // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ - // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ - // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ - // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type */ - // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ - // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ - - /* Completeness */ - // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ - "skipLibCheck": true /* Skip type checking all .d.ts files. */ - }, - "include": ["./src/**/*", "./gatsby-node.ts", "./gatsby-config.ts", "./plugins/**/*"] -} + "baseUrl": ".", + "types": [ + "docusaurus-plugin-sass" + ] + } +} \ No newline at end of file diff --git a/tslint.json b/tslint.json deleted file mode 100644 index 4175eddb64..0000000000 --- a/tslint.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "defaultSeverity": "error", - "extends": ["tslint:recommended"], - "jsRules": {}, - "rules": { - "no-console": false, - "member-access": false, - "object-literal-sort-keys": false, - "ordered-imports": false, - "interface-name": false, - "no-submodule-imports": false, - "quotemark": [true, "single", "jsx-double"], - "arrow-parens": false - }, - "rulesDirectory": [] -} diff --git a/vercel.json b/vercel.json deleted file mode 100644 index bebbe5c5ec..0000000000 --- a/vercel.json +++ /dev/null @@ -1,3811 +0,0 @@ -{ - "headers": [ - { - "source": "/(.*)", - "headers": [ - { - "key": "Access-Control-Allow-Origin", - "value": "*" - }, - { - "key": "Strict-Transport-Security", - "value": "max-age=63072000; includeSubDomains; preload" - }, - { - "key": "Content-Security-Policy", - "value": "default-src data: 'unsafe-inline' 'unsafe-eval' https:; script-src data: 'unsafe-inline' 'unsafe-eval' https: blob:; style-src data: 'unsafe-inline' https:; img-src data: https: blob:; font-src data: https:; connect-src https: wss: blob:; media-src https: blob:; object-src https:; child-src https: data: blob:; form-action https:; block-all-mixed-content" - }, - { - "key": "X-Frame-Options", - "value": "DENY" - }, - { - "key": "X-Content-Type-Options", - "value": "nosniff" - }, - { - "key": "Referrer-Policy", - "value": "no-referrer" - }, - { - "key": "Feature-Policy", - "value": "microphone 'none'; geolocation 'none'" - }, - { - "key": "Cache-Control", - "value": "public, max-age=0, s-maxage=31536000, immutable" - } - ] - } - ], - "redirects": [ - { - "source": "/docs/page-data/docs/:any*", - "destination": "/docs/page-data/index/:any*" - }, - { - "source": "/docs/faq/:any*", - "destination": "https://v1.prisma.io/docs/1.34/faq/:any*" - }, - { - "source": "/docs/-a002", - "destination": "https://v1.prisma.io/docs/1.34/get-started/" - }, - { - "source": "/docs/-t002", - "destination": "https://v1.prisma.io/docs/1.34/get-started/" - }, - { - "source": "/docs/-t002/", - "destination": "https://v1.prisma.io/docs/1.34/get-started/" - }, - { - "source": "/docs/prisma-admin/", - "destination": "https://v1.prisma.io/docs/1.34/prisma-admin/" - }, - { - "source": "/docs/prisma-cli-and-configuration/", - "destination": "https://v1.prisma.io/docs/1.34/prisma-cli-and-configuration/" - }, - { - "source": "/docs/prisma-client/", - "destination": "https://v1.prisma.io/docs/1.34/prisma-client/" - }, - { - "source": "/docs/prisma-server/", - "destination": "https://v1.prisma.io/docs/1.34/prisma-server/" - }, - { - "source": "/docs/quickstart/", - "destination": "https://v1.prisma.io/docs/1.34/get-started/" - }, - { - "source": "/docs/releases-and-maintenance/", - "destination": "https://v1.prisma.io/docs/1.34/releases-and-maintenance/" - }, - { - "source": "/docs/datamodel-and-migrations/", - "destination": "https://v1.prisma.io/docs/1.34/datamodel-and-migrations" - }, - { - "source": "/docs/get-started/01-setting-up-prisma-new-database-GO-g002/", - "destination": "https://v1.prisma.io/docs/1.34/get-started" - }, - { - "source": "/docs/get-started/01-setting-up-prisma-new-database-JAVASCRIPT-a002/", - "destination": "https://v1.prisma.io/docs/1.34/get-started" - }, - { - "source": "/docs/get-started/01-setting-up-prisma-demo-server-a001/", - "destination": "https://v1.prisma.io/docs/1.34/get-started/01-setting-up-prisma-demo-server-JAVASCRIPT-a001/" - }, - { - "source": "/docs/get-started/01-setting-up-prisma-existing-database-a003/", - "destination": "https://v1.prisma.io/docs/1.34/get-started/01-setting-up-prisma-demo-server-JAVASCRIPT-a001/" - }, - { - "source": "/docs/get-started/01-setting-up-prisma-new-database-a002/", - "destination": "https://v1.prisma.io/docs/1.34/get-started/01-setting-up-prisma-new-database-JAVASCRIPT-a002/" - }, - { - "source": "/docs/datamodel-and-migrations/datamodel-MYSQL-knul/", - "destination": "https://v1.prisma.io/docs/1.34/datamodel-and-migrations" - }, - { - "source": "/docs/data-model-and-migrations/introspection-mapping-to-existing-db-soi1/", - "destination": "https://v1.prisma.io/docs/1.34/data-model-and-migrations/introspection-mapping-to-existing-db-soi1/" - }, - { - "source": "/docs/understand-prisma/how-prisma-works-under-the-hood-j8ff/", - "destination": "https://v1.prisma.io/docs/1.34/understand-prisma/how-prisma-works-under-the-hood-j8ff/" - }, - { - "source": "/docs/understand-prisma/prisma-basics-datamodel-client-and-server-fgz4/", - "destination": "https://v1.prisma.io/docs/1.34/understand-prisma/prisma-basics-datamodel-client-and-server-fgz4/" - }, - { - "source": "/docs/understand-prisma/prisma-introduction-what-why-how-j9ff/", - "destination": "https://v1.prisma.io/docs/1.34/understand-prisma/prisma-introduction-what-why-how-j9ff/" - }, - { - "source": "/docs/understand-prisma/prisma-vs-traditional-orms/prisma-vs-mongoose-ys8c/", - "destination": "https://v1.prisma.io/docs/1.34/understand-prisma/prisma-vs-traditional-orms/prisma-vs-mongoose-ys8c/" - }, - { - "source": "/docs/understand-prisma/prisma-vs-traditional-orms/prisma-vs-sequelize-c4fk/", - "destination": "https://v1.prisma.io/docs/1.34/understand-prisma/prisma-vs-traditional-orms/prisma-vs-sequelize-c4fk/" - }, - { - "source": "/docs/understand-prisma/prisma-vs-traditional-orms/prisma-vs-typeorm-k9fh/", - "destination": "https://v1.prisma.io/docs/1.34/understand-prisma/prisma-vs-traditional-orms/prisma-vs-typeorm-k9fh/" - }, - { - "source": "/docs/prisma-client/basic-data-access/reading-data-GO-go05/", - "destination": "https://v1.prisma.io/docs/1.34/prisma-client/basic-data-access/reading-data-GO-go05/" - }, - { - "source": "/docs/prisma-client/basic-data-access/reading-data-JAVASCRIPT-rsc2/", - "destination": "https://v1.prisma.io/docs/1.34/prisma-client/basic-data-access/reading-data-JAVASCRIPT-rsc2/" - }, - { - "source": "/docs/prisma-client/basic-data-access/reading-data-TYPESCRIPT-rsc3/", - "destination": "https://v1.prisma.io/docs/1.34/prisma-client/basic-data-access/reading-data-TYPESCRIPT-rsc3/" - }, - { - "source": "/docs/prisma-client/basic-data-access/writing-data-GO-go08/", - "destination": "https://v1.prisma.io/docs/1.34/prisma-client/basic-data-access/writing-data-GO-go08/" - }, - { - "source": "/docs/prisma-client/basic-data-access/writing-data-JAVASCRIPT-rsc6/", - "destination": "https://v1.prisma.io/docs/1.34/prisma-client/basic-data-access/writing-data-JAVASCRIPT-rsc6/" - }, - { - "source": "/docs/prisma-client/basic-data-access/writing-data-TYPESCRIPT-rsc7/", - "destination": "https://v1.prisma.io/docs/1.34/prisma-client/basic-data-access/writing-data-TYPESCRIPT-rsc7/" - }, - { - "source": "/docs/prisma-client/features/check-existence-GO-go01/", - "destination": "https://v1.prisma.io/docs/1.34/prisma-client/features/check-existence-GO-go01/" - }, - { - "source": "/docs/prisma-client/features/check-existence-JAVASCRIPT-pyl1/", - "destination": "https://v1.prisma.io/docs/1.34/prisma-client/features/check-existence-JAVASCRIPT-pyl1/" - }, - { - "source": "/docs/prisma-client/features/check-existence-TYPESCRIPT-pyl2/", - "destination": "https://v1.prisma.io/docs/1.34/prisma-client/features/check-existence-TYPESCRIPT-pyl2/" - }, - { - "source": "/docs/prisma-client/features/realtime-GO-go06/", - "destination": "https://v1.prisma.io/docs/1.34/prisma-client/features/realtime-GO-go06/" - }, - { - "source": "/docs/prisma-client/features/realtime-JAVASCRIPT-rsc8/", - "destination": "https://v1.prisma.io/docs/1.34/prisma-client/features/realtime-JAVASCRIPT-rsc8/" - }, - { - "source": "/docs/prisma-client/features/realtime-TYPESCRIPT-rsc9/", - "destination": "https://v1.prisma.io/docs/1.34/prisma-client/features/realtime-TYPESCRIPT-rsc9/" - }, - { - "source": "/docs/prisma-client/setup/constructor-GO-go02/", - "destination": "https://v1.prisma.io/docs/1.34/prisma-client/setup/constructor-GO-go02/" - }, - { - "source": "/docs/prisma-client/setup/constructor-JAVASCRIPT-rsc4/", - "destination": "https://v1.prisma.io/docs/1.34/prisma-client/setup/constructor-JAVASCRIPT-rsc4/" - }, - { - "source": "/docs/prisma-client/setup/constructor-TYPESCRIPT-rsc5/", - "destination": "https://v1.prisma.io/docs/1.34/prisma-client/setup/constructor-TYPESCRIPT-rsc5/" - }, - { - "source": "/docs/prisma-client/setup/generating-the-client-GO-r3c3/", - "destination": "https://v1.prisma.io/docs/1.34/prisma-client/setup/generating-the-client-GO-r3c3/" - }, - { - "source": "/docs/prisma-client/setup/generating-the-client-JAVASCRIPT-rsc1/", - "destination": "https://v1.prisma.io/docs/1.34/prisma-client/setup/generating-the-client-JAVASCRIPT-rsc1/" - }, - { - "source": "/docs/prisma-client/setup/generating-the-client-TYPESCRIPT-r3c2/", - "destination": "https://v1.prisma.io/docs/1.34/prisma-client/setup/generating-the-client-TYPESCRIPT-r3c2/" - }, - { - "source": "/docs/run-prisma-server/database-connector-MYSQL-jgfs/", - "destination": "https://v1.prisma.io/docs/1.34/prisma-server/database-connector-MYSQL-jgfs/" - }, - { - "source": "/docs/guides/database-workflows/setting-up-a-database/postgresql", - "destination": "/docs/dataguide/postgresql/setting-up-a-local-postgresql-database" - }, - { - "source": "/docs/guides/database-workflows/setting-up-a-database/mysql", - "destination": "/docs/dataguide/mysql/setting-up-a-local-mysql-database" - }, - { - "source": "/docs/guides/database-workflows/setting-up-a-database/sqlite", - "destination": "/docs/dataguide/sqlite/setting-up-a-local-sqlite-database" - }, - { - "source": "/docs/guides/database-workflows/import-and-export-data/postgresql", - "destination": "/docs/dataguide/postgresql/inserting-and-modifying-data/importing-and-exporting-data-in-postgresql" - }, - { - "source": "/docs/guides/database-workflows/import-and-export-data/mysql", - "destination": "/docs/dataguide/mysql/importing-and-exporting-data-in-mysql" - }, - { - "source": "/docs/guides/database-workflows/import-and-export-data/sqlite", - "destination": "/docs/dataguide/sqlite/importing-and-exporting-data-in-sqlite" - }, - { - "source": "/docs/guides/database-workflows/:any*", - "destination": "/docs/guides/general-guides/database-workflows/:any*" - }, - { - "source": "/docs/guides/troubleshooting", - "destination": "/docs/support/help-articles" - }, - { - "source": "/docs/guides/troubleshooting/autocompletion-in-graphql-resolvers-with-js", - "destination": "/docs/support/help-articles/autocompletion-in-graphql-resolvers-with-js" - }, - { - "source": "/docs/getting-started/quickstart-typescript", - "destination": "/docs/getting-started/quickstart" - }, - { - "source": "/docs/getting-started/quickstart-javascript", - "destination": "/docs/getting-started/quickstart" - }, - { - "source": "/docs/getting-started/quickstart-node", - "destination": "/docs/getting-started/quickstart" - }, - { - "source": "/docs/reference/tools-and-interfaces/prisma-schema/prisma-schema-file", - "destination": "/docs/reference/tools-and-interfaces/prisma-schema" - }, - { - "source": "/docs/reference/tools-and-interfaces/prisma-client/api", - "destination": "/docs/reference/tools-and-interfaces/prisma-client" - }, - { - "source": "/docs/reference/tools-and-interfaces/prisma-client/api", - "destination": "/docs/reference/tools-and-interfaces/prisma-client" - }, - { - "source": "/docs/guides/upgrade-from-prisma-1/should-you-upgrade", - "destination": "/docs/guides/upgrade-from-prisma-1/how-to-upgrade" - }, - { - "source": "/docs/reference/tools-and-interfaces/prisma-schema/models", - "destination": "/docs/reference/tools-and-interfaces/prisma-schema/data-model" - }, - { - "source": "/docs/concepts/overview/api-comparisons/prisma-and-typeorm", - "destination": "/docs/concepts/more/comparisons/prisma-and-typeorm" - }, - { - "source": "/docs/concepts/overview/api-comparisons/prisma-and-sequelize", - "destination": "/docs/concepts/more/comparisons/prisma-and-sequelize" - }, - { - "source": "/docs/concepts/overview/api-comparisons/prisma-and-mongoose", - "destination": "/docs/concepts/more/comparisons/prisma-and-mongoose" - }, - { - "source": "/docs/concepts/overview/why-prisma/api-comparisons/prisma-and-typeorm", - "destination": "/docs/concepts/more/comparisons/prisma-and-typeorm" - }, - { - "source": "/docs/concepts/overview/why-prisma/api-comparisons/prisma-and-sequelize", - "destination": "/docs/concepts/more/comparisons/prisma-and-sequelize" - }, - { - "source": "/docs/concepts/overview/why-prisma/api-comparisons/prisma-and-mongoose", - "destination": "/docs/concepts/more/comparisons/prisma-and-mongoose" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch-sql-typescript-postgres", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases-typescript-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch-sql-node-postgres", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases-node-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch-sql-typescript-mysql", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases-typescript-mysql" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch-sql-node-mysql", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases-node-mysql" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch-prisma-migrate-typescript-postgres", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases-typescript-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch-prisma-migrate-node-postgres", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases-node-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch-prisma-migrate-typescript-mysql", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases-typescript-mysql" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch-prisma-migrate-node-mysql", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases-node-mysql" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch-typescript-postgres", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases-typescript-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch-node-postgres", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases-node-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch-typescript-mysql", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases-typescript-mysql" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch-node-mysql", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases-node-mysql" - }, - { - "source": "/docs/reference/tools-and-interfaces/prisma-schema/prisma-schema-file", - "destination": "/docs/reference/tools-and-interfaces/prisma-schema" - }, - { - "source": "/docs/reference/tools-and-interfaces/prisma-client/api", - "destination": "/docs/reference/tools-and-interfaces/prisma-client" - }, - { - "source": "/docs/guides/upgrade-from-prisma-1/should-you-upgrade", - "destination": "/docs/guides/upgrade-from-prisma-1/how-to-upgrade" - }, - { - "source": "/docs/reference/tools-and-interfaces/prisma-schema/models", - "destination": "/docs/reference/tools-and-interfaces/prisma-schema/data-model" - }, - { - "source": "/docs/guides/upgrade-guides/upgrade-from-prisma-1/upgrading-the-prisma-layer", - "destination": "/docs/guides/upgrade-guides/upgrade-from-prisma-1/upgrading-the-prisma-layer-postgresql" - }, - { - "source": "/docs/concepts/components/preview-features/sql-server/sql-server-start-from-scratch", - "destination": "/docs/concepts/components/preview-features/sql-server/sql-server-start-from-scratch-typescript" - }, - { - "source": "/docs/guides/upgrade-guides/upgrade-from-prisma-1/schema-incompatibilities", - "destination": "/docs/guides/upgrade-guides/upgrade-from-prisma-1/schema-incompatibilities-postgresql" - }, - { - "source": "/docs/guides/upgrade-from-prisma-1/how-to-upgrade", - "destination": "/docs/guides/upgrade-guides/upgrade-from-prisma-1/how-to-upgrade" - }, - { - "source": "/docs/guides/upgrade-from-prisma-1/schema-incompatibilities", - "destination": "/docs/guides/upgrade-guides/upgrade-from-prisma-1/schema-incompatibilities-postgresql" - }, - { - "source": "/docs/guides/upgrade-from-prisma-1/upgrading-the-prisma-layer-postgres", - "destination": "/docs/guides/upgrade-guides/upgrade-from-prisma-1" - }, - { - "source": "/docs/guides/upgrade-from-prisma-1/upgrading-nexus-prisma-to-nexus", - "destination": "/docs/guides/upgrade-guides/upgrade-from-prisma-1/upgrading-nexus-prisma-to-nexus" - }, - { - "source": "/docs/guides/upgrade-from-prisma-1/upgrading-prisma-binding-to-nexus", - "destination": "/docs/guides/upgrade-guides/upgrade-from-prisma-1/upgrading-prisma-binding-to-nexus" - }, - { - "source": "/docs/guides/upgrade-from-prisma-1/upgrading-prisma-binding-to-sdl-first", - "destination": "/docs/guides/upgrade-guides/upgrade-from-prisma-1/upgrading-prisma-binding-to-sdl-first" - }, - { - "source": "/docs/guides/upgrade-from-prisma-1/upgrading-a-rest-api", - "destination": "/docs/guides/upgrade-guides/upgrade-from-prisma-1/upgrading-a-rest-api" - }, - { - "source": "/docs/reference/tools-and-interfaces/prisma-schema/prisma-schema-reference", - "destination": "/docs/reference/api-reference/prisma-schema-reference" - }, - { - "source": "/docs/reference/tools-and-interfaces/prisma-cli/command-reference", - "destination": "/docs/reference/api-reference/command-reference" - }, - { - "source": "/docs/reference/database-connectors/database-features", - "destination": "/docs/orm/reference/supported-databases" - }, - { - "source": "/docs/reference/database-connectors/connection-urls", - "destination": "/docs/orm/reference/connection-urls" - }, - { - "source": "/docs/more/supported-databases", - "destination": "/docs/orm/reference/supported-databases" - }, - { - "source": "/docs/reference/tools-and-interfaces/:any*", - "destination": "/docs/concepts/components/:any*" - }, - { - "source": "/docs/reference/database-connectors/:any*", - "destination": "/docs/concepts/database-connectors/:any*" - }, - { - "source": "/docs/reference/more/:any*", - "destination": "/docs/concepts/more/:any*" - }, - { - "source": "/docs/understand-prisma/introduction", - "destination": "/docs/concepts/overview/what-is-prisma" - }, - { - "source": "/docs/understand-prisma/data-modeling", - "destination": "/docs/concepts/overview/what-is-prisma/data-modeling" - }, - { - "source": "/docs/understand-prisma/:any*", - "destination": "/docs/concepts/overview/:any*" - }, - { - "source": "/docs/understand-prisma/api-comparisons/:any*", - "destination": "/docs/concepts/overview/why-prisma/api-comparisons" - }, - { - "source": "/docs/more/:any*", - "destination": "/docs/about/:any*" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch-prisma-migrate", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch-typescript-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch-sql", - "destination": "/docs/getting-started/setup-prisma" - }, - { - "source": "/docs/guides/prisma-guides/prisma-migrate-guides", - "destination": "/docs/guides/prisma-guides/add-prisma-migrate-to-a-project" - }, - { - "source": "/docs/guides/prisma-guides/prisma-migrate-guides/add-prisma-migrate-to-a-project", - "destination": "/docs/guides/prisma-guides/add-prisma-migrate-to-a-project" - }, - { - "source": "/docs/concepts/components/prisma-client/distinct", - "destination": "/docs/concepts/components/prisma-client/aggregation-grouping-summarizing#select-distinct" - }, - { - "source": "/docs/concepts/components/prisma-client/configuring-the-prisma-client-api", - "destination": "/docs/concepts/components/prisma-client/generating-prisma-client/customizing-the-prisma-client-api" - }, - { - "source": "/docs/concepts/components/prisma-client/constructor", - "destination": "/docs/reference/api-reference/prisma-client-reference#prismaclient" - }, - { - "source": "/docs/concepts/components/prisma-client/field-selection", - "destination": "/docs/concepts/components/prisma-client/select-fields" - }, - { - "source": "/docs/concepts/components/prisma-client/error-reference", - "destination": "/docs/reference/api-reference/error-reference" - }, - { - "source": "/docs/concepts/components/prisma-client/sorting", - "destination": "/docs/concepts/components/prisma-client/filtering-and-sorting" - }, - { - "source": "/docs/concepts/components/prisma-client/filtering", - "destination": "/docs/concepts/components/prisma-client/filtering-and-sorting" - }, - { - "source": "/docs/concepts/components/prisma-client/aggregations", - "destination": "/docs/concepts/components/prisma-client/aggregation-grouping-summarizing" - }, - { - "source": "/docs/concepts/components/prisma-client/working-with-json", - "destination": "/docs/concepts/components/prisma-client/working-with-advanced-types" - }, - { - "source": "/docs/concepts/components/prisma-client/group-by", - "destination": "/docs/concepts/components/prisma-client/aggregation-grouping-summarizing#group-by-preview" - }, - { - "source": "/docs/concepts/components/prisma-client/advanced-usage-of-generated-types", - "destination": "/docs/concepts/components/prisma-client/working-with-generated-types" - }, - { - "source": "/docs/concepts/components/preview-features/native-types/native-types-mappings", - "destination": "/docs/reference/api-reference/prisma-schema-reference#model-field-scalar-types" - }, - { - "source": "/docs/concepts/components/preview-features/native-types", - "destination": "/docs/concepts/components/prisma-schema/data-model#native-types-mapping" - }, - { - "source": "/docs/concepts/components/prisma-client/generating-prisma-client", - "destination": "/docs/concepts/components/prisma-client/working-with-prismaclient/generating-prisma-client" - }, - { - "source": "/docs/concepts/components/prisma-client/generating-prisma-client/customizing-the-prisma-client-api", - "destination": "/docs/concepts/components/prisma-client/working-with-prismaclient/use-custom-model-and-field-names" - }, - { - "source": "/docs/concepts/components/prisma-client/connection-management", - "destination": "/docs/concepts/components/prisma-client/working-with-prismaclient/connection-management" - }, - { - "source": "/docs/concepts/components/prisma-client/logging", - "destination": "/docs/concepts/components/prisma-client/working-with-prismaclient/logging" - }, - { - "source": "/docs/concepts/components/prisma-client/error-formatting", - "destination": "/docs/concepts/components/prisma-client/working-with-prismaclient/error-formatting" - }, - { - "source": "/docs/concepts/components/prisma-client/deployment", - "destination": "/docs/guides/deployment/deployment" - }, - { - "source": "/docs/concepts/components/prisma-migrate/prisma-migrate-flows", - "destination": "/docs/concepts/components/prisma-migrate" - }, - { - "source": "/docs/guides/prisma-guides/seed-database", - "destination": "/docs/guides/application-lifecycle/seed-database" - }, - { - "source": "/docs/guides/prisma-guides/add-prisma-migrate-to-a-project", - "destination": "/docs/guides/database/developing-with-prisma-migrate/add-prisma-migrate-to-a-project" - }, - { - "source": "/docs/about/creating-bug-reports", - "destination": "/docs/support/creating-bug-reports" - }, - { - "source": "/docs/concepts/components/prisma-client/working-with-generated-types", - "destination": "/docs/concepts/components/prisma-client/advanced-type-safety/operating-against-partial-structures-of-model-types" - }, - { - "source": "/docs/reference/utility-types-reference", - "destination": "/docs/reference/api-reference/prisma-client-reference#prismavalidator" - }, - { - "source": "/docs/concepts/components/prisma-client/query-engine", - "destination": "/docs/concepts/components/prisma-engines/query-engine" - }, - { - "source": "/docs/concepts/overview/under-the-hood", - "destination": "/docs/concepts/components/prisma-engines" - }, - { - "source": "/docs/guides/application-lifecycle/add-prisma-migrate-to-a-project", - "destination": "/docs/guides/database/developing-with-prisma-migrate/add-prisma-migrate-to-a-project" - }, - { - "source": "/docs/guides/deployment/patching-production", - "destination": "/docs/guides/database/patching-production" - }, - { - "source": "/docs/guides/deployment/production-troubleshooting", - "destination": "/docs/guides/database/production-troubleshooting" - }, - { - "source": "/docs/guides/application-lifecycle/:any*", - "destination": "/docs/guides/database/:any*" - }, - { - "source": "/docs/guides/deployment/deploying-to-azure-functions", - "destination": "/docs/guides/deployment/deployment-guides/deploying-to-azure-functions" - }, - { - "source": "/docs/guides/deployment/deploying-to-heroku", - "destination": "/docs/guides/deployment/deployment-guides/deploying-to-heroku" - }, - { - "source": "/docs/guides/deployment/deploying-to-vercel", - "destination": "/docs/guides/deployment/deployment-guides/deploying-to-vercel" - }, - { - "source": "/docs/guides/deployment/deploying-to-aws-lambda", - "destination": "/docs/guides/deployment/deployment-guides/deploying-to-aws-lambda" - }, - { - "source": "/docs/guides/deployment/deploying-to-netlify", - "destination": "/docs/guides/deployment/deployment-guides/deploying-to-netlify" - }, - { - "source": "/docs/guides/general-guides/database-workflows/cascading-deletes/:any*", - "destination": "/docs/concepts/components/prisma-schema/relations/referential-actions" - }, - { - "source": "/docs/guides/database/advanced-database-tasks/cascading-deletes/:any*", - "destination": "/docs/concepts/components/prisma-schema/relations/referential-actions" - }, - { - "source": "/docs/guides/general-guides/database-workflows/data-validation/:any*", - "destination": "/docs/guides/database/advanced-database-tasks/data-validation/:any*" - }, - { - "source": "/docs/guides/general-guides/database-workflows/sql-views", - "destination": "https://github.com/prisma/prisma/issues/678" - }, - { - "source": "/docs/guides/general-guides/database-workflows/sql-views-postgres", - "destination": "https://github.com/prisma/prisma/issues/678" - }, - { - "source": "/docs/guides/database/advanced-database-tasks/sql-views-postgres", - "destination": "https://github.com/prisma/prisma/issues/678" - }, - { - "source": "/docs/guides/general-guides/database-workflows/sql-views-mysql", - "destination": "https://github.com/prisma/prisma/issues/678" - }, - { - "source": "/docs/guides/database/advanced-database-tasks/sql-views-mysql", - "destination": "https://github.com/prisma/prisma/issues/678" - }, - { - "source": "/docs/guides/general-guides/database-workflows/unique-constraints-and-indexes", - "destination": "/docs/concepts/components/prisma-schema/data-model#defining-a-unique-field" - }, - { - "source": "/docs/guides/general-guides/database-workflows/unique-constraints-and-indexes/mysql", - "destination": "/docs/concepts/components/prisma-schema/data-model#defining-a-unique-field" - }, - { - "source": "/docs/guides/database/advanced-database-tasks/unique-constraints-and-indexes/postgresql", - "destination": "/docs/concepts/components/prisma-schema/data-model#defining-a-unique-field" - }, - { - "source": "/docs/guides/general-guides/database-workflows/unique-constraints-and-indexes/sqlite", - "destination": "/docs/concepts/components/prisma-schema/data-model#defining-a-unique-field" - }, - { - "source": "/docs/guides/general-guides/database-workflows/foreign-keys", - "destination": "/docs/concepts/components/prisma-schema/relations#relational-databases" - }, - { - "source": "/docs/guides/general-guides/database-workflows/foreign-keys/mysql", - "destination": "/docs/concepts/components/prisma-schema/relations#relational-databases" - }, - { - "source": "/docs/guides/general-guides/database-workflows/foreign-keys/postgresql", - "destination": "/docs/concepts/components/prisma-schema/relations#relational-databases" - }, - { - "source": "/docs/guides/general-guides/database-workflows/foreign-keys/sqlite", - "destination": "/docs/concepts/components/prisma-schema/relations#relational-databases" - }, - { - "source": "/docs/guides/prisma-guides/:any*", - "destination": "/docs/guides/performance-and-optimization/:any*" - }, - { - "source": "/docs/mongodb", - "destination": "/docs/concepts/database-connectors/mongodb" - }, - { - "source": "/docs/guides/database/developing-with-prisma-migrate/advanced-migrate-scenarios", - "destination": "/docs/guides/database/developing-with-prisma-migrate/customizing-migrations" - }, - { - "source": "/docs/concepts/components/prisma-migrate/type-mapping", - "destination": "/docs/concepts/components/prisma-migrate/supported-types-and-db-features" - }, - { - "source": "/docs/concepts/components/prisma-client/working-with-advanced-types", - "destination": "/docs/concepts/components/prisma-client/working-with-fields" - }, - { - "source": "/docs/concepts/more/codemod", - "destination": "/docs/guides/upgrade-guides/upgrading-versions/codemods" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch-typescript-postgres", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases-typescript-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/add-to-existing-project-typescript-postgres", - "destination": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases-typescript-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch/connect-your-database-typescript-postgres", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/connect-your-database-typescript-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch/using-prisma-migrate-typescript-postgres", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/using-prisma-migrate-typescript-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch/install-prisma-client-typescript-postgres", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/install-prisma-client-typescript-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch/querying-the-database-typescript-postgres", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/querying-the-database-typescript-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch/next-steps-typescript-postgres", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/next-steps-typescript-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/add-to-existing-project/connect-your-database-typescript-postgres", - "destination": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/connect-your-database-typescript-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/add-to-existing-project/introspection-typescript-postgres", - "destination": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/introspection-typescript-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/add-to-existing-project/install-prisma-client-typescript-postgres", - "destination": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/install-prisma-client-typescript-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/add-to-existing-project/querying-the-database-typescript-postgres", - "destination": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/querying-the-database-typescript-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/add-to-existing-project/next-steps-typescript-postgres", - "destination": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/next-steps-typescript-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch/connect-your-database-node-postgres", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/connect-your-database-node-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch/using-prisma-migrate-node-postgres", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/using-prisma-migrate-node-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch/install-prisma-client-node-postgres", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/install-prisma-client-node-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch/querying-the-database-node-postgres", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/querying-the-database-node-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch/next-steps-node-postgres", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/next-steps-node-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/add-to-existing-project/connect-your-database-node-postgres", - "destination": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/connect-your-database-node-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/add-to-existing-project/introspection-node-postgres", - "destination": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/introspection-node-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/add-to-existing-project/install-prisma-client-node-postgres", - "destination": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/install-prisma-client-node-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/add-to-existing-project/querying-the-database-node-postgres", - "destination": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/querying-the-database-node-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/add-to-existing-project/next-steps-node-postgres", - "destination": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/next-steps-node-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch/connect-your-database-typescript-mysql", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/connect-your-database-typescript-mysql" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch/using-prisma-migrate-typescript-mysql", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/using-prisma-migrate-typescript-mysql" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch/install-prisma-client-typescript-mysql", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/install-prisma-client-typescript-mysql" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch/querying-the-database-typescript-mysql", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/querying-the-database-typescript-mysql" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch/next-steps-typescript-mysql", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/next-steps-typescript-mysql" - }, - { - "source": "/docs/getting-started/setup-prisma/add-to-existing-project/connect-your-database-typescript-mysql", - "destination": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/connect-your-database-typescript-mysql" - }, - { - "source": "/docs/getting-started/setup-prisma/add-to-existing-project/introspection-typescript-mysql", - "destination": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/introspection-typescript-mysql" - }, - { - "source": "/docs/getting-started/setup-prisma/add-to-existing-project/install-prisma-client-typescript-mysql", - "destination": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/install-prisma-client-typescript-mysql" - }, - { - "source": "/docs/getting-started/setup-prisma/add-to-existing-project/querying-the-database-typescript-mysql", - "destination": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/querying-the-database-typescript-mysql" - }, - { - "source": "/docs/getting-started/setup-prisma/add-to-existing-project/next-steps-typescript-mysql", - "destination": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/next-steps-typescript-mysql" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch/connect-your-database-node-mysql", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/connect-your-database-node-mysql" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch/using-prisma-migrate-node-mysql", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/using-prisma-migrate-node-mysql" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch/install-prisma-client-node-mysql", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/install-prisma-client-node-mysql" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch/querying-the-database-node-mysql", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/querying-the-database-node-mysql" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch/next-steps-node-mysql", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/next-steps-node-mysql" - }, - { - "source": "/docs/getting-started/setup-prisma/add-to-existing-project/connect-your-database-node-mysql", - "destination": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/connect-your-database-node-mysql" - }, - { - "source": "/docs/getting-started/setup-prisma/add-to-existing-project/introspection-node-mysql", - "destination": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/introspection-node-mysql" - }, - { - "source": "/docs/getting-started/setup-prisma/add-to-existing-project/install-prisma-client-node-mysql", - "destination": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/install-prisma-client-node-mysql" - }, - { - "source": "/docs/getting-started/setup-prisma/add-to-existing-project/querying-the-database-node-mysql", - "destination": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/querying-the-database-node-mysql" - }, - { - "source": "/docs/getting-started/setup-prisma/add-to-existing-project/next-steps-node-mysql", - "destination": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/next-steps-node-mysql" - }, - { - "source": "/docs/concepts/more/environment-variables", - "destination": "/docs/guides/development-environment/environment-variables" - }, - { - "source": "/docs/concepts/more/environment-variables/managing-env-files-and-setting-variables", - "destination": "/docs/guides/development-environment/environment-variables/managing-env-files-and-setting-variables" - }, - { - "source": "/docs/concepts/more/environment-variables/using-multiple-env-files", - "destination": "/docs/guides/development-environment/environment-variables/using-multiple-env-files" - }, - { - "source": "/docs/concepts/more/editor-setup", - "destination": "/docs/guides/development-environment/editor-setup" - }, - { - "source": "/docs/about/about-the-docs", - "destination": "/docs/about/prisma-docs/about-the-docs" - }, - { - "source": "/docs/about/whats-new-in-prisma-docs", - "destination": "/docs/about/prisma-docs/whats-new-in-prisma-docs" - }, - { - "source": "/docs/about/limitations", - "destination": "/docs/about/prisma/limitations" - }, - { - "source": "/docs/about/roadmap", - "destination": "/docs/about/prisma/roadmap" - }, - { - "source": "/docs/about/faq", - "destination": "/docs/about/prisma/faq" - }, - { - "source": "/docs/about/releases", - "destination": "/docs/about/prisma/releases" - }, - { - "source": "/docs/about/example-projects", - "destination": "/docs/about/prisma/example-projects" - }, - { - "source": "/docs/about/style-guide", - "destination": "/docs/about/prisma-docs/style-guide" - }, - { - "source": "/docs/about/style-guide/mdx-examples", - "destination": "/docs/about/prisma-docs/style-guide/mdx-examples" - }, - { - "source": "/docs/about/style-guide/frontmatter", - "destination": "/docs/about/prisma-docs/style-guide/frontmatter" - }, - { - "source": "/docs/about/style-guide/template", - "destination": "/docs/about/prisma-docs/style-guide/template" - }, - { - "source": "/docs/concepts/components/preview-features/sql-server/sql-server-start-from-scratch-typescript", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases-typescript-sqlserver" - }, - { - "source": "/docs/concepts/database-connectors/microsoft-sql-server", - "destination": "/docs/concepts/database-connectors/sql-server" - }, - { - "source": "/docs/concepts/components/preview-features/sql-server/sql-server-connection-string", - "destination": "/docs/concepts/database-connectors/sql-server" - }, - { - "source": "/docs/concepts/components/preview-features/sql-server/sql-server-local", - "destination": "/docs/concepts/database-connectors/sql-server/sql-server-local" - }, - { - "source": "/docs/concepts/components/preview-features/sql-server/sql-server-docker", - "destination": "/docs/concepts/database-connectors/sql-server/sql-server-docker" - }, - { - "source": "/docs/concepts/components/preview-features/sql-server", - "destination": "/docs/concepts/database-connectors/sql-server" - }, - { - "source": "/docs/guides/upgrade-guides/upgrading-to-latest", - "destination": "/docs/guides/upgrade-guides/upgrading-versions" - }, - { - "source": "/docs/guides/upgrade-guides/upgrading-to-use-preview-features/enabling-named-constraints", - "destination": "/docs/guides/upgrade-guides/upgrading-versions/upgrading-to-prisma-3/named-constraints" - }, - { - "source": "/docs/concepts/components/prisma-schema/relations/referential-actions/cyclic-referential-actions", - "destination": "/docs/concepts/components/prisma-schema/relations/referential-actions/special-rules-for-referential-actions" - }, - { - "source": "/docs/concepts/components/prisma-schema/index-configuration", - "destination": "/docs/concepts/components/prisma-schema/indexes" - }, - { - "source": "/docs/concepts/components/prisma-data-platform", - "destination": "/docs/concepts/data-platform" - }, - { - "source": "/docs/about/prisma/platform-releases", - "destination": "/docs/concepts/data-platform/about-platform/platform-releases" - }, - { - "source": "/docs/support", - "destination": "/docs/guides/database/troubleshooting-orm" - }, - { - "source": "/docs/support/:any*", - "destination": "/docs/guides/database/troubleshooting-orm/:any*" - }, - { - "source": "/docs/concepts/data-platform", - "destination": "/docs/data-platform" - }, - { - "source": "/docs/concepts/data-platform/:any*", - "destination": "/docs/data-platform/:any*" - }, - { - "source": "/docs/data-platform/about-platform", - "destination": "/docs/data-platform/about" - }, - { - "source": "/docs/data-platform/about-platform/:any*", - "destination": "/docs/data-platform/about/:any*" - }, - { - "source": "/docs/data-platform/about/platform-limits-and-status", - "destination": "/docs/data-platform/about/limits-and-status" - }, - { - "source": "/docs/data-platform/about/platform-releases", - "destination": "/docs/data-platform/about/releases" - }, - { - "source": "/docs/data-platform/accounts", - "destination": "/docs/data-platform/account" - }, - { - "source": "/docs/concepts/components/prisma-schema/relations/referential-integrity", - "destination": "/docs/concepts/components/prisma-schema/relations/relation-mode" - }, - { - "source": "/docs/data-platform/billing/early-adopter-plan", - "destination": "/docs/data-platform/billing/plans-and-quotas" - }, - { - "source": "/docs/data-platform/projects/add-project(.*)", - "destination": "/docs/data-platform/projects/create" - }, - { - "source": "/docs/data-platform/members/user-roles", - "destination": "/docs/data-platform/members/roles-permissions" - }, - { - "source": "/docs/data-platform/members/data-collaborators", - "destination": "/docs/data-platform/members/add" - }, - { - "source": "/docs/data-platform/environments/edit-settings/change-database-connection-string", - "destination": "/docs/data-platform/troubleshooting/cannot-change-db-of-env" - }, - { - "source": "/docs/guides/database/developing-with-prisma-migrate/add-prisma-migrate-to-a-project", - "destination": "/docs/guides/migrate/developing-with-prisma-migrate/add-prisma-migrate-to-a-project" - }, - { - "source": "/docs/guides/database/developing-with-prisma-migrate/team-development", - "destination": "/docs/guides/migrate/developing-with-prisma-migrate/team-development" - }, - { - "source": "/docs/guides/database/developing-with-prisma-migrate/baselining", - "destination": "/docs/guides/migrate/developing-with-prisma-migrate/baselining" - }, - { - "source": "/docs/guides/database/developing-with-prisma-migrate/enable-native-database-functions", - "destination": "/docs/guides/migrate/developing-with-prisma-migrate/enable-native-database-functions" - }, - { - "source": "/docs/guides/database/developing-with-prisma-migrate/include-unsupported-database-features", - "destination": "/docs/guides/migrate/developing-with-prisma-migrate/include-unsupported-database-features" - }, - { - "source": "/docs/guides/database/developing-with-prisma-migrate/customizing-migrations", - "destination": "/docs/guides/migrate/developing-with-prisma-migrate/customizing-migrations" - }, - { - "source": "/docs/guides/database/developing-with-prisma-migrate/squashing-migrations", - "destination": "/docs/guides/migrate/developing-with-prisma-migrate/squashing-migrations" - }, - { - "source": "/docs/guides/database/developing-with-prisma-migrate/generating-down-migrations", - "destination": "/docs/guides/migrate/developing-with-prisma-migrate/generating-down-migrations" - }, - { - "source": "/docs/guides/database/developing-with-prisma-migrate/troubleshooting-development", - "destination": "/docs/guides/migrate/developing-with-prisma-migrate/troubleshooting-development" - }, - { - "source": "/docs/guides/database/developing-with-prisma-migrate/deploy-db.png", - "destination": "/docs/guides/migrate/developing-with-prisma-migrate/deploy-db.png" - }, - { - "source": "/docs/guides/database/developing-with-prisma-migrate/existing-database.png", - "destination": "/docs/guides/migrate/developing-with-prisma-migrate/existing-database.png" - }, - { - "source": "/docs/guides/database/developing-with-prisma-migrate", - "destination": "/docs/guides/migrate/developing-with-prisma-migrate" - }, - { - "source": "/docs/guides/database/developing-with-prisma-migrate/migrate-team-dev.png", - "destination": "/docs/guides/migrate/developing-with-prisma-migrate/migrate-team-dev.png" - }, - { - "source": "/docs/guides/database/developing-with-prisma-migrate/migration-history.png", - "destination": "/docs/guides/migrate/developing-with-prisma-migrate/migration-history.png" - }, - { - "source": "/docs/guides/database/developing-with-prisma-migrate/new-dev-db.png", - "destination": "/docs/guides/migrate/developing-with-prisma-migrate/new-dev-db.png" - }, - { - "source": "/docs/guides/database/seed-database", - "destination": "/docs/guides/migrate/seed-database" - }, - { - "source": "/docs/guides/database/prototyping-schema-db-push", - "destination": "/docs/guides/migrate/prototyping-schema-db-push" - }, - { - "source": "/docs/guides/database/patching-production", - "destination": "/docs/guides/migrate/patching-production" - }, - { - "source": "/docs/guides/database/production-troubleshooting", - "destination": "/docs/guides/migrate/production-troubleshooting" - }, - { - "source": "/docs/guides/database/using-prisma-with-planetscale", - "destination": "/docs/guides/database/planetscale" - }, - { - "source": "/docs/guides/database/using-prisma-with-cockroachdb", - "destination": "/docs/guides/database/cockroachdb" - }, - { - "source": "/docs/guides/database/using-prisma-with-mongodb", - "destination": "/docs/guides/database/mongodb" - }, - { - "source": "/docs/guides/database/multi-schema", - "destination": "/docs/guides/other/multi-schema" - }, - { - "source": "/docs/guides/database/prisma-type-system", - "destination": "/docs/guides/other/prisma-type-system" - }, - { - "source": "/docs/guides/database/troubleshooting-orm/creating-bug-reports", - "destination": "/docs/guides/other/troubleshooting-orm/creating-bug-reports" - }, - { - "source": "/docs/guides/database/troubleshooting-orm/help-articles/autocompletion-in-graphql-resolvers-with-js", - "destination": "/docs/guides/other/troubleshooting-orm/help-articles/autocompletion-in-graphql-resolvers-with-js" - }, - { - "source": "/docs/guides/database/troubleshooting-orm/help-articles/working-with-many-to-many-relations", - "destination": "/docs/guides/other/troubleshooting-orm/help-articles/working-with-many-to-many-relations" - }, - { - "source": "/docs/guides/database/troubleshooting-orm/help-articles/finding-entities-based-on-relation", - "destination": "/docs/guides/other/troubleshooting-orm/help-articles/finding-entities-based-on-relation" - }, - { - "source": "/docs/guides/database/troubleshooting-orm/help-articles/nextjs-prisma-client-dev-practices", - "destination": "/docs/guides/other/troubleshooting-orm/help-articles/nextjs-prisma-client-dev-practices" - }, - { - "source": "/docs/guides/database/troubleshooting-orm/help-articles/nextjs-prisma-client-monorepo", - "destination": "/docs/guides/other/troubleshooting-orm/help-articles/nextjs-prisma-client-monorepo" - }, - { - "source": "/docs/guides/database/troubleshooting-orm/help-articles/pkg-issue", - "destination": "/docs/guides/other/troubleshooting-orm/help-articles/pkg-issue" - }, - { - "source": "/docs/guides/database/troubleshooting-orm/help-articles/comparing-columns-through-raw-queries", - "destination": "/docs/guides/other/troubleshooting-orm/help-articles/comparing-columns-through-raw-queries" - }, - { - "source": "/docs/guides/database/troubleshooting-orm/help-articles", - "destination": "/docs/guides/other/troubleshooting-orm/help-articles" - }, - { - "source": "/docs/guides/database/troubleshooting-orm/help-articles/prisma-autocompletion-in-js.png", - "destination": "/docs/guides/other/troubleshooting-orm/help-articles/prisma-autocompletion-in-js.png" - }, - { - "source": "/docs/guides/database/troubleshooting-orm/help-articles/unwanted-autocomplete-values-in-vscode.png", - "destination": "/docs/guides/other/troubleshooting-orm/help-articles/unwanted-autocomplete-values-in-vscode.png" - }, - { - "source": "/docs/guides/database/troubleshooting-orm", - "destination": "/docs/guides/other/troubleshooting-orm" - }, - { - "source": "/docs/guides/database/advanced-database-tasks/data-validation/postgresql", - "destination": "/docs/guides/other/advanced-database-tasks/data-validation/postgresql" - }, - { - "source": "/docs/guides/database/advanced-database-tasks/data-validation", - "destination": "/docs/guides/other/advanced-database-tasks/data-validation" - }, - { - "source": "/docs/guides/database/advanced-database-tasks", - "destination": "/docs/guides/other/advanced-database-tasks" - }, - { - "source": "/docs/concepts/components/prisma-cli/installation", - "destination": "/docs/reference/api-reference/command-reference#installation" - }, - { - "source": "/docs/guides/other/troubleshooting-orm/help-articles/finding-entities-based-on-relation", - "destination": "/docs/concepts/components/prisma-client/relation-queries#filter-on-presence-of-related-records" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/connect-your-database-typescript-postgres", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/connect-your-database-typescript-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/connect-your-database-node-postgres", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/connect-your-database-node-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/using-prisma-migrate-typescript-postgres", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/using-prisma-migrate-typescript-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/using-prisma-migrate-node-postgres", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/using-prisma-migrate-node-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/install-prisma-client-typescript-postgres", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/install-prisma-client-typescript-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/install-prisma-client-node-postgres", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/install-prisma-client-node-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/querying-the-database-typescript-postgres", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/querying-the-database-typescript-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/querying-the-database-node-postgres", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/querying-the-database-node-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/next-steps-typescript-postgres", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/next-steps-typescript-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/next-steps-node-postgres", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/next-steps-node-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases-typescript-postgres", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases-typescript-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases-node-postgres", - "destination": "/docs/getting-started/setup-prisma/start-from-scratch/relational-databases-node-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/connect-your-database-typescript-postgres", - "destination": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/connect-your-database-typescript-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/connect-your-database-node-postgres", - "destination": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/connect-your-database-node-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/introspection-typescript-postgres", - "destination": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/introspection-typescript-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/introspection-node-postgres", - "destination": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/introspection-node-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/baseline-your-database-typescript-postgres", - "destination": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/baseline-your-database-typescript-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/baseline-your-database-node-postgres", - "destination": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/baseline-your-database-node-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/install-prisma-client-typescript-postgres", - "destination": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/install-prisma-client-typescript-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/install-prisma-client-node-postgres", - "destination": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/install-prisma-client-node-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/querying-the-database-typescript-postgres", - "destination": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/querying-the-database-typescript-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/querying-the-database-node-postgres", - "destination": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/querying-the-database-node-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/evolve-your-schema-typescript-postgres", - "destination": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/evolve-your-schema-typescript-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/evolve-your-schema-node-postgres", - "destination": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/evolve-your-schema-node-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/next-steps-typescript-postgres", - "destination": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/next-steps-typescript-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/next-steps-node-postgres", - "destination": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/next-steps-node-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases-typescript-postgres", - "destination": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases-typescript-postgresql" - }, - { - "source": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases-node-postgres", - "destination": "/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases-node-postgresql" - }, - { - "source": "/docs/guides/upgrade-guides/upgrade-from-prisma-1/schema-incompatibilities-postgres", - "destination": "/docs/guides/upgrade-guides/upgrade-from-prisma-1/schema-incompatibilities-postgresql" - }, - { - "source": "/docs/guides/upgrade-guides/upgrade-from-prisma-1/upgrading-the-prisma-layer-postgres", - "destination": "/docs/guides/upgrade-guides/upgrade-from-prisma-1/upgrading-the-prisma-layer-postgresql" - }, - { - "source": "/docs/guides/migrate/deployment/deploy-database-changes-with-prisma-migrate", - "destination": "/docs/guides/deployment/deploy-database-changes-with-prisma-migrate" - }, - { - "source": "/docs/guides/deployment/deployment", - "destination": "/docs/guides/deployment/deploy-prisma" - }, - { - "source": "/docs/guides/deployment/deployment-guides/deploying-to-heroku", - "destination": "/docs/guides/deployment/traditional/deploy-to-heroku" - }, - { - "source": "/docs/guides/deployment/deployment-guides/deploying-to-koyeb", - "destination": "/docs/guides/deployment/traditional/deploy-to-koyeb" - }, - { - "source": "/docs/guides/deployment/deployment-guides", - "destination": "/docs/guides/deployment/deploy-prisma" - }, - { - "source": "/docs/guides/deployment/deployment-guides/deploying-to-azure-functions", - "destination": "/docs/guides/deployment/serverless/deploy-to-azure-functions" - }, - { - "source": "/docs/guides/deployment/deployment-guides/deploying-to-vercel", - "destination": "/docs/guides/deployment/serverless/deploy-to-vercel" - }, - { - "source": "/docs/guides/deployment/deployment-guides/deploying-to-aws-lambda", - "destination": "/docs/guides/deployment/serverless/deploy-to-aws-lambda" - }, - { - "source": "/docs/guides/deployment/deployment-guides/deploying-to-netlify", - "destination": "/docs/guides/deployment/serverless/deploy-to-netlify" - }, - { - "source": "/docs/guides/deployment/deployment-guides/deploying-to-deno-deploy", - "destination": "/docs/guides/deployment/edge/deploy-to-deno-deploy" - }, - { - "source": "/docs/guides/deployment/deployment-guides/deploying-to-cloudflare-workers", - "destination": "/docs/guides/deployment/edge/deploy-to-cloudflare-workers" - }, - { - "source": "/docs/guides/deployment/deployment-guides/deploying-migrations-from-a-local-environment", - "destination": "/docs/guides/deployment/deploy-migrations-from-a-local-environment" - }, - { - "source": "/docs/guides/deployment/deployment-guides/caveats-when-deploying-to-aws-platforms", - "destination": "/docs/guides/deployment/caveats-when-deploying-to-aws-platforms" - }, - { - "source": "/docs/guides/deployment/deployment-guides/deploying-to-a-different-os", - "destination": "/docs/guides/deployment/deploy-to-a-different-os" - }, - { - "source": "/docs/guides/deployment/deployment-guides/use-prisma-with-serverless-framework", - "destination": "/docs/guides/deployment/serverless/deploy-to-aws-lambda" - }, - { - "source": "/docs/guides/deployment/use-prisma-with-serverless-framework", - "destination": "/docs/guides/deployment/serverless/deploy-to-aws-lambda" - }, - { - "source": "/docs/data-platform/about/releases", - "destination": "/docs/data-platform/platform-console/maturity-levels" - }, - { - "source": "/docs/data-platform/about/limits-and-status", - "destination": "/docs/data-platform/classic-projects/about/limits-and-status" - }, - { - "source": "/docs/data-platform/about", - "destination": "/docs/data-platform/classic-projects/about" - }, - { - "source": "/docs/data-platform/data-proxy/use-data-proxy", - "destination": "/docs/data-platform/classic-projects/data-proxy/use-data-proxy" - }, - { - "source": "/docs/data-platform/data-proxy/deploy", - "destination": "/docs/data-platform/classic-projects/data-proxy/deploy" - }, - { - "source": "/docs/data-platform/data-proxy/prisma-cli-with-data-proxy", - "destination": "/docs/data-platform/classic-projects/data-proxy/prisma-cli-with-data-proxy" - }, - { - "source": "/docs/data-platform/data-proxy/considerations-limitations", - "destination": "/docs/data-platform/classic-projects/data-proxy/considerations-limitations" - }, - { - "source": "/docs/data-platform/data-proxy", - "destination": "/docs/data-platform/classic-projects/data-proxy" - }, - { - "source": "/docs/data-platform/static-ips", - "destination": "/docs/data-platform/classic-projects/platform/static-ips" - }, - { - "source": "/docs/data-platform/projects/create", - "destination": "/docs/data-platform/classic-projects/platform/projects/create" - }, - { - "source": "/docs/data-platform/projects/edit-settings", - "destination": "/docs/data-platform/classic-projects/platform/projects/edit-settings" - }, - { - "source": "/docs/data-platform/projects/delete-project", - "destination": "/docs/data-platform/classic-projects/platform/projects/delete-project" - }, - { - "source": "/docs/data-platform/projects", - "destination": "/docs/data-platform/classic-projects/platform/projects" - }, - { - "source": "/docs/data-platform/environments/view-all", - "destination": "/docs/data-platform/classic-projects/platform/environments/view-all" - }, - { - "source": "/docs/data-platform/environments/create", - "destination": "/docs/data-platform/classic-projects/platform/environments/create" - }, - { - "source": "/docs/data-platform/environments/edit-settings/edit-name-and-url-handle", - "destination": "/docs/data-platform/classic-projects/platform/environments/edit-settings/edit-name-and-url-handle" - }, - { - "source": "/docs/data-platform/environments/edit-settings/change-default-environment", - "destination": "/docs/data-platform/classic-projects/platform/environments/edit-settings/change-default-environment" - }, - { - "source": "/docs/data-platform/environments/edit-settings", - "destination": "/docs/data-platform/classic-projects/platform/environments/edit-settings" - }, - { - "source": "/docs/data-platform/environments/delete", - "destination": "/docs/data-platform/classic-projects/platform/environments/delete" - }, - { - "source": "/docs/data-platform/environments", - "destination": "/docs/data-platform/classic-projects/platform/environments" - }, - { - "source": "/docs/data-platform/members/roles-permissions", - "destination": "/docs/data-platform/classic-projects/platform/members/roles-permissions" - }, - { - "source": "/docs/data-platform/members/add", - "destination": "/docs/data-platform/classic-projects/platform/members/add" - }, - { - "source": "/docs/data-platform/members/change-role", - "destination": "/docs/data-platform/classic-projects/platform/members/change-role" - }, - { - "source": "/docs/data-platform/members/remove", - "destination": "/docs/data-platform/classic-projects/platform/members/remove" - }, - { - "source": "/docs/data-platform/members", - "destination": "/docs/data-platform/classic-projects/platform/members" - }, - { - "source": "/docs/data-platform/data-browser", - "destination": "/docs/data-platform/classic-projects/platform/data-browser" - }, - { - "source": "/docs/data-platform/query-console", - "destination": "/docs/data-platform/classic-projects/platform/query-console" - }, - { - "source": "/docs/data-platform/schema-viewer", - "destination": "/docs/data-platform/classic-projects/platform/schema-viewer" - }, - { - "source": "/docs/data-platform/account", - "destination": "/docs/data-platform/classic-projects/platform/account" - }, - { - "source": "/docs/data-platform/github-integration", - "destination": "/docs/data-platform/classic-projects/platform/github-integration" - }, - { - "source": "/docs/data-platform/billing/plans-and-quotas", - "destination": "/docs/data-platform/classic-projects/platform/billing/plans-and-quotas" - }, - { - "source": "/docs/data-platform/billing/manage-plans", - "destination": "/docs/data-platform/classic-projects/platform/billing/manage-plans" - }, - { - "source": "/docs/data-platform/billing/invoices", - "destination": "/docs/data-platform/classic-projects/platform/billing/invoices" - }, - { - "source": "/docs/data-platform/billing/data-proxy-usage", - "destination": "/docs/data-platform/classic-projects/platform/billing/data-proxy-usage" - }, - { - "source": "/docs/data-platform/billing/payment-method-and-billing-information", - "destination": "/docs/data-platform/classic-projects/platform/billing/payment-method-and-billing-information" - }, - { - "source": "/docs/data-platform/billing", - "destination": "/docs/data-platform/classic-projects/platform/billing" - }, - { - "source": "/docs/data-platform/troubleshooting/connection-to-db-timed-out", - "destination": "/docs/data-platform/classic-projects/platform/troubleshooting/connection-to-db-timed-out" - }, - { - "source": "/docs/data-platform/troubleshooting/cannot-change-db-of-env", - "destination": "/docs/data-platform/classic-projects/platform/troubleshooting/cannot-change-db-of-env" - }, - { - "source": "/docs/data-platform/troubleshooting/cannot-edit-schema-file", - "destination": "/docs/data-platform/classic-projects/platform/troubleshooting/cannot-edit-schema-file" - }, - { - "source": "/docs/data-platform/troubleshooting/schema-file-does-not-update", - "destination": "/docs/data-platform/classic-projects/platform/troubleshooting/schema-file-does-not-update" - }, - { - "source": "/docs/data-platform/troubleshooting", - "destination": "/docs/data-platform/platform-console/support" - }, - { - "source": "/docs/data-platform/contact-support", - "destination": "/docs/data-platform/platform-console/support" - }, - { - "source": "/docs/data-platform/cloud-projects/platform/account", - "destination": "/docs/data-platform/platform-console/concepts" - }, - { - "source": "/docs/data-platform/cloud-projects/platform/projects", - "destination": "/docs/data-platform/platform-console/concepts/projects" - }, - { - "source": "/docs/data-platform/cloud-projects/platform/organizations", - "destination": "/docs/data-platform/platform-console/concepts/workspaces" - }, - { - "source": "/docs/data-platform/cloud-projects/platform/billing", - "destination": "/docs/data-platform/platform-console/concepts/workspaces" - }, - { - "source": "/docs/data-platform/cloud-projects/platform", - "destination": "/docs/data-platform/platform-console" - }, - { - "source": "/docs/data-platform/cloud-projects/faq", - "destination": "/docs/data-platform/platform-console/limits" - }, - { - "source": "/docs/data-platform/cloud-projects/support", - "destination": "/docs/data-platform/platform-console/support" - }, - { - "source": "/docs/data-platform/cloud-projects/about-cloud-projects", - "destination": "/docs/data-platform/platform-console/about" - }, - { - "source": "/docs/data-platform/cloud-projects", - "destination": "/docs/data-platform/platform-console" - }, - { - "source": "/docs/data-platform/classic-projects/about/releases", - "destination": "/docs/data-platform/platform-console/maturity-levels" - }, - { - "source": "/docs/data-platform/classic-projects/about/limits-and-status", - "destination": "/docs/data-platform/platform-console/limits" - }, - { - "source": "/docs/data-platform/classic-projects/about", - "destination": "/docs/data-platform/platform-console/about" - }, - { - "source": "/docs/data-platform/classic-projects/contact-support", - "destination": "/docs/data-platform/platform-console/support" - }, - { - "source": "/docs/guides/performance-and-optimization/connection-management/configure-pg-bouncer", - "destination": "/docs/guides/performance-and-optimization/connection-management/configure-for-external-connection-pooler" - }, - { - "source": "/docs/data-platform/classic-projects/platform/billing", - "destination": "https://www.prisma.io/pricing" - }, - { - "source": "/docs/data-platform/accelerate/testing", - "destination": "/docs/data-platform/accelerate/evaluating" - }, - { - "source": "/docs/data-platform/classic-projects/platform/billing/plans-and-quotas", - "destination": "https://www.prisma.io/pricing" - }, - { - "source": "/docs/data-platform/classic-projects/platform/billing/manage-plans", - "destination": "https://www.prisma.io/pricing" - }, - { - "source": "/docs/concepts/components/prisma-schema", - "destination": "/docs/orm/prisma-schema" - }, - { - "source": "/docs/concepts/components/prisma-client/working-with-prismaclient", - "destination": "/docs/orm/prisma-client" - }, - { - "source": "/docs/concepts/components/prisma-client/transactions", - "destination": "/docs/orm/prisma-client/queries/transactions" - }, - { - "source": "/docs/concepts/components/prisma-migrate/get-started", - "destination": "/docs/orm/prisma-migrate/getting-started" - }, - { - "source": "/docs/concepts/components/prisma-migrate/db-push", - "destination": "/docs/orm/prisma-migrate/workflows/prototyping-your-schema" - }, - { - "source": "/docs/concepts/components/prisma-cli", - "destination": "/docs/orm/tools/prisma-cli" - }, - { - "source": "/docs/concepts/components/prisma-engines", - "destination": "/docs/orm/more/under-the-hood/engines" - }, - { - "source": "/docs/concepts/database-connectors/mongodb", - "destination": "/docs/orm/" - }, - { - "source": "/docs/concepts/database-connectors", - "destination": "/docs/orm/overview" - }, - { - "source": "/docs/concepts/more/telemetry", - "destination": "/docs/orm/tools/prisma-cli#telemetry" - }, - { - "source": "/docs/concepts/more", - "destination": "/docs/orm/more" - }, - { - "source": "/docs/concepts", - "destination": "/docs/orm" - }, - { - "source": "/docs/concepts/overview/why-prisma", - "destination": "/docs/orm/overview/introduction/why-prisma" - }, - { - "source": "/docs/concepts/overview/should-you-use-prisma", - "destination": "/docs/orm/overview/introduction/should-you-use-prisma" - }, - { - "source": "/docs/concepts/overview/what-is-prisma/data-modeling", - "destination": "/docs/orm/overview/introduction/data-modeling" - }, - { - "source": "/docs/concepts/overview/what-is-prisma", - "destination": "/docs/orm/overview/introduction/what-is-prisma" - }, - { - "source": "/docs/concepts/components/database-drivers", - "destination": "/docs/orm/overview/databases/database-drivers" - }, - { - "source": "/docs/concepts/database-connectors/postgresql", - "destination": "/docs/orm/overview/databases/postgresql" - }, - { - "source": "/docs/concepts/database-connectors/mysql", - "destination": "/docs/orm/overview/databases/mysql" - }, - { - "source": "/docs/concepts/database-connectors/sqlite", - "destination": "/docs/orm/overview/databases/sqlite" - }, - { - "source": "/docs/guides/database/mongodb", - "destination": "/docs/orm/overview/databases/mongodb" - }, - { - "source": "/docs/concepts/database-connectors/cockroachdb", - "destination": "/docs/orm/overview/databases/cockroachdb" - }, - { - "source": "/docs/concepts/database-connectors/sql-server/sql-server-local", - "destination": "/docs/orm/overview/databases/sql-server/sql-server-local" - }, - { - "source": "/docs/concepts/database-connectors/sql-server/sql-server-docker", - "destination": "/docs/orm/overview/databases/sql-server/sql-server-docker" - }, - { - "source": "/docs/concepts/database-connectors/sql-server", - "destination": "/docs/orm/overview/databases/sql-server" - }, - { - "source": "/docs/guides/database/planetscale", - "destination": "/docs/orm/overview/databases/planetscale" - }, - { - "source": "/docs/guides/database/cockroachdb", - "destination": "/docs/orm/overview/databases/cockroachdb" - }, - { - "source": "/docs/guides/database/supabase", - "destination": "/docs/orm/overview/databases/supabase" - }, - { - "source": "/docs/guides/database/neon", - "destination": "/docs/orm/overview/databases/neon" - }, - { - "source": "/docs/guides/database/turso", - "destination": "/docs/orm/overview/databases/turso" - }, - { - "source": "/docs/guides/database/images/embedded-replica-create-replica.png", - "destination": "/docs/orm/overview/databases/images/embedded-replica-create-replica.png" - }, - { - "source": "/docs/guides/database/images/embedded-replica-read.png", - "destination": "/docs/orm/overview/databases/images/embedded-replica-read.png" - }, - { - "source": "/docs/guides/database/images/embedded-replica-remote-read.png", - "destination": "/docs/orm/overview/databases/images/embedded-replica-remote-read.png" - }, - { - "source": "/docs/guides/database/images/embedded-replica-write-propagation.png", - "destination": "/docs/orm/overview/databases/images/embedded-replica-write-propagation.png" - }, - { - "source": "/docs/concepts/database-connectors/mongodb.png", - "destination": "/docs/orm/overview/databases/mongodb.png" - }, - { - "source": "/docs/concepts/database-connectors/mysql-connection-string.png", - "destination": "/docs/orm/overview/databases/mysql-connection-string.png" - }, - { - "source": "/docs/concepts/database-connectors/postgresql-connection-string.png", - "destination": "/docs/orm/overview/databases/postgresql-connection-string.png" - }, - { - "source": "/docs/concepts/overview/node-js-db-tools-tradeoffs.png", - "destination": "/docs/orm/overview/introduction/node-js-db-tools-tradeoffs.png" - }, - { - "source": "/docs/concepts/overview/prisma-makes-devs-productive.png", - "destination": "/docs/orm/overview/introduction/prisma-makes-devs-productive.png" - }, - { - "source": "/docs/concepts/overview/prisma-rest-apis.png", - "destination": "/docs/orm/overview/introduction/prisma-rest-apis.png" - }, - { - "source": "/docs/concepts/overview/user-post-relation-1-n.png", - "destination": "/docs/orm/overview/introduction/user-post-relation-1-n.png" - }, - { - "source": "/docs/concepts/overview/user-table.png", - "destination": "/docs/orm/overview/introduction/user-table.png" - }, - { - "source": "/docs/concepts/overview/user-table.svg", - "destination": "/docs/orm/overview/introduction/user-table.svg" - }, - { - "source": "/docs/concepts/overview/prisma-in-your-stack/rest.md", - "destination": "/docs/orm/overview/prisma-in-your-stack/rest.md" - }, - { - "source": "/docs/concepts/overview/prisma-in-your-stack/graphql.md", - "destination": "/docs/orm/overview/prisma-in-your-stack/graphql.md" - }, - { - "source": "/docs/concepts/overview/prisma-in-your-stack/fullstack", - "destination": "/docs/orm/overview/prisma-in-your-stack/fullstack" - }, - { - "source": "/docs/concepts/overview/prisma-in-your-stack/is-prisma-an-orm", - "destination": "/docs/orm/overview/prisma-in-your-stack/is-prisma-an-orm" - }, - { - "source": "/docs/concepts/overview/prisma-in-your-stack", - "destination": "/docs/orm/overview/prisma-in-your-stack" - }, - { - "source": "/docs/concepts/overview", - "destination": "/docs/orm/overview" - }, - { - "source": "/docs/concepts/components/prisma-client/working-with-prismaclient/generating-prisma-client", - "destination": "/docs/orm/prisma-client/setup-and-configuration/generating-prisma-client" - }, - { - "source": "/docs/concepts/components/prisma-client/working-with-prismaclient/instantiate-prisma-client", - "destination": "/docs/orm/prisma-client/setup-and-configuration/instantiate-prisma-client" - }, - { - "source": "/docs/concepts/components/prisma-client/read-replicas", - "destination": "/docs/orm/prisma-client/setup-and-configuration/read-replicas" - }, - { - "source": "/docs/concepts/components/prisma-client/working-with-prismaclient/use-custom-model-and-field-names", - "destination": "/docs/orm/prisma-client/setup-and-configuration/custom-model-and-field-names" - }, - { - "source": "/docs/concepts/components/prisma-client/working-with-prismaclient/logging", - "destination": "/docs/orm/prisma-client/observability-and-logging/logging" - }, - { - "source": "/docs/concepts/components/prisma-client/working-with-prismaclient/error-formatting", - "destination": "/docs/orm/prisma-client/setup-and-configuration/error-formatting" - }, - { - "source": "/docs/concepts/components/prisma-client/database-polyfills", - "destination": "/docs/orm/prisma-client/setup-and-configuration/database-polyfills" - }, - { - "source": "/docs/concepts/components/prisma-client/working-with-prismaclient/connection-management", - "destination": "/docs/orm/prisma-client/setup-and-configuration/databases-connections/connection-management" - }, - { - "source": "/docs/concepts/components/prisma-client/working-with-prismaclient/connection-pool", - "destination": "/docs/orm/prisma-client/setup-and-configuration/databases-connections/connection-pool" - }, - { - "source": "/docs/guides/performance-and-optimization/connection-management/configure-for-external-connection-pooler", - "destination": "/docs/orm/prisma-client/setup-and-configuration/databases-connections/pgbouncer" - }, - { - "source": "/docs/guides/performance-and-optimization/connection-management", - "destination": "/docs/orm/prisma-client/setup-and-configuration/databases-connections" - }, - { - "source": "/docs/guides/performance-and-optimization/connection-management/serverless-connections-2.png", - "destination": "/docs/orm/prisma-client/setup-and-configuration/databases-connections/serverless-connections-2.png" - }, - { - "source": "/docs/guides/performance-and-optimization/connection-management/serverless-connections.png", - "destination": "/docs/orm/prisma-client/setup-and-configuration/databases-connections/serverless-connections.png" - }, - { - "source": "/docs/concepts/components/prisma-client/working-with-prismaclient/prisma-client-generation-workflow.png", - "destination": "/docs/orm/prisma-client/setup-and-configuration/prisma-client-generation-workflow.png" - }, - { - "source": "/docs/concepts/components/prisma-client/working-with-prismaclient/prisma-client-node-module.png", - "destination": "/docs/orm/prisma-client/setup-and-configuration/prisma-client-node-module.png" - }, - { - "source": "/docs/concepts/components/prisma-client/crud", - "destination": "/docs/orm/prisma-client/queries/crud" - }, - { - "source": "/docs/concepts/components/prisma-client/select-fields", - "destination": "/docs/orm/prisma-client/queries/select-fields" - }, - { - "source": "/docs/concepts/components/prisma-client/relation-queries", - "destination": "/docs/orm/prisma-client/queries/relation-queries" - }, - { - "source": "/docs/concepts/components/prisma-client/filtering-and-sorting", - "destination": "/docs/orm/prisma-client/queries/filtering-and-sorting" - }, - { - "source": "/docs/concepts/components/prisma-client/pagination", - "destination": "/docs/orm/prisma-client/queries/pagination" - }, - { - "source": "/docs/concepts/components/prisma-client/aggregation-grouping-summarizing", - "destination": "/docs/orm/prisma-client/queries/aggregation-grouping-summarizing" - }, - { - "source": "/docs/guides/performance-and-optimization/prisma-client-transactions-guide", - "destination": "/docs/orm/prisma-client/queries/transactions" - }, - { - "source": "/docs/concepts/components/prisma-client/full-text-search", - "destination": "/docs/orm/prisma-client/queries/full-text-search" - }, - { - "source": "/docs/concepts/components/prisma-client/custom-validation", - "destination": "/docs/orm/prisma-client/queries/custom-validation" - }, - { - "source": "/docs/concepts/components/prisma-client/computed-fields", - "destination": "/docs/orm/prisma-client/queries/computed-fields" - }, - { - "source": "/docs/concepts/components/prisma-client/excluding-fields", - "destination": "/docs/orm/prisma-client/queries/excluding-fields" - }, - { - "source": "/docs/concepts/components/prisma-client/custom-models", - "destination": "/docs/orm/prisma-client/queries/custom-models" - }, - { - "source": "/docs/concepts/components/prisma-client/case-sensitivity", - "destination": "/docs/orm/prisma-client/queries/case-sensitivity" - }, - { - "source": "/docs/concepts/components/prisma-client/raw-database-access", - "destination": "/docs/orm/prisma-client/queries/raw-database-access/raw-queries" - }, - { - "source": "/docs/guides/other/advanced-database-tasks/typesafe-raw-sql/safeql", - "destination": "/docs/orm/prisma-client/queries/raw-database-access/custom-and-type-safe-queries" - }, - { - "source": "/docs/guides/performance-and-optimization/query-optimization-performance", - "destination": "/docs/orm/prisma-client/queries/query-optimization-performance" - }, - { - "source": "/docs/concepts/components/prisma-client/composite-types", - "destination": "/docs/orm/prisma-client/special-fields-and-types/composite-types" - }, - { - "source": "/docs/concepts/components/prisma-client/null-and-undefined", - "destination": "/docs/orm/prisma-client/special-fields-and-types/null-and-undefined" - }, - { - "source": "/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields", - "destination": "/docs/orm/prisma-client/special-fields-and-types/working-with-json-fields" - }, - { - "source": "/docs/concepts/components/prisma-client/working-with-fields/working-with-scalar-lists-arrays", - "destination": "/docs/orm/prisma-client/special-fields-and-types/working-with-scalar-lists-arrays" - }, - { - "source": "/docs/concepts/components/prisma-client/working-with-fields/working-with-composite-ids-and-constraints", - "destination": "/docs/orm/prisma-client/special-fields-and-types/working-with-composite-ids-and-constraints" - }, - { - "source": "/docs/concepts/components/prisma-client/working-with-fields", - "destination": "/docs/orm/prisma-client/special-fields-and-types" - }, - { - "source": "/docs/concepts/components/prisma-client/client-extensions/model", - "destination": "/docs/orm/prisma-client/client-extensions/model" - }, - { - "source": "/docs/concepts/components/prisma-client/client-extensions/client", - "destination": "/docs/orm/prisma-client/client-extensions/client" - }, - { - "source": "/docs/concepts/components/prisma-client/client-extensions/query", - "destination": "/docs/orm/prisma-client/client-extensions/query" - }, - { - "source": "/docs/concepts/components/prisma-client/client-extensions/result", - "destination": "/docs/orm/prisma-client/client-extensions/result" - }, - { - "source": "/docs/concepts/components/prisma-client/client-extensions/shared-extensions", - "destination": "/docs/orm/prisma-client/client-extensions/shared-extensions" - }, - { - "source": "/docs/concepts/components/prisma-client/client-extensions/type-utilities", - "destination": "/docs/orm/prisma-client/client-extensions/type-utilities" - }, - { - "source": "/docs/concepts/components/prisma-client/client-extensions/extension-examples", - "destination": "/docs/orm/prisma-client/client-extensions/extension-examples" - }, - { - "source": "/docs/concepts/components/prisma-client/middleware/soft-delete-middleware", - "destination": "/docs/orm/prisma-client/client-extensions/middleware/soft-delete-middleware" - }, - { - "source": "/docs/concepts/components/prisma-client/middleware/logging-middleware", - "destination": "/docs/orm/prisma-client/client-extensions/middleware/logging-middleware" - }, - { - "source": "/docs/concepts/components/prisma-client/middleware/session-data-middleware", - "destination": "/docs/orm/prisma-client/client-extensions/middleware/session-data-middleware" - }, - { - "source": "/docs/concepts/components/prisma-client/middleware", - "destination": "/docs/orm/prisma-client/client-extensions/middleware" - }, - { - "source": "/docs/concepts/components/prisma-client/client-extensions", - "destination": "/docs/orm/prisma-client/client-extensions" - }, - { - "source": "/docs/concepts/components/prisma-client/advanced-type-safety/operating-against-partial-structures-of-model-types", - "destination": "/docs/orm/prisma-client/type-safety/operating-against-partial-structures-of-model-types" - }, - { - "source": "/docs/guides/other/prisma-type-system", - "destination": "/docs/orm/prisma-client/type-safety/prisma-type-system" - }, - { - "source": "/docs/concepts/components/prisma-client/advanced-type-safety/prisma-validator", - "destination": "/docs/orm/prisma-client/type-safety/prisma-validator" - }, - { - "source": "/docs/concepts/components/prisma-client/advanced-type-safety", - "destination": "/docs/orm/prisma-client/type-safety" - }, - { - "source": "/docs/guides/testing/unit-testing", - "destination": "/docs/orm/prisma-client/testing/unit-testing" - }, - { - "source": "/docs/guides/testing/integration-testing", - "destination": "/docs/orm/prisma-client/testing/integration-testing" - }, - { - "source": "/docs/guides/testing/Docker_Diagram_V1.png", - "destination": "/docs/orm/prisma-client/testing/Docker_Diagram_V1.png" - }, - { - "source": "/docs/guides/testing", - "destination": "/docs/orm/prisma-client/testing" - }, - { - "source": "/docs/guides/deployment/deploy-prisma", - "destination": "/docs/orm/prisma-client/deployment/deploy-prisma" - }, - { - "source": "/docs/guides/deployment/traditional/deploy-to-heroku", - "destination": "/docs/orm/prisma-client/deployment/traditional/deploy-to-heroku" - }, - { - "source": "/docs/guides/deployment/traditional/deploy-to-koyeb", - "destination": "/docs/orm/prisma-client/deployment/traditional/deploy-to-koyeb" - }, - { - "source": "/docs/guides/deployment/traditional/images/heroku-architecture.png", - "destination": "/docs/orm/prisma-client/deployment/traditional/images/heroku-architecture.png" - }, - { - "source": "/docs/guides/deployment/traditional/images/heroku-deployed.png", - "destination": "/docs/orm/prisma-client/deployment/traditional/images/heroku-deployed.png" - }, - { - "source": "/docs/guides/deployment/traditional/images/koyeb-app-creation.png", - "destination": "/docs/orm/prisma-client/deployment/traditional/images/koyeb-app-creation.png" - }, - { - "source": "/docs/guides/deployment/traditional/images/koyeb-architecture.png", - "destination": "/docs/orm/prisma-client/deployment/traditional/images/koyeb-architecture.png" - }, - { - "source": "/docs/guides/deployment/traditional/images/koyeb-deployed.png", - "destination": "/docs/orm/prisma-client/deployment/traditional/images/koyeb-deployed.png" - }, - { - "source": "/docs/guides/deployment/traditional", - "destination": "/docs/orm/prisma-client/deployment/traditional" - }, - { - "source": "/docs/guides/deployment/serverless/deploy-to-azure-functions", - "destination": "/docs/orm/prisma-client/deployment/serverless/deploy-to-azure-functions" - }, - { - "source": "/docs/guides/deployment/serverless/deploy-to-vercel", - "destination": "/docs/orm/prisma-client/deployment/serverless/deploy-to-vercel" - }, - { - "source": "/docs/guides/deployment/serverless/deploy-to-aws-lambda", - "destination": "/docs/orm/prisma-client/deployment/serverless/deploy-to-aws-lambda" - }, - { - "source": "/docs/guides/deployment/serverless/deploy-to-netlify", - "destination": "/docs/orm/prisma-client/deployment/serverless/deploy-to-netlify" - }, - { - "source": "/docs/guides/deployment/serverless/images/00-deploy-to-vercel-architecture.png", - "destination": "/docs/orm/prisma-client/deployment/serverless/images/00-deploy-to-vercel-architecture.png" - }, - { - "source": "/docs/guides/deployment/serverless/images/10-deploy-to-vercel-deploy-button.png", - "destination": "/docs/orm/prisma-client/deployment/serverless/images/10-deploy-to-vercel-deploy-button.png" - }, - { - "source": "/docs/guides/deployment/serverless/images/10-deploy-to-vercel-deploy-button.snagx", - "destination": "/docs/orm/prisma-client/deployment/serverless/images/10-deploy-to-vercel-deploy-button.snagx" - }, - { - "source": "/docs/guides/deployment/serverless/images/20-deploy-to-vercel-select-github.png", - "destination": "/docs/orm/prisma-client/deployment/serverless/images/20-deploy-to-vercel-select-github.png" - }, - { - "source": "/docs/guides/deployment/serverless/images/20-deploy-to-vercel-select-github.snagx", - "destination": "/docs/orm/prisma-client/deployment/serverless/images/20-deploy-to-vercel-select-github.snagx" - }, - { - "source": "/docs/guides/deployment/serverless/images/30-deploy-to-vercel-create-git-repo.png", - "destination": "/docs/orm/prisma-client/deployment/serverless/images/30-deploy-to-vercel-create-git-repo.png" - }, - { - "source": "/docs/guides/deployment/serverless/images/30-deploy-to-vercel-create-git-repo.snagx", - "destination": "/docs/orm/prisma-client/deployment/serverless/images/30-deploy-to-vercel-create-git-repo.snagx" - }, - { - "source": "/docs/guides/deployment/serverless/images/40-deploy-to-vercel-configure-project.png", - "destination": "/docs/orm/prisma-client/deployment/serverless/images/40-deploy-to-vercel-configure-project.png" - }, - { - "source": "/docs/guides/deployment/serverless/images/40-deploy-to-vercel-configure-project.snagx", - "destination": "/docs/orm/prisma-client/deployment/serverless/images/40-deploy-to-vercel-configure-project.snagx" - }, - { - "source": "/docs/guides/deployment/serverless/images/50-deploy-to-vercel-success.png", - "destination": "/docs/orm/prisma-client/deployment/serverless/images/50-deploy-to-vercel-success.png" - }, - { - "source": "/docs/guides/deployment/serverless/images/50-deploy-to-vercel-success.snagx", - "destination": "/docs/orm/prisma-client/deployment/serverless/images/50-deploy-to-vercel-success.snagx" - }, - { - "source": "/docs/guides/deployment/serverless/images/60-deploy-to-vercel-preview-environment-variable.png", - "destination": "/docs/orm/prisma-client/deployment/serverless/images/60-deploy-to-vercel-preview-environment-variable.png" - }, - { - "source": "/docs/guides/deployment/serverless/images/60-deploy-to-vercel-preview-environment-variable.snagx", - "destination": "/docs/orm/prisma-client/deployment/serverless/images/60-deploy-to-vercel-preview-environment-variable.snagx" - }, - { - "source": "/docs/guides/deployment/serverless/images/70-deploy-to-vercel-environment-variables.png", - "destination": "/docs/orm/prisma-client/deployment/serverless/images/70-deploy-to-vercel-environment-variables.png" - }, - { - "source": "/docs/guides/deployment/serverless/images/70-deploy-to-vercel-environment-variables.snagx", - "destination": "/docs/orm/prisma-client/deployment/serverless/images/70-deploy-to-vercel-environment-variables.snagx" - }, - { - "source": "/docs/guides/deployment/serverless/images/01-deploy-to-netlify-architecture.png", - "destination": "/docs/orm/prisma-client/deployment/serverless/images/01-deploy-to-netlify-architecture.png" - }, - { - "source": "/docs/guides/deployment/serverless/images/02-deploy-to-netlify-example-repo-click-fork.png", - "destination": "/docs/orm/prisma-client/deployment/serverless/images/02-deploy-to-netlify-example-repo-click-fork.png" - }, - { - "source": "/docs/guides/deployment/serverless/images/02-deploy-to-netlify-example-repo-click-fork.snagx", - "destination": "/docs/orm/prisma-client/deployment/serverless/images/02-deploy-to-netlify-example-repo-click-fork.snagx" - }, - { - "source": "/docs/guides/deployment/serverless/images/03-deploy-to-netlify-example-repo-create-fork-page.png", - "destination": "/docs/orm/prisma-client/deployment/serverless/images/03-deploy-to-netlify-example-repo-create-fork-page.png" - }, - { - "source": "/docs/guides/deployment/serverless/images/03-deploy-to-netlify-example-repo-create-fork-page.snagx", - "destination": "/docs/orm/prisma-client/deployment/serverless/images/03-deploy-to-netlify-example-repo-create-fork-page.snagx" - }, - { - "source": "/docs/guides/deployment/serverless/images/04-deploy-to-netlify-copy-supabase-connection-string.png", - "destination": "/docs/orm/prisma-client/deployment/serverless/images/04-deploy-to-netlify-copy-supabase-connection-string.png" - }, - { - "source": "/docs/guides/deployment/serverless/images/04-deploy-to-netlify-copy-supabase-connection-string.snagx", - "destination": "/docs/orm/prisma-client/deployment/serverless/images/04-deploy-to-netlify-copy-supabase-connection-string.snagx" - }, - { - "source": "/docs/guides/deployment/serverless/images/05-deploy-to-netlify-netlify-init-configure-site.png", - "destination": "/docs/orm/prisma-client/deployment/serverless/images/05-deploy-to-netlify-netlify-init-configure-site.png" - }, - { - "source": "/docs/guides/deployment/serverless/images/05-deploy-to-netlify-netlify-init-configure-site.snagx", - "destination": "/docs/orm/prisma-client/deployment/serverless/images/05-deploy-to-netlify-netlify-init-configure-site.snagx" - }, - { - "source": "/docs/guides/deployment/serverless/images/06-deploy-to-netlify-site-settings.png", - "destination": "/docs/orm/prisma-client/deployment/serverless/images/06-deploy-to-netlify-site-settings.png" - }, - { - "source": "/docs/guides/deployment/serverless/images/06-deploy-to-netlify-site-settings.snagx", - "destination": "/docs/orm/prisma-client/deployment/serverless/images/06-deploy-to-netlify-site-settings.snagx" - }, - { - "source": "/docs/guides/deployment/serverless/images/07-deploy-to-netlify-environment-variables-settings.png", - "destination": "/docs/orm/prisma-client/deployment/serverless/images/07-deploy-to-netlify-environment-variables-settings.png" - }, - { - "source": "/docs/guides/deployment/serverless/images/07-deploy-to-netlify-environment-variables-settings.snagx", - "destination": "/docs/orm/prisma-client/deployment/serverless/images/07-deploy-to-netlify-environment-variables-settings.snagx" - }, - { - "source": "/docs/guides/deployment/serverless/images/08-deploy-to-netlify-application-deployed.png", - "destination": "/docs/orm/prisma-client/deployment/serverless/images/08-deploy-to-netlify-application-deployed.png" - }, - { - "source": "/docs/guides/deployment/serverless/images/08-deploy-to-netlify-application-deployed.snagx", - "destination": "/docs/orm/prisma-client/deployment/serverless/images/08-deploy-to-netlify-application-deployed.snagx" - }, - { - "source": "/docs/guides/deployment/serverless/images/09-deploy-to-netlify-application-deployed-call-result.png", - "destination": "/docs/orm/prisma-client/deployment/serverless/images/09-deploy-to-netlify-application-deployed-call-result.png" - }, - { - "source": "/docs/guides/deployment/serverless/images/09-deploy-to-netlify-application-deployed-call-result.snagx", - "destination": "/docs/orm/prisma-client/deployment/serverless/images/09-deploy-to-netlify-application-deployed-call-result.snagx" - }, - { - "source": "/docs/guides/deployment/serverless", - "destination": "/docs/orm/prisma-client/deployment/serverless" - }, - { - "source": "/docs/concepts/components/prisma-client/module-bundlers", - "destination": "/docs/orm/prisma-client/deployment/module-bundlers" - }, - { - "source": "/docs/guides/deployment/edge/deploy-to-cloudflare-workers", - "destination": "/docs/orm/prisma-client/deployment/edge/deploy-to-cloudflare-workers" - }, - { - "source": "/docs/guides/deployment/edge/deploy-to-deno-deploy", - "destination": "/docs/orm/prisma-client/deployment/edge/deploy-to-deno-deploy" - }, - { - "source": "/docs/guides/deployment/edge/images/03-import-project.png", - "destination": "/docs/orm/prisma-client/deployment/edge/images/03-import-project.png" - }, - { - "source": "/docs/guides/deployment/edge/images/03-import-project.snagx", - "destination": "/docs/orm/prisma-client/deployment/edge/images/03-import-project.snagx" - }, - { - "source": "/docs/guides/deployment/edge/images/04-connect-db.png", - "destination": "/docs/orm/prisma-client/deployment/edge/images/04-connect-db.png" - }, - { - "source": "/docs/guides/deployment/edge/images/04-connect-db.snagx", - "destination": "/docs/orm/prisma-client/deployment/edge/images/04-connect-db.snagx" - }, - { - "source": "/docs/guides/deployment/edge/images/05-data-proxy.png", - "destination": "/docs/orm/prisma-client/deployment/edge/images/05-data-proxy.png" - }, - { - "source": "/docs/guides/deployment/edge/images/05-data-proxy.snagx", - "destination": "/docs/orm/prisma-client/deployment/edge/images/05-data-proxy.snagx" - }, - { - "source": "/docs/guides/deployment/edge/images/01-create-repo.png", - "destination": "/docs/orm/prisma-client/deployment/edge/images/01-create-repo.png" - }, - { - "source": "/docs/guides/deployment/edge/images/02-deploy-to-deno-project-parameters.png", - "destination": "/docs/orm/prisma-client/deployment/edge/images/02-deploy-to-deno-project-parameters.png" - }, - { - "source": "/docs/guides/deployment/edge/images/02-deploy-to-deno-project-parameters.snagx", - "destination": "/docs/orm/prisma-client/deployment/edge/images/02-deploy-to-deno-project-parameters.snagx" - }, - { - "source": "/docs/guides/deployment/edge", - "destination": "/docs/orm/prisma-client/deployment/edge" - }, - { - "source": "/docs/guides/deployment/deploy-database-changes-with-prisma-migrate", - "destination": "/docs/orm/prisma-client/deployment/deploy-database-changes-with-prisma-migrate" - }, - { - "source": "/docs/guides/deployment/deploy-migrations-from-a-local-environment", - "destination": "/docs/orm/prisma-client/deployment/deploy-migrations-from-a-local-environment" - }, - { - "source": "/docs/guides/deployment/caveats-when-deploying-to-aws-platforms", - "destination": "/docs/orm/prisma-client/deployment/caveats-when-deploying-to-aws-platforms" - }, - { - "source": "/docs/guides/deployment/deploy-to-a-different-os", - "destination": "/docs/orm/prisma-client/deployment/deploy-to-a-different-os" - }, - { - "source": "/docs/guides/deployment", - "destination": "/docs/orm/prisma-client/deployment" - }, - { - "source": "/docs/concepts/components/prisma-client/metrics", - "destination": "/docs/orm/prisma-client/observability-and-logging/metrics" - }, - { - "source": "/docs/concepts/components/prisma-client/opentelemetry-tracing", - "destination": "/docs/orm/prisma-client/observability-and-logging/opentelemetry-tracing" - }, - { - "source": "/docs/concepts/components/prisma-client/jaeger.png", - "destination": "/docs/orm/prisma-client/observability-and-logging/jaeger.png" - }, - { - "source": "/docs/concepts/components/prisma-client/trace-diagram.png", - "destination": "/docs/orm/prisma-client/observability-and-logging/trace-diagram.png" - }, - { - "source": "/docs/concepts/components/prisma-client/debugging", - "destination": "/docs/orm/prisma-client/debugging-and-troubleshooting/debugging" - }, - { - "source": "/docs/concepts/components/prisma-client/handling-exceptions-and-errors", - "destination": "/docs/orm/prisma-client/debugging-and-troubleshooting/handling-exceptions-and-errors" - }, - { - "source": "/docs/concepts/components/prisma-client", - "destination": "/docs/orm/prisma-client" - }, - { - "source": "/docs/guides/migrate/developing-with-prisma-migrate/add-prisma-migrate-to-a-project", - "destination": "/docs/orm/prisma-migrate/getting-started" - }, - { - "source": "/docs/concepts/components/prisma-migrate/mental-model", - "destination": "/docs/orm/prisma-migrate/understanding-prisma-migrate/mental-model" - }, - { - "source": "/docs/concepts/components/prisma-migrate/migration-histories", - "destination": "/docs/orm/prisma-migrate/understanding-prisma-migrate/migration-histories" - }, - { - "source": "/docs/concepts/components/prisma-migrate/shadow-database", - "destination": "/docs/orm/prisma-migrate/understanding-prisma-migrate/shadow-database" - }, - { - "source": "/docs/concepts/components/prisma-migrate/prisma-migrate-limitations-issues", - "destination": "/docs/orm/prisma-migrate/understanding-prisma-migrate/limitations-and-known-issues" - }, - { - "source": "/docs/concepts/components/prisma-migrate/legacy-migrate", - "destination": "/docs/orm/prisma-migrate/understanding-prisma-migrate/legacy-migrate" - }, - { - "source": "/docs/concepts/components/prisma-migrate/mental-model-illustrations/database-first-migration-flow.png", - "destination": "/docs/orm/prisma-migrate/understanding-prisma-migrate/mental-model-illustrations/database-first-migration-flow.png" - }, - { - "source": "/docs/concepts/components/prisma-migrate/mental-model-illustrations/db-push-flow.png", - "destination": "/docs/orm/prisma-migrate/understanding-prisma-migrate/mental-model-illustrations/db-push-flow.png" - }, - { - "source": "/docs/concepts/components/prisma-migrate/mental-model-illustrations/entity-first-migration-flow.png", - "destination": "/docs/orm/prisma-migrate/understanding-prisma-migrate/mental-model-illustrations/entity-first-migration-flow.png" - }, - { - "source": "/docs/concepts/components/prisma-migrate/mental-model-illustrations/prisma-migrate-dev-flow.png", - "destination": "/docs/orm/prisma-migrate/understanding-prisma-migrate/mental-model-illustrations/prisma-migrate-dev-flow.png" - }, - { - "source": "/docs/concepts/components/prisma-migrate/mental-model-illustrations/prisma-migrate-diff-flow.png", - "destination": "/docs/orm/prisma-migrate/understanding-prisma-migrate/mental-model-illustrations/prisma-migrate-diff-flow.png" - }, - { - "source": "/docs/concepts/components/prisma-migrate/mental-model-illustrations/prisma-migrate-lifecycle.png", - "destination": "/docs/orm/prisma-migrate/understanding-prisma-migrate/mental-model-illustrations/prisma-migrate-lifecycle.png" - }, - { - "source": "/docs/concepts/components/prisma-migrate/mental-model-illustrations/prisma-migrate-state-mgt.png", - "destination": "/docs/orm/prisma-migrate/understanding-prisma-migrate/mental-model-illustrations/prisma-migrate-state-mgt.png" - }, - { - "source": "/docs/concepts/components/prisma-migrate/migrate-mapping.png", - "destination": "/docs/orm/prisma-migrate/understanding-prisma-migrate/migrate-mapping.png" - }, - { - "source": "/docs/concepts/components/prisma-migrate/shadow-database.png", - "destination": "/docs/orm/prisma-migrate/understanding-prisma-migrate/shadow-database.png" - }, - { - "source": "/docs/concepts/components/prisma-migrate/shadow-db.png", - "destination": "/docs/orm/prisma-migrate/understanding-prisma-migrate/shadow-db.png" - }, - { - "source": "/docs/guides/migrate/seed-database", - "destination": "/docs/orm/prisma-migrate/workflows/seeding" - }, - { - "source": "/docs/guides/migrate/developing-with-prisma-migrate/team-development", - "destination": "/docs/orm/prisma-migrate/workflows/team-development" - }, - { - "source": "/docs/concepts/components/prisma-migrate/supported-types-and-db-features", - "destination": "/docs/orm/prisma-migrate/workflows/native-database-types" - }, - { - "source": "/docs/guides/migrate/developing-with-prisma-migrate/enable-native-database-functions", - "destination": "/docs/orm/prisma-migrate/workflows/native-database-functions" - }, - { - "source": "/docs/guides/migrate/prototyping-schema-db-push", - "destination": "/docs/orm/prisma-migrate/workflows/prototyping-your-schema" - }, - { - "source": "/docs/guides/migrate/developing-with-prisma-migrate/troubleshooting-development", - "destination": "/docs/orm/prisma-migrate/workflows/troubleshooting" - }, - { - "source": "/docs/guides/migrate/developing-with-prisma-migrate/baselining", - "destination": "/docs/orm/prisma-migrate/workflows/baselining" - }, - { - "source": "/docs/guides/migrate/developing-with-prisma-migrate/customizing-migrations", - "destination": "/docs/orm/prisma-migrate/workflows/customizing-migrations" - }, - { - "source": "/docs/guides/migrate/data-migration", - "destination": "/docs/orm/prisma-migrate/workflows/data-migration" - }, - { - "source": "/docs/guides/migrate/developing-with-prisma-migrate/squashing-migrations", - "destination": "/docs/orm/prisma-migrate/workflows/squashing-migrations" - }, - { - "source": "/docs/guides/migrate/developing-with-prisma-migrate/generating-down-migrations", - "destination": "/docs/orm/prisma-migrate/workflows/generating-down-migrations" - }, - { - "source": "/docs/guides/migrate/production-troubleshooting", - "destination": "/docs/orm/prisma-migrate/workflows/patching-and-hotfixing" - }, - { - "source": "/docs/guides/migrate/developing-with-prisma-migrate/include-unsupported-database-features", - "destination": "/docs/orm/prisma-migrate/workflows/unsupported-database-features" - }, - { - "source": "/docs/concepts/components/prisma-migrate/migrate-development-production", - "destination": "/docs/orm/prisma-migrate/workflows/development-and-production" - }, - { - "source": "/docs/guides/migrate/developing-with-prisma-migrate/deploy-db.png", - "destination": "/docs/orm/prisma-migrate/workflows/deploy-db.png" - }, - { - "source": "/docs/guides/migrate/developing-with-prisma-migrate/existing-database.png", - "destination": "/docs/orm/prisma-migrate/workflows/existing-database.png" - }, - { - "source": "/docs/guides/migrate/developing-with-prisma-migrate/migrate-team-dev.png", - "destination": "/docs/orm/prisma-migrate/workflows/migrate-team-dev.png" - }, - { - "source": "/docs/guides/migrate/developing-with-prisma-migrate/migration-history.png", - "destination": "/docs/orm/prisma-migrate/workflows/migration-history.png" - }, - { - "source": "/docs/guides/migrate/developing-with-prisma-migrate/new-dev-db.png", - "destination": "/docs/orm/prisma-migrate/workflows/new-dev-db.png" - }, - { - "source": "/docs/concepts/components/prisma-migrate", - "destination": "/docs/orm/prisma-migrate" - }, - { - "source": "/docs/concepts/components/prisma-schema/data-sources", - "destination": "/docs/orm/prisma-schema/overview/data-sources" - }, - { - "source": "/docs/concepts/components/prisma-schema/generators", - "destination": "/docs/orm/prisma-schema/overview/generators" - }, - { - "source": "/docs/concepts/components/prisma-schema/data-model", - "destination": "/docs/orm/prisma-schema/data-model/models" - }, - { - "source": "/docs/concepts/components/prisma-schema/relations/one-to-one-relations", - "destination": "/docs/orm/prisma-schema/data-model/relations/one-to-one-relations" - }, - { - "source": "/docs/concepts/components/prisma-schema/relations/one-to-many-relations", - "destination": "/docs/orm/prisma-schema/data-model/relations/one-to-many-relations" - }, - { - "source": "/docs/concepts/components/prisma-schema/relations/many-to-many-relations", - "destination": "/docs/orm/prisma-schema/data-model/relations/many-to-many-relations" - }, - { - "source": "/docs/concepts/components/prisma-schema/relations/self-relations", - "destination": "/docs/orm/prisma-schema/data-model/relations/self-relations" - }, - { - "source": "/docs/concepts/components/prisma-schema/relations/referential-actions/special-rules-for-referential-actions", - "destination": "/docs/orm/prisma-schema/data-model/relations/referential-actions/special-rules-for-referential-actions" - }, - { - "source": "/docs/concepts/components/prisma-schema/relations/referential-actions", - "destination": "/docs/orm/prisma-schema/data-model/relations/referential-actions" - }, - { - "source": "/docs/concepts/components/prisma-schema/relations/relation-mode", - "destination": "/docs/orm/prisma-schema/data-model/relations/relation-mode" - }, - { - "source": "/docs/concepts/components/prisma-schema/relations/troubleshooting-relations", - "destination": "/docs/orm/prisma-schema/data-model/relations/troubleshooting-relations" - }, - { - "source": "/docs/concepts/components/prisma-schema/relations", - "destination": "/docs/orm/prisma-schema/data-model/relations" - }, - { - "source": "/docs/concepts/components/prisma-schema/relations/one-to-many.png", - "destination": "/docs/orm/prisma-schema/data-model/relations/one-to-many.png" - }, - { - "source": "/docs/concepts/components/prisma-schema/relations/quick-fix-index.png", - "destination": "/docs/orm/prisma-schema/data-model/relations/quick-fix-index.png" - }, - { - "source": "/docs/concepts/components/prisma-schema/relations/quick-fix-index.snagx", - "destination": "/docs/orm/prisma-schema/data-model/relations/quick-fix-index.snagx" - }, - { - "source": "/docs/concepts/components/prisma-schema/relations/relations-intro.png", - "destination": "/docs/orm/prisma-schema/data-model/relations/relations-intro.png" - }, - { - "source": "/docs/concepts/components/prisma-schema/relations/sample-schema.png", - "destination": "/docs/orm/prisma-schema/data-model/relations/sample-schema.png" - }, - { - "source": "/docs/concepts/components/prisma-schema/indexes", - "destination": "/docs/orm/prisma-schema/data-model/indexes" - }, - { - "source": "/docs/concepts/components/prisma-schema/views", - "destination": "/docs/orm/prisma-schema/data-model/views" - }, - { - "source": "/docs/concepts/components/prisma-schema/names-in-underlying-database", - "destination": "/docs/orm/prisma-schema/data-model/database-mapping" - }, - { - "source": "/docs/guides/other/multi-schema", - "destination": "/docs/orm/prisma-schema/data-model/multi-schema" - }, - { - "source": "/docs/concepts/components/prisma-schema/features-without-psl-equivalent", - "destination": "/docs/orm/prisma-schema/data-model/unsupported-database-features" - }, - { - "source": "/docs/concepts/components/introspection", - "destination": "/docs/orm/prisma-schema/introspection" - }, - { - "source": "/docs/concepts/components/prisma-schema/postgresql-extensions", - "destination": "/docs/orm/prisma-schema/postgresql-extensions" - }, - { - "source": "/docs/concepts/components/prisma-schema/prisma-schema/relations-intro.png", - "destination": "/docs/orm/prisma-schema/prisma-schema/relations-intro.png" - }, - { - "source": "/docs/concepts/components/prisma-schema/prisma-schema/sample-database.png", - "destination": "/docs/orm/prisma-schema/prisma-schema/sample-database.png" - }, - { - "source": "/docs/concepts/components/prisma-studio", - "destination": "/docs/orm/tools/prisma-studio" - }, - { - "source": "/docs/concepts/components/images/drivers/qe-query-engine-adapter.png", - "destination": "/docs/orm/tools/images/drivers/qe-query-engine-adapter.png" - }, - { - "source": "/docs/concepts/components/images/drivers/qe-query-execution-flow.png", - "destination": "/docs/orm/tools/images/drivers/qe-query-execution-flow.png" - }, - { - "source": "/docs/concepts/components/images/prisma-studio/models-view.png", - "destination": "/docs/orm/tools/images/prisma-studio/models-view.png" - }, - { - "source": "/docs/concepts/components/images/prisma-studio/open-close-models.png", - "destination": "/docs/orm/tools/images/prisma-studio/open-close-models.png" - }, - { - "source": "/docs/concepts/components/images/prisma-studio/model-view-keyboard-shortcuts.png", - "destination": "/docs/orm/tools/images/prisma-studio/model-view-keyboard-shortcuts.png" - }, - { - "source": "/docs/concepts/components/images/prisma-studio/save-multiple-changes.png", - "destination": "/docs/orm/tools/images/prisma-studio/save-multiple-changes.png" - }, - { - "source": "/docs/concepts/components/images/prisma-studio/add-remove-filters.png", - "destination": "/docs/orm/tools/images/prisma-studio/add-remove-filters.png" - }, - { - "source": "/docs/concepts/components/images/prisma-studio/show-hide-fields.png", - "destination": "/docs/orm/tools/images/prisma-studio/show-hide-fields.png" - }, - { - "source": "/docs/concepts/components/images/prisma-studio/show-hide-records.png", - "destination": "/docs/orm/tools/images/prisma-studio/show-hide-records.png" - }, - { - "source": "/docs/concepts/components/images/prisma-studio/model-sort.png", - "destination": "/docs/orm/tools/images/prisma-studio/model-sort.png" - }, - { - "source": "/docs/concepts/components/images/prisma-studio/array.svg", - "destination": "/docs/orm/tools/images/prisma-studio/array.svg" - }, - { - "source": "/docs/concepts/components/images/prisma-studio/boolean.svg", - "destination": "/docs/orm/tools/images/prisma-studio/boolean.svg" - }, - { - "source": "/docs/concepts/components/images/prisma-studio/database.svg", - "destination": "/docs/orm/tools/images/prisma-studio/database.svg" - }, - { - "source": "/docs/concepts/components/images/prisma-studio/datetime.svg", - "destination": "/docs/orm/tools/images/prisma-studio/datetime.svg" - }, - { - "source": "/docs/concepts/components/images/prisma-studio/enum.svg", - "destination": "/docs/orm/tools/images/prisma-studio/enum.svg" - }, - { - "source": "/docs/concepts/components/images/prisma-studio/number.svg", - "destination": "/docs/orm/tools/images/prisma-studio/number.svg" - }, - { - "source": "/docs/concepts/components/images/prisma-studio/object.svg", - "destination": "/docs/orm/tools/images/prisma-studio/object.svg" - }, - { - "source": "/docs/concepts/components/images/prisma-studio/string.svg", - "destination": "/docs/orm/tools/images/prisma-studio/string.svg" - }, - { - "source": "/docs/concepts/components", - "destination": "/docs/orm/tools" - }, - { - "source": "/docs/reference/api-reference/prisma-client-reference", - "destination": "/docs/orm/reference/prisma-client-reference" - }, - { - "source": "/docs/reference/api-reference/prisma-schema-reference", - "destination": "/docs/orm/reference/prisma-schema-reference" - }, - { - "source": "/docs/reference/api-reference/command-reference", - "destination": "/docs/orm/reference/prisma-cli-reference" - }, - { - "source": "/docs/reference/api-reference/error-reference", - "destination": "/docs/orm/reference/error-reference" - }, - { - "source": "/docs/reference/api-reference/environment-variables-reference", - "destination": "/docs/orm/reference/environment-variables-reference" - }, - { - "source": "/docs/reference/database-reference/database-features", - "destination": "/docs/orm/reference/database-features" - }, - { - "source": "/docs/reference/database-reference/supported-databases", - "destination": "/docs/orm/reference/supported-databases" - }, - { - "source": "/docs/reference/database-reference/connection-urls", - "destination": "/docs/orm/reference/connection-urls" - }, - { - "source": "/docs/reference/system-requirements", - "destination": "/docs/orm/reference/system-requirements" - }, - { - "source": "/docs/concepts/components/preview-features/client-preview-features", - "destination": "/docs/orm/reference/preview-features/client-preview-features" - }, - { - "source": "/docs/concepts/components/preview-features/cli-preview-features", - "destination": "/docs/orm/reference/preview-features/cli-preview-features" - }, - { - "source": "/docs/concepts/components/preview-features", - "destination": "/docs/orm/reference/preview-features" - }, - { - "source": "/docs/reference", - "destination": "/docs/orm/reference" - }, - { - "source": "/docs/concepts/components/prisma-engines/query-engine", - "destination": "/docs/orm/more/under-the-hood/engines" - }, - { - "source": "/docs/concepts/components/prisma-engines/query-engine-node-js-at-runtime.png", - "destination": "/docs/orm/more/under-the-hood/query-engine-node-js-at-runtime.png" - }, - { - "source": "/docs/concepts/components/prisma-engines/typical-flow-query-engine-at-runtime.png", - "destination": "/docs/orm/more/under-the-hood/typical-flow-query-engine-at-runtime.png" - }, - { - "source": "/docs/guides/upgrade-guides/upgrading-versions/upgrading-to-prisma-5/rejectonnotfound-changes", - "destination": "/docs/orm/more/upgrade-guides/upgrading-versions/upgrading-to-prisma-5/rejectonnotfound-changes" - }, - { - "source": "/docs/guides/upgrade-guides/upgrading-versions/upgrading-to-prisma-5/jsonprotocol-changes", - "destination": "/docs/orm/more/upgrade-guides/upgrading-versions/upgrading-to-prisma-5/jsonprotocol-changes" - }, - { - "source": "/docs/guides/upgrade-guides/upgrading-versions/upgrading-to-prisma-5", - "destination": "/docs/orm/more/upgrade-guides/upgrading-versions/upgrading-to-prisma-5" - }, - { - "source": "/docs/guides/upgrade-guides/upgrading-versions/upgrading-to-prisma-4", - "destination": "/docs/orm/more/upgrade-guides/upgrading-versions/upgrading-to-prisma-4" - }, - { - "source": "/docs/guides/upgrade-guides/upgrading-versions/upgrading-to-prisma-3/named-constraints", - "destination": "/docs/orm/more/upgrade-guides/upgrading-versions/upgrading-to-prisma-3/named-constraints" - }, - { - "source": "/docs/guides/upgrade-guides/upgrading-versions/upgrading-to-prisma-3/referential-actions", - "destination": "/docs/orm/more/upgrade-guides/upgrading-versions/upgrading-to-prisma-3/referential-actions" - }, - { - "source": "/docs/guides/upgrade-guides/upgrading-versions/upgrading-to-prisma-3", - "destination": "/docs/orm/more/upgrade-guides/upgrading-versions/upgrading-to-prisma-3" - }, - { - "source": "/docs/guides/upgrade-guides/upgrading-versions/codemods", - "destination": "/docs/orm/more/upgrade-guides/upgrading-versions/codemods" - }, - { - "source": "/docs/guides/upgrade-guides/upgrading-versions", - "destination": "/docs/orm/more/upgrade-guides/upgrading-versions" - }, - { - "source": "/docs/guides/upgrade-guides/upgrading-to-use-preview-features", - "destination": "/docs/orm/more/upgrade-guides/upgrading-to-use-preview-features" - }, - { - "source": "/docs/guides/upgrade-guides/upgrade-from-prisma-1/how-to-upgrade", - "destination": "/docs/orm/more/upgrade-guides/upgrade-from-prisma-1/how-to-upgrade" - }, - { - "source": "/docs/guides/upgrade-guides/upgrade-from-prisma-1/schema-incompatibilities", - "destination": "/docs/orm/more/upgrade-guides/upgrade-from-prisma-1/schema-incompatibilities" - }, - { - "source": "/docs/guides/upgrade-guides/upgrade-from-prisma-1/upgrading-the-prisma-layer", - "destination": "/docs/orm/more/upgrade-guides/upgrade-from-prisma-1/upgrading-the-prisma-layer" - }, - { - "source": "/docs/guides/upgrade-guides/upgrade-from-prisma-1/upgrading-nexus-prisma-to-nexus", - "destination": "/docs/orm/more/upgrade-guides/upgrade-from-prisma-1/upgrading-nexus-prisma-to-nexus" - }, - { - "source": "/docs/guides/upgrade-guides/upgrade-from-prisma-1/upgrading-prisma-binding-to-nexus", - "destination": "/docs/orm/more/upgrade-guides/upgrade-from-prisma-1/upgrading-prisma-binding-to-nexus" - }, - { - "source": "/docs/guides/upgrade-guides/upgrade-from-prisma-1/upgrading-prisma-binding-to-sdl-first", - "destination": "/docs/orm/more/upgrade-guides/upgrade-from-prisma-1/upgrading-prisma-binding-to-sdl-first" - }, - { - "source": "/docs/guides/upgrade-guides/upgrade-from-prisma-1/upgrading-a-rest-api", - "destination": "/docs/orm/more/upgrade-guides/upgrade-from-prisma-1/upgrading-a-rest-api" - }, - { - "source": "/docs/guides/upgrade-guides/upgrade-from-prisma-1/upgrade-from-mongodb-beta", - "destination": "/docs/orm/more/upgrade-guides/upgrade-from-prisma-1/upgrade-from-mongodb-beta" - }, - { - "source": "/docs/guides/upgrade-guides/upgrade-from-prisma-1/images/TablePlus-GUI.png", - "destination": "/docs/orm/more/upgrade-guides/upgrade-from-prisma-1/images/TablePlus-GUI.png" - }, - { - "source": "/docs/guides/upgrade-guides/upgrade-from-prisma-1/images/add-missing-default-constraints-to-columns.png", - "destination": "/docs/orm/more/upgrade-guides/upgrade-from-prisma-1/images/add-missing-default-constraints-to-columns.png" - }, - { - "source": "/docs/guides/upgrade-guides/upgrade-from-prisma-1/images/altering-columns-to-use-enum.png", - "destination": "/docs/orm/more/upgrade-guides/upgrade-from-prisma-1/images/altering-columns-to-use-enum.png" - }, - { - "source": "/docs/guides/upgrade-guides/upgrade-from-prisma-1/images/download-graphql-schema.png", - "destination": "/docs/orm/more/upgrade-guides/upgrade-from-prisma-1/images/download-graphql-schema.png" - }, - { - "source": "/docs/guides/upgrade-guides/upgrade-from-prisma-1/images/expose-prisma-model-fields-with-t-model.png", - "destination": "/docs/orm/more/upgrade-guides/upgrade-from-prisma-1/images/expose-prisma-model-fields-with-t-model.png" - }, - { - "source": "/docs/guides/upgrade-guides/upgrade-from-prisma-1/images/fix-columns-with-json-data-types.png", - "destination": "/docs/orm/more/upgrade-guides/upgrade-from-prisma-1/images/fix-columns-with-json-data-types.png" - }, - { - "source": "/docs/guides/upgrade-guides/upgrade-from-prisma-1/images/fix-incorrect-m-n-relations-sql.png", - "destination": "/docs/orm/more/upgrade-guides/upgrade-from-prisma-1/images/fix-incorrect-m-n-relations-sql.png" - }, - { - "source": "/docs/guides/upgrade-guides/upgrade-from-prisma-1/images/fix-schema-incompatibilities.png", - "destination": "/docs/orm/more/upgrade-guides/upgrade-from-prisma-1/images/fix-schema-incompatibilities.png" - }, - { - "source": "/docs/guides/upgrade-guides/upgrade-from-prisma-1/images/prisma-cli-introspection-flow.png", - "destination": "/docs/orm/more/upgrade-guides/upgrade-from-prisma-1/images/prisma-cli-introspection-flow.png" - }, - { - "source": "/docs/guides/upgrade-guides/upgrade-from-prisma-1/images/regenerate-resolvers-with-t-crud.png", - "destination": "/docs/orm/more/upgrade-guides/upgrade-from-prisma-1/images/regenerate-resolvers-with-t-crud.png" - }, - { - "source": "/docs/guides/upgrade-guides/upgrade-from-prisma-1/images/run-sql-command-to-alter-column.png", - "destination": "/docs/orm/more/upgrade-guides/upgrade-from-prisma-1/images/run-sql-command-to-alter-column.png" - }, - { - "source": "/docs/guides/upgrade-guides/upgrade-from-prisma-1/images/use-t-crud-to-generate-resolvers.png", - "destination": "/docs/orm/more/upgrade-guides/upgrade-from-prisma-1/images/use-t-crud-to-generate-resolvers.png" - }, - { - "source": "/docs/guides/upgrade-guides/upgrade-from-prisma-1", - "destination": "/docs/orm/more/upgrade-guides/upgrade-from-prisma-1" - }, - { - "source": "/docs/concepts/more/comparisons/prisma-and-typeorm", - "destination": "/docs/orm/more/comparisons/prisma-and-typeorm" - }, - { - "source": "/docs/concepts/more/comparisons/prisma-and-sequelize", - "destination": "/docs/orm/more/comparisons/prisma-and-sequelize" - }, - { - "source": "/docs/concepts/more/comparisons/prisma-and-mongoose", - "destination": "/docs/orm/more/comparisons/prisma-and-mongoose" - }, - { - "source": "/docs/concepts/more/comparisons/prisma-and-drizzle", - "destination": "/docs/orm/more/comparisons/prisma-and-drizzle" - }, - { - "source": "/docs/concepts/more/comparisons", - "destination": "/docs/orm/more/comparisons" - }, - { - "source": "/docs/guides/migrate-to-prisma/migrate-from-typeorm", - "destination": "/docs/orm/more/migrating-to-prisma/migrate-from-typeorm" - }, - { - "source": "/docs/guides/migrate-to-prisma/migrate-from-sequelize", - "destination": "/docs/orm/more/migrating-to-prisma/migrate-from-sequelize" - }, - { - "source": "/docs/guides/migrate-to-prisma/migrate-from-mongoose", - "destination": "/docs/orm/more/migrating-to-prisma/migrate-from-mongoose" - }, - { - "source": "/docs/guides/migrate-to-prisma", - "destination": "/docs/orm/more/migrating-to-prisma" - }, - { - "source": "/docs/guides/development-environment/environment-variables/env-files", - "destination": "/docs/orm/more/development-environment/environment-variables/env-files" - }, - { - "source": "/docs/guides/development-environment/environment-variables/managing-env-files-and-setting-variables", - "destination": "/docs/orm/more/development-environment/environment-variables/managing-env-files-and-setting-variables" - }, - { - "source": "/docs/guides/development-environment/environment-variables/using-multiple-env-files", - "destination": "/docs/orm/more/development-environment/environment-variables/using-multiple-env-files" - }, - { - "source": "/docs/guides/development-environment/environment-variables", - "destination": "/docs/orm/more/development-environment/environment-variables" - }, - { - "source": "/docs/guides/development-environment/editor-setup", - "destination": "/docs/orm/more/development-environment/editor-setup" - }, - { - "source": "/docs/guides/development-environment", - "destination": "/docs/orm/more/development-environment" - }, - { - "source": "/docs/guides/other/troubleshooting-orm/creating-bug-reports", - "destination": "/docs/orm/more/help-and-troubleshooting/creating-bug-reports" - }, - { - "source": "/docs/guides/other/troubleshooting-orm/help-articles/autocompletion-in-graphql-resolvers-with-js", - "destination": "/docs/orm/more/help-and-troubleshooting/help-articles/autocompletion-in-graphql-resolvers-with-js" - }, - { - "source": "/docs/guides/other/troubleshooting-orm/help-articles/working-with-many-to-many-relations", - "destination": "/docs/orm/more/help-and-troubleshooting/help-articles/working-with-many-to-many-relations" - }, - { - "source": "/docs/guides/other/troubleshooting-orm/help-articles/nextjs-prisma-client-dev-practices", - "destination": "/docs/orm/more/help-and-troubleshooting/help-articles/nextjs-prisma-client-dev-practices" - }, - { - "source": "/docs/guides/other/troubleshooting-orm/help-articles/nextjs-prisma-client-monorepo", - "destination": "/docs/orm/more/help-and-troubleshooting/help-articles/nextjs-prisma-client-monorepo" - }, - { - "source": "/docs/guides/other/troubleshooting-orm/help-articles/pkg-issue", - "destination": "/docs/orm/more/help-and-troubleshooting/help-articles/pkg-issue" - }, - { - "source": "/docs/guides/other/troubleshooting-orm/help-articles/comparing-columns-through-raw-queries", - "destination": "/docs/orm/more/help-and-troubleshooting/help-articles/comparing-columns-through-raw-queries" - }, - { - "source": "/docs/guides/other/troubleshooting-orm/help-articles/vercel-caching-issue", - "destination": "/docs/orm/more/help-and-troubleshooting/help-articles/vercel-caching-issue" - }, - { - "source": "/docs/guides/other/troubleshooting-orm/help-articles/netlify-caching-issue", - "destination": "/docs/orm/more/help-and-troubleshooting/help-articles/netlify-caching-issue" - }, - { - "source": "/docs/guides/other/advanced-database-tasks/data-validation/postgresql", - "destination": "/docs/orm/more/help-and-troubleshooting/help-articles/check-constraints" - }, - { - "source": "/docs/guides/other/troubleshooting-orm/help-articles", - "destination": "/docs/orm/more/help-and-troubleshooting/help-articles" - }, - { - "source": "/docs/guides/other/troubleshooting-orm/help-articles/netlify-build-command-filled.png", - "destination": "/docs/orm/more/help-and-troubleshooting/help-articles/netlify-build-command-filled.png" - }, - { - "source": "/docs/guides/other/troubleshooting-orm/help-articles/netlify-edit-settings.png", - "destination": "/docs/orm/more/help-and-troubleshooting/help-articles/netlify-edit-settings.png" - }, - { - "source": "/docs/guides/other/troubleshooting-orm/help-articles/prisma-autocompletion-in-js.png", - "destination": "/docs/orm/more/help-and-troubleshooting/help-articles/prisma-autocompletion-in-js.png" - }, - { - "source": "/docs/guides/other/troubleshooting-orm/help-articles/unwanted-autocomplete-values-in-vscode.png", - "destination": "/docs/orm/more/help-and-troubleshooting/help-articles/unwanted-autocomplete-values-in-vscode.png" - }, - { - "source": "/docs/guides/other/troubleshooting-orm/help-articles/vercel-ui-build-command-filled.png", - "destination": "/docs/orm/more/help-and-troubleshooting/help-articles/vercel-ui-build-command-filled.png" - }, - { - "source": "/docs/guides/other/troubleshooting-orm/help-articles/vercel-ui-build-command.png", - "destination": "/docs/orm/more/help-and-troubleshooting/help-articles/vercel-ui-build-command.png" - }, - { - "source": "/docs/about/prisma/releases", - "destination": "/docs/orm/more/releases" - }, - { - "source": "/docs/data-platform/accelerate/what-is-accelerate", - "destination": "/docs/accelerate/what-is-accelerate" - }, - { - "source": "/docs/data-platform/accelerate/getting-started", - "destination": "/docs/accelerate/getting-started" - }, - { - "source": "/docs/data-platform/accelerate/concepts", - "destination": "/docs/accelerate/concepts" - }, - { - "source": "/docs/data-platform/accelerate/api-reference", - "destination": "/docs/accelerate/api-reference" - }, - { - "source": "/docs/data-platform/accelerate/limitations", - "destination": "/docs/accelerate/limitations" - }, - { - "source": "/docs/data-platform/accelerate/evaluating", - "destination": "/docs/accelerate/evaluating" - }, - { - "source": "/docs/data-platform/accelerate/faq", - "destination": "/docs/accelerate/faq" - }, - { - "source": "/docs/data-platform/accelerate/feedback", - "destination": "/docs/accelerate/feedback" - }, - { - "source": "/docs/data-platform/accelerate/images/accelerate-update-database-connection-string.png", - "destination": "/docs/accelerate/images/accelerate-update-database-connection-string.png" - }, - { - "source": "/docs/data-platform/accelerate/images/accelerate.png", - "destination": "/docs/accelerate/images/accelerate.png" - }, - { - "source": "/docs/data-platform/accelerate/images/no-cache.png", - "destination": "/docs/accelerate/images/no-cache.png" - }, - { - "source": "/docs/data-platform/accelerate/images/speed-test.png", - "destination": "/docs/accelerate/images/speed-test.png" - }, - { - "source": "/docs/data-platform/accelerate/images/swr.png", - "destination": "/docs/accelerate/images/swr.png" - }, - { - "source": "/docs/data-platform/accelerate/images/ttl.png", - "destination": "/docs/accelerate/images/ttl.png" - }, - { - "source": "/docs/data-platform/accelerate/images/ttl_and_swr.png", - "destination": "/docs/accelerate/images/ttl_and_swr.png" - }, - { - "source": "/docs/guides/migrate/developing-with-prisma-migrate", - "destination": "/docs/orm/prisma-migrate" - }, - { - "source": "/docs/guides/migrate/patching-production", - "destination": "/docs/orm/prisma-migrate/workflows/patching-and-hotfixing" - }, - { - "source": "/docs/guides/migrate", - "destination": "/docs/orm/prisma-migrate" - }, - { - "source": "/docs/guides/database", - "destination": "/docs/orm/overview/databases" - }, - { - "source": "/docs/guides/performance-and-optimization/metrics", - "destination": "/docs/orm/prisma-client/observability-and-logging/metrics" - }, - { - "source": "/docs/guides/performance-and-optimization/query-tracing", - "destination": "/docs/orm/prisma-client/observability-and-logging/opentelemetry-tracing" - }, - { - "source": "/docs/guides/performance-and-optimization", - "destination": "/docs/orm/prisma-client/queries/query-optimization-performance" - }, - { - "source": "/docs/guides/upgrade-guides", - "destination": "/docs/orm/more/upgrade-guides" - }, - { - "source": "/docs/guides/other/troubleshooting-orm", - "destination": "/docs/orm/more/help-and-troubleshooting" - }, - { - "source": "/docs/guides/other/advanced-database-tasks/typesafe-raw-sql", - "destination": "/docs/orm/prisma-client/queries/raw-database-access/custom-and-type-safe-queries" - }, - { - "source": "/docs/guides/other/advanced-database-tasks/data-validation", - "destination": "/docs/orm/prisma-client/queries/custom-validation" - }, - { - "source": "/docs/guides/other/advanced-database-tasks", - "destination": "/docs/orm" - }, - { - "source": "/docs/guides/other", - "destination": "/docs/orm" - }, - { - "source": "/docs/guides", - "destination": "/docs/orm" - }, - { - "source": "/docs/guides/upgrade-guides/upgrade-from-prisma-1/schema-incompatibilities-postgresql", - "destination": "/docs/orm/more/upgrade-guides/upgrade-from-prisma-1/schema-incompatibilities-postgresql" - }, - { - "source": "/docs/guides/upgrade-guides/upgrade-from-prisma-1/upgrading-the-prisma-layer-postgresql", - "destination": "/docs/orm/more/upgrade-guides/upgrade-from-prisma-1/upgrading-the-prisma-layer-postgresql" - }, - { - "source": "/docs/data-platform/pulse/what-is-pulse", - "destination": "/docs/pulse/what-is-pulse" - }, - { - "source": "/docs/data-platform/pulse/getting-started", - "destination": "/docs/pulse/getting-started" - }, - { - "source": "/docs/data-platform/pulse/concepts", - "destination": "/docs/pulse/concepts" - }, - { - "source": "/docs/data-platform/pulse/api-reference", - "destination": "/docs/pulse/api-reference" - }, - { - "source": "/docs/data-platform/pulse/current-limitations", - "destination": "/docs/pulse/current-limitations" - }, - { - "source": "/docs/data-platform/pulse/faq", - "destination": "/docs/pulse/faq" - }, - { - "source": "/docs/data-platform/pulse/feedback", - "destination": "/docs/pulse/feedback" - }, - { - "source": "/docs/reference/api-reference", - "destination": "/docs/orm/reference" - }, - { - "source": "/docs/reference/database-reference", - "destination": "/docs/orm/reference" - }, - { - "source": "/docs/data-platform/platform-console/about", - "destination": "/docs/platform/platform-console/about" - }, - { - "source": "/docs/data-platform/platform-console/concepts/workspaces", - "destination": "/docs/platform/platform-console/concepts/workspaces" - }, - { - "source": "/docs/data-platform/platform-console/concepts/projects", - "destination": "/docs/platform/platform-console/concepts/projects" - }, - { - "source": "/docs/data-platform/platform-console/concepts", - "destination": "/docs/platform/platform-console/concepts" - }, - { - "source": "/docs/data-platform/platform-console/maturity-levels", - "destination": "/docs/platform/platform-console/maturity-levels" - }, - { - "source": "/docs/data-platform/platform-console/limits", - "destination": "/docs/platform/platform-console/limits" - }, - { - "source": "/docs/data-platform/platform-console/support", - "destination": "/docs/platform/platform-console/support" - }, - { - "source": "/docs/data-platform/platform-console", - "destination": "/docs/platform/platform-console" - }, - { - "source": "/docs/data-platform/classic-projects/data-proxy/use-data-proxy", - "destination": "/docs/platform/classic-projects/data-proxy/use-data-proxy" - }, - { - "source": "/docs/data-platform/classic-projects/data-proxy/deploy", - "destination": "/docs/platform/classic-projects/data-proxy/deploy" - }, - { - "source": "/docs/data-platform/classic-projects/data-proxy/prisma-cli-with-data-proxy", - "destination": "/docs/platform/classic-projects/data-proxy/prisma-cli-with-data-proxy" - }, - { - "source": "/docs/data-platform/classic-projects/data-proxy/considerations-limitations", - "destination": "/docs/platform/classic-projects/data-proxy/considerations-limitations" - }, - { - "source": "/docs/data-platform/classic-projects/data-proxy", - "destination": "/docs/platform/classic-projects/data-proxy" - }, - { - "source": "/docs/data-platform/classic-projects/platform/static-ips", - "destination": "/docs/platform/classic-projects/platform/static-ips" - }, - { - "source": "/docs/data-platform/classic-projects/platform/projects/create", - "destination": "/docs/platform/classic-projects/platform/projects/create" - }, - { - "source": "/docs/data-platform/classic-projects/platform/projects/edit-settings", - "destination": "/docs/platform/classic-projects/platform/projects/edit-settings" - }, - { - "source": "/docs/data-platform/classic-projects/platform/projects/delete-project", - "destination": "/docs/platform/classic-projects/platform/projects/delete-project" - }, - { - "source": "/docs/data-platform/classic-projects/platform/projects", - "destination": "/docs/platform/classic-projects/platform/projects" - }, - { - "source": "/docs/data-platform/classic-projects/platform/environments/view-all", - "destination": "/docs/platform/classic-projects/platform/environments/view-all" - }, - { - "source": "/docs/data-platform/classic-projects/platform/environments/create", - "destination": "/docs/platform/classic-projects/platform/environments/create" - }, - { - "source": "/docs/data-platform/classic-projects/platform/environments/edit-settings/edit-name-and-url-handle", - "destination": "/docs/platform/classic-projects/platform/environments/edit-settings/edit-name-and-url-handle" - }, - { - "source": "/docs/data-platform/classic-projects/platform/environments/edit-settings/change-default-environment", - "destination": "/docs/platform/classic-projects/platform/environments/edit-settings/change-default-environment" - }, - { - "source": "/docs/data-platform/classic-projects/platform/environments/edit-settings", - "destination": "/docs/platform/classic-projects/platform/environments/edit-settings" - }, - { - "source": "/docs/data-platform/classic-projects/platform/environments/delete", - "destination": "/docs/platform/classic-projects/platform/environments/delete" - }, - { - "source": "/docs/data-platform/classic-projects/platform/environments", - "destination": "/docs/platform/classic-projects/platform/environments" - }, - { - "source": "/docs/data-platform/classic-projects/platform/members/roles-permissions", - "destination": "/docs/platform/classic-projects/platform/members/roles-permissions" - }, - { - "source": "/docs/data-platform/classic-projects/platform/members/add", - "destination": "/docs/platform/classic-projects/platform/members/add" - }, - { - "source": "/docs/data-platform/classic-projects/platform/members/change-role", - "destination": "/docs/platform/classic-projects/platform/members/change-role" - }, - { - "source": "/docs/data-platform/classic-projects/platform/members/remove", - "destination": "/docs/platform/classic-projects/platform/members/remove" - }, - { - "source": "/docs/data-platform/classic-projects/platform/members/images/team-members-invite-and-select-role.png", - "destination": "/docs/platform/classic-projects/platform/members/images/team-members-invite-and-select-role.png" - }, - { - "source": "/docs/data-platform/classic-projects/platform/members/images/team-members-invite-and-select-role.snagx", - "destination": "/docs/platform/classic-projects/platform/members/images/team-members-invite-and-select-role.snagx" - }, - { - "source": "/docs/data-platform/classic-projects/platform/members", - "destination": "/docs/platform/classic-projects/platform/members" - }, - { - "source": "/docs/data-platform/classic-projects/platform/data-browser", - "destination": "/docs/platform/classic-projects/platform/data-browser" - }, - { - "source": "/docs/data-platform/classic-projects/platform/query-console", - "destination": "/docs/platform/classic-projects/platform/query-console" - }, - { - "source": "/docs/data-platform/classic-projects/platform/schema-viewer", - "destination": "/docs/platform/classic-projects/platform/schema-viewer" - }, - { - "source": "/docs/data-platform/classic-projects/platform/account", - "destination": "/docs/platform/classic-projects/platform/account" - }, - { - "source": "/docs/data-platform/classic-projects/platform/github-integration", - "destination": "/docs/platform/classic-projects/platform/github-integration" - }, - { - "source": "/docs/data-platform/classic-projects/platform/troubleshooting/connection-to-db-timed-out", - "destination": "/docs/platform/classic-projects/platform/troubleshooting/connection-to-db-timed-out" - }, - { - "source": "/docs/data-platform/classic-projects/platform/troubleshooting/cannot-change-db-of-env", - "destination": "/docs/platform/classic-projects/platform/troubleshooting/cannot-change-db-of-env" - }, - { - "source": "/docs/data-platform/classic-projects/platform/troubleshooting/cannot-edit-schema-file", - "destination": "/docs/platform/classic-projects/platform/troubleshooting/cannot-edit-schema-file" - }, - { - "source": "/docs/data-platform/classic-projects/platform/troubleshooting/schema-file-does-not-update", - "destination": "/docs/platform/classic-projects/platform/troubleshooting/schema-file-does-not-update" - }, - { - "source": "/docs/data-platform/classic-projects/platform/troubleshooting", - "destination": "/docs/platform/classic-projects/platform/troubleshooting" - }, - { - "source": "/docs/data-platform/classic-projects/platform", - "destination": "/docs/platform/classic-projects/platform" - }, - { - "source": "/docs/data-platform/classic-projects/support", - "destination": "/docs/platform/classic-projects/support" - }, - { - "source": "/docs/data-platform/classic-projects/images/account/profile-menu-github-account.png", - "destination": "/docs/platform/classic-projects/images/account/profile-menu-github-account.png" - }, - { - "source": "/docs/data-platform/classic-projects/images/account/profile-menu-github-account.snagx", - "destination": "/docs/platform/classic-projects/images/account/profile-menu-github-account.snagx" - }, - { - "source": "/docs/data-platform/classic-projects/images/account/sign-up-01-create-first-project.png", - "destination": "/docs/platform/classic-projects/images/account/sign-up-01-create-first-project.png" - }, - { - "source": "/docs/data-platform/classic-projects/images/account/sign-up-01-create-first-project.snagx", - "destination": "/docs/platform/classic-projects/images/account/sign-up-01-create-first-project.snagx" - }, - { - "source": "/docs/data-platform/classic-projects/images/common/open-project-settings.png", - "destination": "/docs/platform/classic-projects/images/common/open-project-settings.png" - }, - { - "source": "/docs/data-platform/classic-projects/images/common/open-project-settings.snagx", - "destination": "/docs/platform/classic-projects/images/common/open-project-settings.snagx" - }, - { - "source": "/docs/data-platform/classic-projects/images/common/support-pop-up.png", - "destination": "/docs/platform/classic-projects/images/common/support-pop-up.png" - }, - { - "source": "/docs/data-platform/classic-projects/images/common/support-pop-up.snagx", - "destination": "/docs/platform/classic-projects/images/common/support-pop-up.snagx" - }, - { - "source": "/docs/data-platform/classic-projects/images/data-browser/models-view.png", - "destination": "/docs/platform/classic-projects/images/data-browser/models-view.png" - }, - { - "source": "/docs/data-platform/classic-projects/images/data-browser/models-view.snagx", - "destination": "/docs/platform/classic-projects/images/data-browser/models-view.snagx" - }, - { - "source": "/docs/data-platform/classic-projects/images/data-browser/open-close-models.png", - "destination": "/docs/platform/classic-projects/images/data-browser/open-close-models.png" - }, - { - "source": "/docs/data-platform/classic-projects/images/data-browser/open-close-models.snagx", - "destination": "/docs/platform/classic-projects/images/data-browser/open-close-models.snagx" - }, - { - "source": "/docs/data-platform/classic-projects/images/data-browser/model-view-keyboard-shortcuts.png", - "destination": "/docs/platform/classic-projects/images/data-browser/model-view-keyboard-shortcuts.png" - }, - { - "source": "/docs/data-platform/classic-projects/images/data-browser/model-view-keyboard-shortcuts.snagx", - "destination": "/docs/platform/classic-projects/images/data-browser/model-view-keyboard-shortcuts.snagx" - }, - { - "source": "/docs/data-platform/classic-projects/images/data-browser/save-multiple-changes.png", - "destination": "/docs/platform/classic-projects/images/data-browser/save-multiple-changes.png" - }, - { - "source": "/docs/data-platform/classic-projects/images/data-browser/save-multiple-changes.snagx", - "destination": "/docs/platform/classic-projects/images/data-browser/save-multiple-changes.snagx" - }, - { - "source": "/docs/data-platform/classic-projects/images/data-browser/add-remove-filters.png", - "destination": "/docs/platform/classic-projects/images/data-browser/add-remove-filters.png" - }, - { - "source": "/docs/data-platform/classic-projects/images/data-browser/add-remove-filters.snagx", - "destination": "/docs/platform/classic-projects/images/data-browser/add-remove-filters.snagx" - }, - { - "source": "/docs/data-platform/classic-projects/images/data-browser/show-hide-fields.png", - "destination": "/docs/platform/classic-projects/images/data-browser/show-hide-fields.png" - }, - { - "source": "/docs/data-platform/classic-projects/images/data-browser/show-hide-fields.snagx", - "destination": "/docs/platform/classic-projects/images/data-browser/show-hide-fields.snagx" - }, - { - "source": "/docs/data-platform/classic-projects/images/data-browser/show-hide-records.png", - "destination": "/docs/platform/classic-projects/images/data-browser/show-hide-records.png" - }, - { - "source": "/docs/data-platform/classic-projects/images/data-browser/show-hide-records.snagx", - "destination": "/docs/platform/classic-projects/images/data-browser/show-hide-records.snagx" - }, - { - "source": "/docs/data-platform/classic-projects/images/data-browser/model-sort.png", - "destination": "/docs/platform/classic-projects/images/data-browser/model-sort.png" - }, - { - "source": "/docs/data-platform/classic-projects/images/data-browser/model-sort.snagx", - "destination": "/docs/platform/classic-projects/images/data-browser/model-sort.snagx" - }, - { - "source": "/docs/data-platform/classic-projects/images/data-browser/array.svg", - "destination": "/docs/platform/classic-projects/images/data-browser/array.svg" - }, - { - "source": "/docs/data-platform/classic-projects/images/data-browser/boolean.svg", - "destination": "/docs/platform/classic-projects/images/data-browser/boolean.svg" - }, - { - "source": "/docs/data-platform/classic-projects/images/data-browser/database.svg", - "destination": "/docs/platform/classic-projects/images/data-browser/database.svg" - }, - { - "source": "/docs/data-platform/classic-projects/images/data-browser/datetime.svg", - "destination": "/docs/platform/classic-projects/images/data-browser/datetime.svg" - }, - { - "source": "/docs/data-platform/classic-projects/images/data-browser/enum.svg", - "destination": "/docs/platform/classic-projects/images/data-browser/enum.svg" - }, - { - "source": "/docs/data-platform/classic-projects/images/data-browser/number.svg", - "destination": "/docs/platform/classic-projects/images/data-browser/number.svg" - }, - { - "source": "/docs/data-platform/classic-projects/images/data-browser/object.svg", - "destination": "/docs/platform/classic-projects/images/data-browser/object.svg" - }, - { - "source": "/docs/data-platform/classic-projects/images/data-browser/string.svg", - "destination": "/docs/platform/classic-projects/images/data-browser/string.svg" - }, - { - "source": "/docs/data-platform/classic-projects/images/data-proxy/copy-connection-string.png", - "destination": "/docs/platform/classic-projects/images/data-proxy/copy-connection-string.png" - }, - { - "source": "/docs/data-platform/classic-projects/images/data-proxy/copy-connection-string.snagx", - "destination": "/docs/platform/classic-projects/images/data-proxy/copy-connection-string.snagx" - }, - { - "source": "/docs/data-platform/classic-projects/images/data-proxy/create-and-name-new-connection-string.png", - "destination": "/docs/platform/classic-projects/images/data-proxy/create-and-name-new-connection-string.png" - }, - { - "source": "/docs/data-platform/classic-projects/images/data-proxy/create-and-name-new-connection-string.snagx", - "destination": "/docs/platform/classic-projects/images/data-proxy/create-and-name-new-connection-string.snagx" - }, - { - "source": "/docs/data-platform/classic-projects/images/data-proxy/prisma-bundle-with-data-proxy.svg", - "destination": "/docs/platform/classic-projects/images/data-proxy/prisma-bundle-with-data-proxy.svg" - }, - { - "source": "/docs/data-platform/classic-projects/images/data-proxy/prisma-bundle-without-data-proxy.svg", - "destination": "/docs/platform/classic-projects/images/data-proxy/prisma-bundle-without-data-proxy.svg" - }, - { - "source": "/docs/data-platform/classic-projects/images/environments/create-01-drop-down-select-create.png", - "destination": "/docs/platform/classic-projects/images/environments/create-01-drop-down-select-create.png" - }, - { - "source": "/docs/data-platform/classic-projects/images/environments/create-01-drop-down-select-create.snagx", - "destination": "/docs/platform/classic-projects/images/environments/create-01-drop-down-select-create.snagx" - }, - { - "source": "/docs/data-platform/classic-projects/images/environments/create-env-upload-schema-file.png", - "destination": "/docs/platform/classic-projects/images/environments/create-env-upload-schema-file.png" - }, - { - "source": "/docs/data-platform/classic-projects/images/environments/create-no-schema-sync-02-repo-branch-database-connection-string-data-proxy.png", - "destination": "/docs/platform/classic-projects/images/environments/create-no-schema-sync-02-repo-branch-database-connection-string-data-proxy.png" - }, - { - "source": "/docs/data-platform/classic-projects/images/environments/create-no-schema-sync-02-repo-branch-database-connection-string-data-proxy.snagx", - "destination": "/docs/platform/classic-projects/images/environments/create-no-schema-sync-02-repo-branch-database-connection-string-data-proxy.snagx" - }, - { - "source": "/docs/data-platform/classic-projects/images/environments/create-on-schema-sync-02-connection-string-static-ips-data-proxy-region.png", - "destination": "/docs/platform/classic-projects/images/environments/create-on-schema-sync-02-connection-string-static-ips-data-proxy-region.png" - }, - { - "source": "/docs/data-platform/classic-projects/images/environments/create-on-schema-sync-02-connection-string-static-ips-data-proxy-region.snagx", - "destination": "/docs/platform/classic-projects/images/environments/create-on-schema-sync-02-connection-string-static-ips-data-proxy-region.snagx" - }, - { - "source": "/docs/data-platform/classic-projects/images/environments/default-environment.png", - "destination": "/docs/platform/classic-projects/images/environments/default-environment.png" - }, - { - "source": "/docs/data-platform/classic-projects/images/environments/default-environment.snagx", - "destination": "/docs/platform/classic-projects/images/environments/default-environment.snagx" - }, - { - "source": "/docs/data-platform/classic-projects/images/environments/delete-01-click-three-dot-select-delete.png", - "destination": "/docs/platform/classic-projects/images/environments/delete-01-click-three-dot-select-delete.png" - }, - { - "source": "/docs/data-platform/classic-projects/images/environments/delete-01-click-three-dot-select-delete.snagx", - "destination": "/docs/platform/classic-projects/images/environments/delete-01-click-three-dot-select-delete.snagx" - }, - { - "source": "/docs/data-platform/classic-projects/images/environments/edit-01-change-database-connection-string.png", - "destination": "/docs/platform/classic-projects/images/environments/edit-01-change-database-connection-string.png" - }, - { - "source": "/docs/data-platform/classic-projects/images/environments/edit-01-change-database-connection-string.snagx", - "destination": "/docs/platform/classic-projects/images/environments/edit-01-change-database-connection-string.snagx" - }, - { - "source": "/docs/data-platform/classic-projects/images/environments/edit-01-change-default.png", - "destination": "/docs/platform/classic-projects/images/environments/edit-01-change-default.png" - }, - { - "source": "/docs/data-platform/classic-projects/images/environments/edit-01-change-default.snagx", - "destination": "/docs/platform/classic-projects/images/environments/edit-01-change-default.snagx" - }, - { - "source": "/docs/data-platform/classic-projects/images/environments/edit-01-change-name-and-URL-handle.png", - "destination": "/docs/platform/classic-projects/images/environments/edit-01-change-name-and-URL-handle.png" - }, - { - "source": "/docs/data-platform/classic-projects/images/environments/edit-01-change-name-and-URL-handle.snagx", - "destination": "/docs/platform/classic-projects/images/environments/edit-01-change-name-and-URL-handle.snagx" - }, - { - "source": "/docs/data-platform/classic-projects/images/environments/list-all-environments.png", - "destination": "/docs/platform/classic-projects/images/environments/list-all-environments.png" - }, - { - "source": "/docs/data-platform/classic-projects/images/environments/list-all-environments.snagx", - "destination": "/docs/platform/classic-projects/images/environments/list-all-environments.snagx" - }, - { - "source": "/docs/data-platform/classic-projects/images/environments/switch-environment.png", - "destination": "/docs/platform/classic-projects/images/environments/switch-environment.png" - }, - { - "source": "/docs/data-platform/classic-projects/images/environments/switch-environment.snagx", - "destination": "/docs/platform/classic-projects/images/environments/switch-environment.snagx" - }, - { - "source": "/docs/data-platform/classic-projects/images/environments/view-all-01-environments-drop-down-view-all.png", - "destination": "/docs/platform/classic-projects/images/environments/view-all-01-environments-drop-down-view-all.png" - }, - { - "source": "/docs/data-platform/classic-projects/images/environments/view-all-01-environments-drop-down-view-all.snagx", - "destination": "/docs/platform/classic-projects/images/environments/view-all-01-environments-drop-down-view-all.snagx" - }, - { - "source": "/docs/data-platform/classic-projects/images/github/add-github-account-or-org.png", - "destination": "/docs/platform/classic-projects/images/github/add-github-account-or-org.png" - }, - { - "source": "/docs/data-platform/classic-projects/images/github/add-github-account-or-org.snagx", - "destination": "/docs/platform/classic-projects/images/github/add-github-account-or-org.snagx" - }, - { - "source": "/docs/data-platform/classic-projects/images/github/grant-access-github-app.png", - "destination": "/docs/platform/classic-projects/images/github/grant-access-github-app.png" - }, - { - "source": "/docs/data-platform/classic-projects/images/github/grant-access-github-app.snagx", - "destination": "/docs/platform/classic-projects/images/github/grant-access-github-app.snagx" - }, - { - "source": "/docs/data-platform/classic-projects/images/github/grant-access-to-select-github-repositories.png", - "destination": "/docs/platform/classic-projects/images/github/grant-access-to-select-github-repositories.png" - }, - { - "source": "/docs/data-platform/classic-projects/images/github/grant-access-to-select-github-repositories.snagx", - "destination": "/docs/platform/classic-projects/images/github/grant-access-to-select-github-repositories.snagx" - }, - { - "source": "/docs/data-platform/classic-projects/images/projects/create-02-enable-schema-sync-github-account-branch-schema-path.png", - "destination": "/docs/platform/classic-projects/images/projects/create-02-enable-schema-sync-github-account-branch-schema-path.png" - }, - { - "source": "/docs/data-platform/classic-projects/images/projects/create-02-enable-schema-sync-github-account-branch-schema-path.snagx", - "destination": "/docs/platform/classic-projects/images/projects/create-02-enable-schema-sync-github-account-branch-schema-path.snagx" - }, - { - "source": "/docs/data-platform/classic-projects/images/projects/create-02-link-schema-file-from-a-repository.png", - "destination": "/docs/platform/classic-projects/images/projects/create-02-link-schema-file-from-a-repository.png" - }, - { - "source": "/docs/data-platform/classic-projects/images/projects/create-02-upload-schema-file.png", - "destination": "/docs/platform/classic-projects/images/projects/create-02-upload-schema-file.png" - }, - { - "source": "/docs/data-platform/classic-projects/images/projects/prisma-data-platform-projects-page.png", - "destination": "/docs/platform/classic-projects/images/projects/prisma-data-platform-projects-page.png" - }, - { - "source": "/docs/data-platform/classic-projects/images/projects/prisma-data-platform-projects-page.snagx", - "destination": "/docs/platform/classic-projects/images/projects/prisma-data-platform-projects-page.snagx" - }, - { - "source": "/docs/data-platform/classic-projects/images/query-console/add-query-with-autocomplete.png", - "destination": "/docs/platform/classic-projects/images/query-console/add-query-with-autocomplete.png" - }, - { - "source": "/docs/data-platform/classic-projects/images/query-console/add-query-with-autocomplete.snagx", - "destination": "/docs/platform/classic-projects/images/query-console/add-query-with-autocomplete.snagx" - }, - { - "source": "/docs/data-platform/classic-projects/images/query-console/components.png", - "destination": "/docs/platform/classic-projects/images/query-console/components.png" - }, - { - "source": "/docs/data-platform/classic-projects/images/query-console/components.snagx", - "destination": "/docs/platform/classic-projects/images/query-console/components.snagx" - }, - { - "source": "/docs/data-platform/classic-projects/images/query-console/run-query.png", - "destination": "/docs/platform/classic-projects/images/query-console/run-query.png" - }, - { - "source": "/docs/data-platform/classic-projects/images/query-console/run-query.snagx", - "destination": "/docs/platform/classic-projects/images/query-console/run-query.snagx" - }, - { - "source": "/docs/data-platform/classic-projects/images/schema-viewer/overview.png", - "destination": "/docs/platform/classic-projects/images/schema-viewer/overview.png" - }, - { - "source": "/docs/data-platform/classic-projects/images/schema-viewer/overview.snagx", - "destination": "/docs/platform/classic-projects/images/schema-viewer/overview.snagx" - }, - { - "source": "/docs/data-platform/classic-projects/images/schema-viewer/project-introspected-schema.png", - "destination": "/docs/platform/classic-projects/images/schema-viewer/project-introspected-schema.png" - }, - { - "source": "/docs/data-platform/classic-projects/images/schema-viewer/project-introspected-schema.snagx", - "destination": "/docs/platform/classic-projects/images/schema-viewer/project-introspected-schema.snagx" - }, - { - "source": "/docs/data-platform/classic-projects/images/schema-viewer/project-no-models-no-schema.png", - "destination": "/docs/platform/classic-projects/images/schema-viewer/project-no-models-no-schema.png" - }, - { - "source": "/docs/data-platform/classic-projects/images/schema-viewer/project-no-models-no-schema.snagx", - "destination": "/docs/platform/classic-projects/images/schema-viewer/project-no-models-no-schema.snagx" - }, - { - "source": "/docs/data-platform/classic-projects/images/schema-viewer/project-schema-viewer.png", - "destination": "/docs/platform/classic-projects/images/schema-viewer/project-schema-viewer.png" - }, - { - "source": "/docs/data-platform/classic-projects/images/schema-viewer/provide-prisma-schema.png", - "destination": "/docs/platform/classic-projects/images/schema-viewer/provide-prisma-schema.png" - }, - { - "source": "/docs/data-platform/classic-projects/images/schema-viewer/provide-prisma-schema.snagx", - "destination": "/docs/platform/classic-projects/images/schema-viewer/provide-prisma-schema.snagx" - }, - { - "source": "/docs/data-platform/classic-projects", - "destination": "/docs/platform/classic-projects" - }, - { - "source": "/docs/data-platform", - "destination": "/docs/platform" - }, - { - "source": "/docs/about/prisma/example-projects", - "destination": "https://github.com/prisma/prisma-examples/" - }, - { - "source": "/docs/about/prisma/roadmap", - "destination": "/docs/orm/more/releases#roadmap" - }, - { - "source": "/docs/about/prisma/faq", - "destination": "/docs/support" - }, - { - "source": "/docs/about/prisma/limitations", - "destination": "/docs/orm/prisma-schema/data-model/models#limitations" - }, - { - "source": "/docs/about/prisma", - "destination": "/docs/about" - }, - { - "source": "/docs/data-platform/accelerate", - "destination": "/docs/accelerate" - }, - { - "source": "/docs/data-platform/pulse", - "destination": "/docs/pulse" - }, - { - "source": "/docs/guides/upgrade-guides/upgrade-from-prisma-1/schema-incompatibilities-mysql", - "destination": "/docs/orm/more/upgrade-guides/upgrade-from-prisma-1/schema-incompatibilities-mysql" - }, - { - "source": "/docs/guides/upgrade-guides/upgrade-from-prisma-1/upgrading-the-prisma-layer-mysql", - "destination": "/docs/orm/more/upgrade-guides/upgrade-from-prisma-1/upgrading-the-prisma-layer-mysql" - }, - { - "source": "/docs/concepts/overview/prisma-in-your-stack/graphql", - "destination": "/docs/orm/overview/prisma-in-your-stack/graphql" - }, - { - "source": "/docs/concepts/overview/prisma-in-your-stack/rest", - "destination": "/docs/orm/overview/prisma-in-your-stack/rest" - }, - { - "source": "/docs/accelerate/concepts", - "destination": "/docs/accelerate" - }, - { - "source": "/docs/platform/classic-projects/data-proxy/:any*", - "destination": "/docs/accelerate" - }, - { - "source": "/docs/platform/classic-projects/platform/:any*", - "destination": "/docs/platform" - }, - { - "source": "/docs/platform/classic-projects/support", - "destination": "https://www.prisma.io/support" - }, - { - "source": "/docs/platform/classic-projects", - "destination": "/docs/platform" - }, - { - "source": "/docs/platform/platform-console/about", - "destination": "/docs/platform/about" - }, - { - "source": "/docs/platform/platform-console/concepts/workspaces", - "destination": "/docs/platform/concepts/workspaces" - }, - { - "source": "/docs/platform/platform-console/concepts/projects", - "destination": "/docs/platform/concepts/projects" - }, - { - "source": "/docs/platform/platform-console/maturity-levels", - "destination": "/docs/platform/maturity-levels" - }, - { - "source": "/docs/platform/platform-console/limits", - "destination": "/docs/platform/limits" - }, - { - "source": "/docs/platform/platform-console/support", - "destination": "/docs/platform/support" - }, - { - "source": "/docs/platform/platform-console", - "destination": "/docs/platform" - }, - { - "source": "/docs/orm/prisma-client/deployment/edge/deploy-to-cloudflare-workers", - "destination": "/docs/orm/prisma-client/deployment/edge/deploy-to-cloudflare" - }, - { - "source": "/docs/orm/prisma-client/deployment/module-bundlers", - "destination": "/docs/orm/prisma-client/deployment/module-bundlers" - }, - { - "source": "/docs/pulse/current-limitations", - "destination": "/docs/pulse/known-limitations", - "statusCode": 301 - }, - { - "source": "/docs/pulse/current-limitations#change-events-are-not-persisted", - "destination": "/docs/pulse/known-limitations#database-events-are-not-persisted", - "statusCode": 301 - }, - { - "source": "/pulse/current-limitations", - "destination": "/pulse/known-limitations", - "statusCode": 301 - }, - { - "source": "/pulse/getting-started#configuring-replication-slot", - "destination": "/pulse/database-setup/general-database-instructions#enable-logical-replication", - "statusCode": 301 - } - ] -} diff --git a/wrangler.toml b/wrangler.toml new file mode 100644 index 0000000000..8830c0843f --- /dev/null +++ b/wrangler.toml @@ -0,0 +1,13 @@ +# Generated by Wrangler on Fri Apr 05 2024 19:27:05 GMT-0500 (Central Daylight Time) +name = "docs" +pages_build_output_dir = "build" +compatibility_date = "2024-03-18" + +[vars] +DOCUSAURUS_BASE_URL='/' + +[env.preview.vars] +DOCUSAURUS_BASE_URL='/' + +[env.production.vars] +DOCUSAURUS_BASE_URL='/docs/'