diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index b5105729..00000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,369 +0,0 @@ -name: CI - -on: - pull_request: - paths-ignore: - - 'docs/**' - - '**/*.md' - - '.prettierrc' - - '**/*ignore' - push: - branches: - - master - - next - - rc - paths-ignore: - - 'docs/**' - - '**/*.md' - - '.prettierrc' - - '**/*ignore' - workflow_call: - -env: - NODE_VERSION: '20' - -jobs: - build-package: - name: Build supabase-js package - runs-on: ubuntu-latest - outputs: - tgz-name: ${{ steps.pack.outputs.filename }} - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - uses: actions/setup-node@v4 - with: - node-version: ${{ env.NODE_VERSION }} - - - name: Install dependencies and build - run: | - npm ci - npm run build - npm run build:umd - - - name: Pack npm module - id: pack - run: | - PKG=$(npm pack) - echo "filename=$PKG" >> "$GITHUB_OUTPUT" - - - name: Upload .tgz package - uses: actions/upload-artifact@v4 - with: - name: supabase-tgz - path: ${{ steps.pack.outputs.filename }} - - - name: Upload UMD build - uses: actions/upload-artifact@v4 - with: - name: supabase-umd - path: dist/umd/supabase.js - - test: - name: Unit + Type Check / Node.js ${{ matrix.node }} / OS ${{ matrix.os }} - runs-on: ${{ matrix.os }} - strategy: - matrix: - node: [20] - os: [ubuntu-latest, macos-latest, windows-latest] - fail-fast: false - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.node }} - cache: 'npm' - - - name: Install dependencies - run: npm ci - - - name: Type Check - run: npm run test:types - - - name: Run Unit Tests + Coverage - run: npm run test:coverage - - - name: Upload coverage results to Coveralls - uses: coverallsapp/github-action@v2 - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - path-to-lcov: ./test/coverage/lcov.info - parallel: true - flag-name: node-${{ matrix.node }}-${{ matrix.os }} - - coveralls-finish: - name: Coveralls Finished - runs-on: ubuntu-latest - needs: test - steps: - - name: Coveralls Finished - uses: coverallsapp/github-action@v2 - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - parallel-finished: true - - deno-tests: - name: Deno Tests / ${{ matrix.deno }} - runs-on: ubuntu-latest - needs: build-package - strategy: - matrix: - deno: ['1.x', '2.x'] - fail-fast: false - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Setup Deno - uses: denoland/setup-deno@v2 - with: - deno-version: ${{ matrix.deno }} - - - name: Setup Supabase CLI - uses: supabase/setup-cli@v1 - with: - version: latest - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: ${{ env.NODE_VERSION }} - cache: 'npm' - - name: Download artifact - uses: actions/download-artifact@v4 - with: - name: supabase-tgz - path: ./supabase-pkg - - - name: Start Supabase - run: supabase start - - - name: Install dependencies and build - run: | - npm ci - npm run build - - - name: Run Deno Tests - run: | - cd test/deno - cp ../../supabase-pkg/supabase-supabase-js-0.0.0-automated.tgz . - npm install - npm test || npm test - - - name: Run integration and browser tests on Deno 2.x only - if: ${{ matrix.deno == '2.x' }} - run: npm run test:integration:browser - - - name: Run Edge Functions Tests - if: ${{ matrix.deno == '2.x' }} - run: | - cd test/deno - npm run test:edge-functions - - - name: Stop Supabase - if: always() - run: supabase stop - - node-integration: - name: Node Integration - runs-on: ubuntu-latest - needs: build-package - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: ${{ env.NODE_VERSION }} - cache: 'npm' - - - name: Setup Supabase CLI - uses: supabase/setup-cli@v1 - with: - version: latest - - - name: Start Supabase - run: supabase start - - - name: Install dependencies and build - run: | - npm ci - npm run build - - - name: Install jq - run: sudo apt-get update && sudo apt-get install -y jq - - - name: Run integration tests - run: | - export SUPABASE_SERVICE_ROLE_KEY="$(supabase status --output json | jq -r '.SERVICE_ROLE_KEY')" - npm run test:integration || npm run test:integration - - - name: Stop Supabase - if: always() - run: supabase stop - - next-integration: - name: Next.js Integration - runs-on: ubuntu-latest - needs: build-package - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: ${{ env.NODE_VERSION }} - cache: 'npm' - - - name: Download artifact - uses: actions/download-artifact@v4 - with: - name: supabase-tgz - path: ./supabase-pkg - - - name: Setup Supabase CLI - uses: supabase/setup-cli@v1 - with: - version: latest - - - name: Start Supabase - run: supabase start - - - name: Install Playwright browsers and dependencies - run: npx playwright install --with-deps - - - name: Run integration tests - run: | - cd test/integration/next - cp ../../../supabase-pkg/supabase-supabase-js-0.0.0-automated.tgz . - npm install --legacy-peer-deps - npx playwright install - npm run test - - - name: Stop Supabase - if: always() - run: supabase stop - - expo-tests: - name: Expo Tests - runs-on: ubuntu-latest - needs: build-package - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: ${{ env.NODE_VERSION }} - cache: 'npm' - - - name: Setup Supabase CLI - uses: supabase/setup-cli@v1 - with: - version: latest - - - name: Download artifact - uses: actions/download-artifact@v4 - with: - name: supabase-tgz - path: ./supabase-pkg - - - name: Start Supabase - run: supabase start - - - name: Install dependencies and run tests - run: | - cd test/integration/expo - cp ../../../supabase-pkg/supabase-supabase-js-0.0.0-automated.tgz . - npm install - npm test || npm test - - - name: Stop Supabase - if: always() - run: supabase stop - - bun-integration: - name: Bun Integration - runs-on: ubuntu-latest - needs: build-package - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Setup Bun - uses: oven-sh/setup-bun@v1 - with: - bun-version: latest - - - name: Setup Supabase CLI - uses: supabase/setup-cli@v1 - with: - version: latest - - - name: Download artifact - uses: actions/download-artifact@v4 - with: - name: supabase-tgz - path: ./supabase-pkg - - - name: Start Supabase - run: supabase start - - - name: Install dependencies and run tests - run: | - cd test/integration/bun - cp ../../../supabase-pkg/supabase-supabase-js-0.0.0-automated.tgz . - bun install - bun test - - - name: Stop Supabase - if: always() - run: supabase stop - - websocket-browser-tests: - name: WebSocket Browser Tests - runs-on: ubuntu-latest - needs: build-package - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: ${{ env.NODE_VERSION }} - - - name: Download artifact - uses: actions/download-artifact@v4 - with: - name: supabase-umd - path: ./dist/umd - - - name: Setup Supabase CLI - uses: supabase/setup-cli@v1 - with: - version: latest - - - name: Install Playwright browsers and dependencies - run: npx playwright install --with-deps - - - name: Start Supabase - run: supabase start - - - name: Run WebSocket tests - run: | - cd test/integration/node-browser - npm install - cp ../../../dist/umd/supabase.js . - npm run test - - - name: Stop Supabase - if: always() - run: supabase stop diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml deleted file mode 100644 index 42934652..00000000 --- a/.github/workflows/docs.yml +++ /dev/null @@ -1,38 +0,0 @@ -name: Docs - -on: - push: - branches: - - master - workflow_dispatch: - -jobs: - docs: - name: Publish docs / OS ${{ matrix.os }} / Node ${{ matrix.node }} - strategy: - matrix: - os: [ubuntu-latest] - node: ['20'] - - runs-on: ${{ matrix.os }} - - steps: - - uses: actions/checkout@v4 - - - name: Set up Node - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.node }} - - - run: | - npm ci - npm run docs - npm run docs:json - - - name: Publish - uses: peaceiris/actions-gh-pages@v3 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: docs - force_orphan: true - commit_message: 'docs: update' diff --git a/.github/workflows/external-test.yml b/.github/workflows/external-test.yml deleted file mode 100644 index c5f9816d..00000000 --- a/.github/workflows/external-test.yml +++ /dev/null @@ -1,250 +0,0 @@ -name: External Dependency Test - -on: - workflow_dispatch: - inputs: - triggering_repo: - description: 'Repository that triggered this test' - required: true - type: string - triggering_pr: - description: 'PR number from triggering repository' - required: true - type: string - preview_url: - description: 'Preview package URL' - required: true - type: string - package_name: - description: 'Package name being tested' - required: true - type: string - triggering_sha: - description: 'SHA from triggering repository' - required: true - type: string - -env: - NODE_VERSION: '20' - -jobs: - test-with-preview-dependency: - name: Test supabase-js with preview dependency - runs-on: ubuntu-latest - timeout-minutes: 30 # Overall job timeout - steps: - - name: Generate GitHub App token - id: generate-token - uses: actions/create-github-app-token@v1 - with: - app-id: ${{ vars.CROSS_REPO_APP_ID }} - private-key: ${{ secrets.CROSS_REPO_APP_PRIVATE_KEY }} - owner: supabase - repositories: ${{ inputs.triggering_repo }} - - - name: Post initial comment - uses: actions/github-script@v7 - with: - github-token: ${{ steps.generate-token.outputs.token }} - script: | - // Unique identifier for this bot's comments - const commentIdentifier = ''; - - const body = `${commentIdentifier} - ## 🔄 supabase-js CI Tests Running... - - **Status:** Tests in progress - - Tests triggered by preview release of \`${{ inputs.package_name }}\` - - | Test Suite | Status | - |------------|--------| - | Type Check | ⏳ Running... | - | Unit Tests | ⏳ Pending... | - | Integration Tests | ⏳ Pending... | - - **Preview Package:** \`${{ inputs.preview_url }}\` - **Commit:** [\`${{ inputs.triggering_sha }}\`](https://github.com/supabase/${{ inputs.triggering_repo }}/commit/${{ inputs.triggering_sha }}) - - [View workflow run](https://github.com/supabase/supabase-js/actions/runs/${{ github.run_id }}) - - _This comment will update when tests complete._`; - - try { - // First, try to find an existing comment from this bot - const { data: comments } = await github.rest.issues.listComments({ - owner: 'supabase', - repo: '${{ inputs.triggering_repo }}', - issue_number: parseInt('${{ inputs.triggering_pr }}') - }); - - // Look for a comment with our identifier - const botComment = comments.find(comment => - comment.body && comment.body.includes(commentIdentifier) - ); - - if (botComment) { - // Update existing comment - await github.rest.issues.updateComment({ - owner: 'supabase', - repo: '${{ inputs.triggering_repo }}', - comment_id: botComment.id, - body: body - }); - console.log('Successfully updated existing comment with running status'); - } else { - // Create new comment if none exists - await github.rest.issues.createComment({ - owner: 'supabase', - repo: '${{ inputs.triggering_repo }}', - issue_number: parseInt('${{ inputs.triggering_pr }}'), - body: body - }); - console.log('Successfully posted new comment with running status'); - } - } catch (error) { - console.log('Failed to post/update initial comment:', error.message); - } - - - name: Checkout supabase-js - uses: actions/checkout@v4 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: ${{ env.NODE_VERSION }} - cache: 'npm' - - - name: Install dependencies and build supabase-js - run: | - npm ci - npm run build - - name: Install preview dependency - run: | - # Install the preview package - PREVIEW_PACKAGE="${{ inputs.preview_url }}" - echo "Installing preview package: $PREVIEW_PACKAGE" - npm install "$PREVIEW_PACKAGE" --no-save - - name: Run Type Check - id: type-check - continue-on-error: true - timeout-minutes: 5 - run: | - if npm run test:types; then - echo "result=success" >> $GITHUB_OUTPUT - else - echo "result=failure" >> $GITHUB_OUTPUT - fi - - name: Setup Supabase CLI - uses: supabase/setup-cli@v1 - with: - version: latest - - - name: Start Supabase - timeout-minutes: 10 - run: supabase start - - - name: Install jq for JSON parsing - run: sudo apt-get update && sudo apt-get install -y jq - - - name: Run Unit Tests - id: unit-tests - continue-on-error: true - timeout-minutes: 10 - run: | - if npm run test:coverage; then - echo "result=success" >> $GITHUB_OUTPUT - else - echo "result=failure" >> $GITHUB_OUTPUT - fi - - name: Run Integration Tests - id: integration-tests - continue-on-error: true - timeout-minutes: 10 - run: | - export SUPABASE_SERVICE_ROLE_KEY="$(supabase status --output json | jq -r '.SERVICE_ROLE_KEY')" - if npm run test:integration; then - echo "result=success" >> $GITHUB_OUTPUT - else - echo "result=failure" >> $GITHUB_OUTPUT - fi - - name: Stop Supabase - if: always() - run: supabase stop - - - name: Report results to triggering PR - if: always() - uses: actions/github-script@v7 - with: - github-token: ${{ steps.generate-token.outputs.token }} - script: | - const typeCheckResult = '${{ steps.type-check.outputs.result }}' || 'failure'; - const unitTestResult = '${{ steps.unit-tests.outputs.result }}' || 'failure'; - const integrationTestResult = '${{ steps.integration-tests.outputs.result }}' || 'failure'; - const allPassed = typeCheckResult === 'success' && - unitTestResult === 'success' && - integrationTestResult === 'success'; - const statusIcon = allPassed ? '✅' : '❌'; - const overallStatus = allPassed ? 'PASSED' : 'FAILED'; - - // Unique identifier for this bot's comments (using HTML comment for cleaner look) - const commentIdentifier = ''; - - const body = `${commentIdentifier} - ## ${statusIcon} supabase-js CI Test Results - **Overall Status: ${overallStatus}** - Tests triggered by preview release of \`${{ inputs.package_name }}\` - | Test Suite | Result | - |------------|--------| - | Type Check | ${typeCheckResult === 'success' ? '✅ PASSED' : '❌ FAILED'} | - | Unit Tests | ${unitTestResult === 'success' ? '✅ PASSED' : '❌ FAILED'} | - | Integration Tests | ${integrationTestResult === 'success' ? '✅ PASSED' : '❌ FAILED'} | - **Preview Package:** \`${{ inputs.preview_url }}\` - **Commit:** [\`${{ inputs.triggering_sha }}\`](https://github.com/supabase/${{ inputs.triggering_repo }}/commit/${{ inputs.triggering_sha }}) - ${allPassed ? - '🎉 All tests passed! This preview release is compatible with supabase-js.' : - '⚠️ Some tests failed. Please review the failing tests before merging.'} -
- View workflow run - View full test results -
`; - try { - // First, try to find an existing comment from this bot - const { data: comments } = await github.rest.issues.listComments({ - owner: 'supabase', - repo: '${{ inputs.triggering_repo }}', - issue_number: parseInt('${{ inputs.triggering_pr }}') - }); - // Look for a comment with our identifier - const botComment = comments.find(comment => - comment.body && comment.body.includes(commentIdentifier) - ); - if (botComment) { - // Update existing comment - await github.rest.issues.updateComment({ - owner: 'supabase', - repo: '${{ inputs.triggering_repo }}', - comment_id: botComment.id, - body: body - }); - console.log('Successfully updated existing comment'); - } else { - // Create new comment if none exists - await github.rest.issues.createComment({ - owner: 'supabase', - repo: '${{ inputs.triggering_repo }}', - issue_number: parseInt('${{ inputs.triggering_pr }}'), - body: body - }); - console.log('Successfully posted new comment to PR'); - } - } catch (error) { - console.log('Failed to post/update comment:', error.message); - // Still log the results for manual review - console.log('Test Results Summary:', { - typeCheck: typeCheckResult, - unitTests: unitTestResult, - integrationTests: integrationTestResult, - overallStatus: overallStatus - }); - } diff --git a/.github/workflows/preview-release.yml b/.github/workflows/preview-release.yml deleted file mode 100644 index 0fcdbda7..00000000 --- a/.github/workflows/preview-release.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: Preview release - -permissions: - pull-requests: write - -on: - push: - branches: - - master - pull_request: - types: [opened, synchronize, labeled] - -jobs: - preview: - if: > - github.repository == 'supabase/supabase-js' && - (github.event_name == 'push' || - (github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'trigger: preview'))) - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: '20' - cache: 'npm' - - - name: Install dependencies - run: npm ci - - - name: Build - run: npm run build - - - run: npx pkg-pr-new@latest publish --compact diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 92377af9..00000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,46 +0,0 @@ -name: Release - -on: - push: - branches: - - master - - next - - rc - workflow_dispatch: - -jobs: - test: - uses: ./.github/workflows/ci.yml - - release: - name: Release / Node ${{ matrix.node }} - needs: test - strategy: - matrix: - node: ['20'] - - runs-on: ubuntu-latest - - permissions: - contents: write - issues: write - id-token: write - - steps: - - uses: actions/checkout@v4 - - - name: Set up Node - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.node }} - - - run: | - npm ci - npm run build - - - uses: cycjimmy/semantic-release-action@v4 - with: - semantic_version: 19 - env: - GITHUB_TOKEN: ${{ secrets.GH_ACCESS_TOKEN }} - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 8dfe52ca..00000000 --- a/.gitignore +++ /dev/null @@ -1,115 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -lerna-debug.log* -.DS_Store - -# Diagnostic reports (https://nodejs.org/api/report.html) -report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json - -# 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 -*.lcov - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (https://nodejs.org/api/addons.html) -build/Release - -# Dependency directories -node_modules/ -jspm_packages/ - -# TypeScript v1 declaration files -typings/ - -# TypeScript cache -*.tsbuildinfo - -# Optional npm cache directory -.npm - -# Optional eslint cache -.eslintcache - -# Microbundle cache -.rpt2_cache/ -.rts2_cache_cjs/ -.rts2_cache_es/ -.rts2_cache_umd/ - -# Optional REPL history -.node_repl_history - -# Output of 'npm pack' -*.tgz - -# Yarn Integrity file -.yarn-integrity - -# dotenv environment variables file -.env -.env.test - -# parcel-bundler cache (https://parceljs.org/) -.cache - -# Next.js build output -.next - -# Nuxt.js build / generate output -.nuxt -dist - -# Gatsby files -.cache/ -# Comment in the public line in if your project uses Gatsby and *not* Next.js -# https://nextjs.org/blog/next-9-1#public-directory-support -# public - -# vuepress build output -.vuepress/dist - -# Serverless directories -.serverless/ - -# FuseBox cache -.fusebox/ - -# DynamoDB Local files -.dynamodb/ - -# TernJS port file -.tern-port - -docs/v2 - -# Test package-lock files (use local tarball, checksums change with builds) -test/*/package-lock.json -test/integration/*/package-lock.json - -.cursor/ - -deno.lock \ No newline at end of file diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/.npmignore b/.npmignore deleted file mode 100644 index 808eb902..00000000 --- a/.npmignore +++ /dev/null @@ -1,27 +0,0 @@ -*.log -npm-debug.log* - -# Coverage directory used by tools like istanbul -coverage -.nyc_output - -# Dependency directories -node_modules - -# npm package lock -package-lock.json -yarn.lock - -# project files -src -test -examples -example-next-js -umd_temp -CHANGELOG.md -.travis.yml -.editorconfig -.eslintignore -.eslintrc -.babelrc -.gitignore diff --git a/.prettierignore b/.prettierignore deleted file mode 100644 index 2c0e30b9..00000000 --- a/.prettierignore +++ /dev/null @@ -1,5 +0,0 @@ -.expo -.next -node_modules -package-lock.json -docker* \ No newline at end of file diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index c4a007d3..00000000 --- a/.prettierrc +++ /dev/null @@ -1,8 +0,0 @@ -{ - "trailingComma": "es5", - "tabWidth": 2, - "semi": false, - "singleQuote": true, - "printWidth": 100 - } - \ No newline at end of file diff --git a/.releaserc.json b/.releaserc.json deleted file mode 100644 index d7a098b7..00000000 --- a/.releaserc.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "branches": [ - { "name": "master" }, - { "name": "next", "channel": "next", "prerelease": true }, - { "name": "rc", "channel": "rc", "prerelease": true } - ], - "plugins": [ - [ - "semantic-release-plugin-update-version-in-files", - { - "files": [ - "src/lib/version.ts", - "dist/main/lib/version.js", - "dist/main/lib/version.d.ts", - "dist/module/lib/version.js", - "dist/module/lib/version.d.ts", - "dist/umd/supabase.js" - ], - "placeholder": "0.0.0-automated" - } - ], - "@semantic-release/commit-analyzer", - "@semantic-release/release-notes-generator", - [ - "@semantic-release/github", - { - "successComment": false, - "releasedLabels": false, - "failTitle": false, - "addReleases": false - } - ], - "@semantic-release/npm", - "@sebbo2002/semantic-release-jsr" - ] -} diff --git a/LICENSE b/LICENSE deleted file mode 100644 index ddeba6a0..00000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2020 Supabase - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/README.md b/README.md deleted file mode 100644 index 6e56754d..00000000 --- a/README.md +++ /dev/null @@ -1,170 +0,0 @@ -# `supabase-js` - Isomorphic JavaScript Client for Supabase. - -- **Documentation:** https://supabase.com/docs/reference/javascript/start -- TypeDoc: https://supabase.github.io/supabase-js/v2/ - -
- -[![pkg.pr.new](https://pkg.pr.new/badge/supabase/supabase-js)](https://pkg.pr.new/~/supabase/supabase-js) - -
- -## Usage - -First of all, you need to install the library: - -```sh -npm install @supabase/supabase-js -``` - -Then you're able to import the library and establish the connection with the database: - -```js -import { createClient } from '@supabase/supabase-js' - -// Create a single supabase client for interacting with your database -const supabase = createClient('https://xyzcompany.supabase.co', 'public-anon-key') -``` - -### UMD - -You can use plain ` -``` - -or even: - -```html - -``` - -Then you can use it from a global `supabase` variable: - -```html - -``` - -### ESM - -You can use ` -``` - -### Deno - -You can use supabase-js in the Deno runtime via [JSR](https://jsr.io/@supabase/supabase-js): - -```js -import { createClient } from 'jsr:@supabase/supabase-js@2' -``` - -### Custom `fetch` implementation - -`supabase-js` uses the [`cross-fetch`](https://www.npmjs.com/package/cross-fetch) library to make HTTP requests, but an alternative `fetch` implementation can be provided as an option. This is most useful in environments where `cross-fetch` is not compatible, for instance Cloudflare Workers: - -```js -import { createClient } from '@supabase/supabase-js' - -// Provide a custom `fetch` implementation as an option -const supabase = createClient('https://xyzcompany.supabase.co', 'public-anon-key', { - global: { - fetch: (...args) => fetch(...args), - }, -}) -``` - -## Support Policy - -This section outlines the scope of support for various runtime environments in Supabase JavaScript client. - -### Node.js - -We only support Node.js versions that are in **Active LTS** or **Maintenance** status as defined by the [official Node.js release schedule](https://nodejs.org/en/about/previous-releases#release-schedule). This means we support versions that are currently receiving long-term support and critical bug fixes. - -When a Node.js version reaches end-of-life and is no longer in Active LTS or Maintenance status, Supabase will drop it in a **minor release**, and **this won't be considered a breaking change**. - -### Deno - -We support Deno versions that are currently receiving active development and security updates. We follow the [official Deno release schedule](https://docs.deno.com/runtime/fundamentals/stability_and_releases/) and only support versions from the `stable` and `lts` release channels. - -When a Deno version reaches end-of-life and is no longer receiving security updates, Supabase will drop it in a **minor release**, and **this won't be considered a breaking change**. - -### Important Notes - -- **Experimental features**: Features marked as experimental may be removed or changed without notice - -## Testing - -### Unit Testing - -```bash -npm test -``` - -### Integration Testing - -```bash -supabase start -npm run test:integration -``` - -### Expo Testing - -The project includes Expo integration tests to ensure compatibility with React Native environments. - -### Next.js Testing - -The project includes Next.js integration tests to ensure compatibility with React SSR environments. - -### Deno Testing - -The project includes Deno integration tests to ensure compatibility with Deno runtime. - -### Bun Testing - -The project includes Bun integration tests to ensure compatibility with Bun runtime. - -#### CI/CD Testing - -When running on CI, the tests automatically use the latest dependencies from the root project. The CI pipeline: - -1. Builds the main project with current dependencies -2. Creates a package archive (`.tgz`) with the latest versions -3. Uses this archive in Expo, Next.js, and Deno tests to ensure consistency - -#### Local Development - -For local development of Expo, Next.js, and Deno tests, you can update dependencies using automated scripts: - -```bash -# Update all test dependencies at once -npm run update:test-deps - -# Or update specific test environments: -npm run update:test-deps:expo # Expo tests only -npm run update:test-deps:next # Next.js tests only -npm run update:test-deps:deno # Deno tests only -npm run update:test-deps:bun # Bun tests only -``` - -**Note:** The CI automatically handles dependency synchronization, so manual updates are only needed for local development and testing. - -## Badges - -[![Coverage Status](https://coveralls.io/repos/github/supabase/supabase-js/badge.svg?branch=master)](https://coveralls.io/github/supabase/supabase-js?branch=master) diff --git a/RELEASE.md b/RELEASE.md deleted file mode 100644 index 95d33b49..00000000 --- a/RELEASE.md +++ /dev/null @@ -1,179 +0,0 @@ -# Releases - -Releases are handled by Semantic release. This document is for forcing and documenting any non-code changes. - -## 1.11.8 - -- Implement @supabase/storage-js - -## 1.4.0 - -- Ability to redirect a user to a specified location after confirmation - -## 1.1.4 - -- bump @supabase/gotrue-js from 1.9.3.2 to [1.10.1](https://github.com/supabase/gotrue-js/releases/tag/v1.10.1) - - Includes Next.js/Express helpers and Password reset helpers - -## 1.1.3 - -- bump @supabase/postgrest-js from 0.21.2 to 0.22.0 -- Fix: Added 'AuthUser' to the exports - -## 1.0.6 - -- Bumps gotrue-js so that it works with React Native: https://github.com/supabase/gotrue-js/pull/26 - -## 1.0.5 - -- Adds local storage options for Auth. - -## 1.0.4 - -- Upgrades postgrest-js dependency to fix ordering for JSON columns. (https://github.com/supabase/postgrest-js/pull/132) - -## 1.0.2 - -- Fixes link in readme for NPM. - -## 1.0.1 - Improved DX - -- Upgraded the `supabase.auth` to [gotrue-js](https://github.com/supabase/gotrue-js) - supports Oath logins & more -- We always return errors, not throwing errors. -- We only generate one socket connection per supabase client. -- Native typescript -- Fixes #32 Major DX change: response and error handling -- Fixes #49 When no `supabaseKey` is passed in it throws an error -- Fixes #31 chore: set up semantic releases -- Fixes #15 `supabase.auth.logout()` throws "Invalid user" error. -- Fixes #20 Auth: Change DX of user management -- Fixes #30 Supabase auth interface missing informiation -- Fixes https://github.com/supabase/supabase/issues/147 https://github.com/supabase/supabase/issues/147 -- Partial fix for https://github.com/supabase/realtime-js/issues/53 - if there is no token provided. The error needs to be caught at a socket level. - -#### Breaking changes - -**`body` is now `data`** - -Previously: - -```jsx -const { body } = supabase.from('todos').select('*') -``` - -Now: - -```jsx -const { data } = supabase.from('todos').select('*') -``` - -**Errors are returned not thrown** - -Previously: - -```jsx -try { - const { body } = supabase.from('todos').select('*') -} catch (error) { - console.log(error) -} -``` - -Now: - -```jsx -const { data, error } = supabase.from('todos').select('*') -if (error) console.log(error) -``` - -**`ova()` and `ovr()` are now just `ov()`** - -Previously: - -```jsx -try { - const { body } = supabase.from('todos').select('*').ovr('population_range_millions', [150, 250]) -} catch (error) { - console.log(error) -} -``` - -Now: - -```jsx -const { data, error } = supabase - .from('todos') - .select('*') - .ov('population_range_millions', [150, 250]) -if (error) console.log(error) -``` - -**`offset()` is removed** - -You can now use range() instead of `limit()` + `offset()` - -**`ova()` and `ovr()` are now just `ov()`** - -Previously: - -```js -let countries = await supabase.from('cities').select('name').offset(10).limit(10) -``` - -Now: - -```js -let countries = await supabase.from('cities').select('name').range(10, 20) -``` - -**`signup()` is now `signUp()` and `email` / `password` is passed as an object** - -Previously: - -```jsx -const { - body: { user }, -} = await supabase.auth.signup('someone@email.com', 'password') -``` - -Now: - -```jsx -const { user, error } = await supabase.auth.signUp({ - email: 'someone@email.com', - password: 'password', -}) -``` - -**`login()` is now `signIn()` and `email` / `password` is passed as an object** - -Previously: - -```jsx -const { - body: { user }, -} = await supabase.auth.signup('someone@email.com', 'password') -``` - -Now: - -```jsx -const { user, error } = await supabase.auth.signIn({ - email: 'someone@email.com', - password: 'password', -}) -``` - -**`logout()` is now `signOut()`** - -Previously: - -```jsx -await supabase.auth.logout() -``` - -Now: - -```jsx -await supabase.auth.signOut() -``` diff --git a/deno.lock b/deno.lock deleted file mode 100644 index a65c6b20..00000000 --- a/deno.lock +++ /dev/null @@ -1,91 +0,0 @@ -{ - "version": "5", - "redirects": { - "https://deno.land/x/sleep/mod.ts": "https://deno.land/x/sleep@v1.3.0/mod.ts" - }, - "remote": { - "https://deno.land/std@0.192.0/_util/asserts.ts": "178dfc49a464aee693a7e285567b3d0b555dc805ff490505a8aae34f9cfb1462", - "https://deno.land/std@0.192.0/async/abortable.ts": "fd682fa46f3b7b16b4606a5ab52a7ce309434b76f820d3221bdfb862719a15d7", - "https://deno.land/std@0.192.0/async/deadline.ts": "58f72a3cc0fcb731b2cc055ba046f4b5be3349ff6bf98f2e793c3b969354aab2", - "https://deno.land/std@0.192.0/async/debounce.ts": "adab11d04ca38d699444ac8a9d9856b4155e8dda2afd07ce78276c01ea5a4332", - "https://deno.land/std@0.192.0/async/deferred.ts": "42790112f36a75a57db4a96d33974a936deb7b04d25c6084a9fa8a49f135def8", - "https://deno.land/std@0.192.0/async/delay.ts": "73aa04cec034c84fc748c7be49bb15cac3dd43a57174bfdb7a4aec22c248f0dd", - "https://deno.land/std@0.192.0/async/mod.ts": "f04344fa21738e5ad6bea37a6bfffd57c617c2d372bb9f9dcfd118a1b622e576", - "https://deno.land/std@0.192.0/async/mux_async_iterator.ts": "70c7f2ee4e9466161350473ad61cac0b9f115cff4c552eaa7ef9d50c4cbb4cc9", - "https://deno.land/std@0.192.0/async/pool.ts": "f1b8d3df4d7fd3c73f8cbc91cc2e8b8e950910f1eab94230b443944d7584c657", - "https://deno.land/std@0.192.0/async/retry.ts": "6521c061a5ab24e8b1ae624bdc581c4243d1d574f99dc7f5a2a195c2241fb1b8", - "https://deno.land/std@0.192.0/async/tee.ts": "47e42d35f622650b02234d43803d0383a89eb4387e1b83b5a40106d18ae36757", - "https://deno.land/std@0.192.0/http/server.ts": "1b23463b5b36e4eebc495417f6af47a6f7d52e3294827a1226d2a1aab23d9d20", - "https://deno.land/std@0.224.0/assert/_constants.ts": "a271e8ef5a573f1df8e822a6eb9d09df064ad66a4390f21b3e31f820a38e0975", - "https://deno.land/std@0.224.0/assert/assert.ts": "09d30564c09de846855b7b071e62b5974b001bb72a4b797958fe0660e7849834", - "https://deno.land/std@0.224.0/assert/assert_almost_equals.ts": "9e416114322012c9a21fa68e187637ce2d7df25bcbdbfd957cd639e65d3cf293", - "https://deno.land/std@0.224.0/assert/assert_array_includes.ts": "14c5094471bc8e4a7895fc6aa5a184300d8a1879606574cb1cd715ef36a4a3c7", - "https://deno.land/std@0.224.0/assert/assert_equals.ts": "3bbca947d85b9d374a108687b1a8ba3785a7850436b5a8930d81f34a32cb8c74", - "https://deno.land/std@0.224.0/assert/assert_exists.ts": "43420cf7f956748ae6ed1230646567b3593cb7a36c5a5327269279c870c5ddfd", - "https://deno.land/std@0.224.0/assert/assert_false.ts": "3e9be8e33275db00d952e9acb0cd29481a44fa0a4af6d37239ff58d79e8edeff", - "https://deno.land/std@0.224.0/assert/assert_greater.ts": "5e57b201fd51b64ced36c828e3dfd773412c1a6120c1a5a99066c9b261974e46", - "https://deno.land/std@0.224.0/assert/assert_greater_or_equal.ts": "9870030f997a08361b6f63400273c2fb1856f5db86c0c3852aab2a002e425c5b", - "https://deno.land/std@0.224.0/assert/assert_instance_of.ts": "e22343c1fdcacfaea8f37784ad782683ec1cf599ae9b1b618954e9c22f376f2c", - "https://deno.land/std@0.224.0/assert/assert_is_error.ts": "f856b3bc978a7aa6a601f3fec6603491ab6255118afa6baa84b04426dd3cc491", - "https://deno.land/std@0.224.0/assert/assert_less.ts": "60b61e13a1982865a72726a5fa86c24fad7eb27c3c08b13883fb68882b307f68", - "https://deno.land/std@0.224.0/assert/assert_less_or_equal.ts": "d2c84e17faba4afe085e6c9123a63395accf4f9e00150db899c46e67420e0ec3", - "https://deno.land/std@0.224.0/assert/assert_match.ts": "ace1710dd3b2811c391946954234b5da910c5665aed817943d086d4d4871a8b7", - "https://deno.land/std@0.224.0/assert/assert_not_equals.ts": "78d45dd46133d76ce624b2c6c09392f6110f0df9b73f911d20208a68dee2ef29", - "https://deno.land/std@0.224.0/assert/assert_not_instance_of.ts": "3434a669b4d20cdcc5359779301a0588f941ffdc2ad68803c31eabdb4890cf7a", - "https://deno.land/std@0.224.0/assert/assert_not_match.ts": "df30417240aa2d35b1ea44df7e541991348a063d9ee823430e0b58079a72242a", - "https://deno.land/std@0.224.0/assert/assert_not_strict_equals.ts": "37f73880bd672709373d6dc2c5f148691119bed161f3020fff3548a0496f71b8", - "https://deno.land/std@0.224.0/assert/assert_object_match.ts": "411450fd194fdaabc0089ae68f916b545a49d7b7e6d0026e84a54c9e7eed2693", - "https://deno.land/std@0.224.0/assert/assert_rejects.ts": "4bee1d6d565a5b623146a14668da8f9eb1f026a4f338bbf92b37e43e0aa53c31", - "https://deno.land/std@0.224.0/assert/assert_strict_equals.ts": "b4f45f0fd2e54d9029171876bd0b42dd9ed0efd8f853ab92a3f50127acfa54f5", - "https://deno.land/std@0.224.0/assert/assert_string_includes.ts": "496b9ecad84deab72c8718735373feb6cdaa071eb91a98206f6f3cb4285e71b8", - "https://deno.land/std@0.224.0/assert/assert_throws.ts": "c6508b2879d465898dab2798009299867e67c570d7d34c90a2d235e4553906eb", - "https://deno.land/std@0.224.0/assert/assertion_error.ts": "ba8752bd27ebc51f723702fac2f54d3e94447598f54264a6653d6413738a8917", - "https://deno.land/std@0.224.0/assert/equal.ts": "bddf07bb5fc718e10bb72d5dc2c36c1ce5a8bdd3b647069b6319e07af181ac47", - "https://deno.land/std@0.224.0/assert/fail.ts": "0eba674ffb47dff083f02ced76d5130460bff1a9a68c6514ebe0cdea4abadb68", - "https://deno.land/std@0.224.0/assert/mod.ts": "48b8cb8a619ea0b7958ad7ee9376500fe902284bb36f0e32c598c3dc34cbd6f3", - "https://deno.land/std@0.224.0/assert/unimplemented.ts": "8c55a5793e9147b4f1ef68cd66496b7d5ba7a9e7ca30c6da070c1a58da723d73", - "https://deno.land/std@0.224.0/assert/unreachable.ts": "5ae3dbf63ef988615b93eb08d395dda771c96546565f9e521ed86f6510c29e19", - "https://deno.land/std@0.224.0/fmt/colors.ts": "508563c0659dd7198ba4bbf87e97f654af3c34eb56ba790260f252ad8012e1c5", - "https://deno.land/std@0.224.0/internal/diff.ts": "6234a4b493ebe65dc67a18a0eb97ef683626a1166a1906232ce186ae9f65f4e6", - "https://deno.land/std@0.224.0/internal/format.ts": "0a98ee226fd3d43450245b1844b47003419d34d210fa989900861c79820d21c2", - "https://deno.land/std@0.224.0/internal/mod.ts": "534125398c8e7426183e12dc255bb635d94e06d0f93c60a297723abe69d3b22e", - "https://deno.land/std@0.224.0/testing/_test_suite.ts": "f10a8a6338b60c403f07a76f3f46bdc9f1e1a820c0a1decddeb2949f7a8a0546", - "https://deno.land/std@0.224.0/testing/asserts.ts": "d0cdbabadc49cc4247a50732ee0df1403fdcd0f95360294ad448ae8c240f3f5c", - "https://deno.land/std@0.224.0/testing/bdd.ts": "3e4de4ff6d8f348b5574661cef9501b442046a59079e201b849d0e74120d476b", - "https://deno.land/x/sleep@v1.3.0/mod.ts": "e9955ecd3228a000e29d46726cd6ab14b65cf83904e9b365f3a8d64ec61c1af3", - "https://deno.land/x/sleep@v1.3.0/sleep.ts": "b6abaca093b094b0c2bba94f287b19a60946a8d15764d168f83fcf555f5bb59e" - }, - "workspace": { - "packageJson": { - "dependencies": [ - "npm:@sebbo2002/semantic-release-jsr@1", - "npm:@solana/wallet-standard-features@^1.3.0", - "npm:@supabase/auth-js@2.71.1", - "npm:@supabase/functions-js@2.4.5", - "npm:@supabase/node-fetch@2.6.15", - "npm:@supabase/postgrest-js@1.19.4", - "npm:@supabase/realtime-js@2.11.15", - "npm:@supabase/storage-js@^2.10.4", - "npm:@types/jest@^29.2.5", - "npm:husky@^4.3.8", - "npm:jest@^29.3.1", - "npm:jsr@~0.13.5", - "npm:npm-run-all@^4.1.5", - "npm:prettier@^2.5.1", - "npm:pretty-quick@^3.1.3", - "npm:puppeteer@^24.9.0", - "npm:rimraf@^3.0.2", - "npm:semantic-release-plugin-update-version-in-files@^1.1.0", - "npm:serve@^14.2.1", - "npm:ts-jest@^29.0.5", - "npm:ts-loader@^8.0.11", - "npm:ts-node@^10.9.1", - "npm:tsd@~0.30.4", - "npm:typedoc@~0.22.16", - "npm:typescript@^4.5.5", - "npm:webpack-cli@^4.9.2", - "npm:webpack@^5.69.1" - ] - } - } -} diff --git a/jest.config.ts b/jest.config.ts deleted file mode 100644 index 19714aa5..00000000 --- a/jest.config.ts +++ /dev/null @@ -1,19 +0,0 @@ -import type { Config } from '@jest/types' - -const config: Config.InitialOptions = { - preset: 'ts-jest', - testEnvironment: 'node', - clearMocks: true, - collectCoverage: false, - coverageDirectory: './test/coverage', - coverageReporters: ['json', 'html', 'lcov'], - collectCoverageFrom: [ - './src/**/*.{js,ts}', - './src/**/*.unit.test.ts', - '!**/node_modules/**', - '!**/vendor/**', - '!**/vendor/**', - ], - testPathIgnorePatterns: ['/node_modules/', '/dist/', '/examples/'], -} -export default config diff --git a/jsr.json b/jsr.json deleted file mode 100644 index 5c750b73..00000000 --- a/jsr.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "@supabase/supabase-js", - "version": "0.0.0-automated", - "exports": "./src/index.ts", - "exclude": ["examples"] -} diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index fdda4634..00000000 --- a/package-lock.json +++ /dev/null @@ -1,8817 +0,0 @@ -{ - "name": "@supabase/supabase-js", - "version": "0.0.0-automated", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "@supabase/supabase-js", - "version": "0.0.0-automated", - "license": "MIT", - "dependencies": { - "@supabase/auth-js": "2.71.1", - "@supabase/functions-js": "2.4.5", - "@supabase/node-fetch": "2.6.15", - "@supabase/postgrest-js": "1.21.3", - "@supabase/realtime-js": "2.15.1", - "@supabase/storage-js": "^2.10.4" - }, - "devDependencies": { - "@sebbo2002/semantic-release-jsr": "^1.0.0", - "@solana/wallet-standard-features": "^1.3.0", - "@types/jest": "^29.2.5", - "husky": "^4.3.8", - "jest": "^29.3.1", - "jsr": "^0.13.5", - "npm-run-all": "^4.1.5", - "prettier": "^2.5.1", - "pretty-quick": "^3.1.3", - "puppeteer": "^24.9.0", - "rimraf": "^3.0.2", - "semantic-release-plugin-update-version-in-files": "^1.1.0", - "serve": "^14.2.1", - "ts-jest": "^29.0.5", - "ts-loader": "^8.0.11", - "ts-node": "^10.9.1", - "tsd": "^0.30.4", - "typedoc": "^0.22.16", - "typescript": "^4.5.5", - "webpack": "^5.69.1", - "webpack-cli": "^4.9.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==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", - "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.21.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.7.tgz", - "integrity": "sha512-KYMqFYTaenzMK4yUtf4EW9wc4N9ef80FsbMtkwool5zpwl4YrT1SdWYSTRcT94KO4hannogdS+LxY7L+arP3gA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.21.8", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.8.tgz", - "integrity": "sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.21.4", - "@babel/generator": "^7.21.5", - "@babel/helper-compilation-targets": "^7.21.5", - "@babel/helper-module-transforms": "^7.21.5", - "@babel/helpers": "^7.21.5", - "@babel/parser": "^7.21.8", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.5", - "@babel/types": "^7.21.5", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/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==", - "dev": true - }, - "node_modules/@babel/generator": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", - "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.23.0", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.5.tgz", - "integrity": "sha512-1RkbFGUKex4lvsB9yhIfWltJM5cZKUftB2eNajaDv3dCMEp49iBG0K14uH8NnX9IPux2+mK7JGEOB0jn48/J6w==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.21.5", - "@babel/helper-validator-option": "^7.21.0", - "browserslist": "^4.21.3", - "lru-cache": "^5.1.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@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==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@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==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@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==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz", - "integrity": "sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.21.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.5.tgz", - "integrity": "sha512-bI2Z9zBGY2q5yMHoBvJ2a9iX3ZOAzJPm7Q8Yz6YeoUjU/Cvhmi2G4QyTNyPBqqXSgTjUxRg3L0xV45HvkNWWBw==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.21.5", - "@babel/helper-module-imports": "^7.21.4", - "@babel/helper-simple-access": "^7.21.5", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.5", - "@babel/types": "^7.21.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz", - "integrity": "sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz", - "integrity": "sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.21.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@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==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", - "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", - "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.1.tgz", - "integrity": "sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.27.1", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.2.tgz", - "integrity": "sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.27.1" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@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==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.21.4.tgz", - "integrity": "sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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==", - "dev": true, - "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==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz", - "integrity": "sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/template": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", - "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/parser": "^7.27.2", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", - "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@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.0", - "@babel/types": "^7.23.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.1.tgz", - "integrity": "sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "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==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/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==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.5.0.tgz", - "integrity": "sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==", - "dev": true, - "dependencies": { - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/core": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.5.0.tgz", - "integrity": "sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==", - "dev": true, - "dependencies": { - "@jest/console": "^29.5.0", - "@jest/reporters": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.5.0", - "jest-config": "^29.5.0", - "jest-haste-map": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.5.0", - "jest-resolve-dependencies": "^29.5.0", - "jest-runner": "^29.5.0", - "jest-runtime": "^29.5.0", - "jest-snapshot": "^29.5.0", - "jest-util": "^29.5.0", - "jest-validate": "^29.5.0", - "jest-watcher": "^29.5.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.5.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/core/node_modules/ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/environment": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.5.0.tgz", - "integrity": "sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==", - "dev": true, - "dependencies": { - "@jest/fake-timers": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "jest-mock": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.5.0.tgz", - "integrity": "sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==", - "dev": true, - "dependencies": { - "expect": "^29.5.0", - "jest-snapshot": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect-utils": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.5.0.tgz", - "integrity": "sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==", - "dev": true, - "dependencies": { - "jest-get-type": "^29.4.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/fake-timers": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.5.0.tgz", - "integrity": "sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==", - "dev": true, - "dependencies": { - "@jest/types": "^29.5.0", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.5.0", - "jest-mock": "^29.5.0", - "jest-util": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/globals": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.5.0.tgz", - "integrity": "sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.5.0", - "@jest/expect": "^29.5.0", - "@jest/types": "^29.5.0", - "jest-mock": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/reporters": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.5.0.tgz", - "integrity": "sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==", - "dev": true, - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@jridgewell/trace-mapping": "^0.3.15", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0", - "jest-worker": "^29.5.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/schemas": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz", - "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==", - "dev": true, - "dependencies": { - "@sinclair/typebox": "^0.25.16" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/source-map": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.4.3.tgz", - "integrity": "sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.15", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-result": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.5.0.tgz", - "integrity": "sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==", - "dev": true, - "dependencies": { - "@jest/console": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.5.0.tgz", - "integrity": "sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==", - "dev": true, - "dependencies": { - "@jest/test-result": "^29.5.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.5.0.tgz", - "integrity": "sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.5.0", - "@jridgewell/trace-mapping": "^0.3.15", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", - "jest-regex-util": "^29.4.3", - "jest-util": "^29.5.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/types": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", - "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.4.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": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "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==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "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==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "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==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, - "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==", - "dev": true - }, - "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==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@puppeteer/browsers": { - "version": "2.10.5", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.10.5.tgz", - "integrity": "sha512-eifa0o+i8dERnngJwKrfp3dEq7ia5XFyoqB17S4gK8GhsQE4/P8nxOfQSE0zQHxzzLo/cmF+7+ywEQ7wK7Fb+w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "debug": "^4.4.1", - "extract-zip": "^2.0.1", - "progress": "^2.0.3", - "proxy-agent": "^6.5.0", - "semver": "^7.7.2", - "tar-fs": "^3.0.8", - "yargs": "^17.7.2" - }, - "bin": { - "browsers": "lib/cjs/main-cli.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@puppeteer/browsers/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@sebbo2002/semantic-release-jsr": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@sebbo2002/semantic-release-jsr/-/semantic-release-jsr-1.0.0.tgz", - "integrity": "sha512-R4CQqDfzvaaPXcwjUknmR/mrZkG3qhSG6zDqZ92XOWPoDdIfg6O4jmtTlQaxKVGGf62G4NaMhsAoEQtpSYjz0A==", - "dev": true, - "dependencies": { - "jsr": "^0.12.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@sebbo2002/semantic-release-jsr/node_modules/jsr": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/jsr/-/jsr-0.12.4.tgz", - "integrity": "sha512-ZWDvqQE8014fWz9QBrkiuvRQ8mH97PRD13VIDzoMXDem3ff2S+wfXw+YAvrZE0aKzxh9FuHJX0HQRQ2MUHshig==", - "dev": true, - "license": "MIT", - "dependencies": { - "kolorist": "^1.8.0", - "node-stream-zip": "^1.15.0", - "semiver": "^1.1.0" - }, - "bin": { - "jsr": "dist/bin.js" - } - }, - "node_modules/@sinclair/typebox": { - "version": "0.25.24", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", - "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==", - "dev": true - }, - "node_modules/@sinonjs/commons": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", - "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz", - "integrity": "sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^2.0.0" - } - }, - "node_modules/@solana/wallet-standard-features": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@solana/wallet-standard-features/-/wallet-standard-features-1.3.0.tgz", - "integrity": "sha512-ZhpZtD+4VArf6RPitsVExvgkF+nGghd1rzPjd97GmBximpnt1rsUxMOEyoIEuH3XBxPyNB6Us7ha7RHWQR+abg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@wallet-standard/base": "^1.1.0", - "@wallet-standard/features": "^1.1.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/@supabase/auth-js": { - "version": "2.71.1", - "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.71.1.tgz", - "integrity": "sha512-mMIQHBRc+SKpZFRB2qtupuzulaUhFYupNyxqDj5Jp/LyPvcWvjaJzZzObv6URtL/O6lPxkanASnotGtNpS3H2Q==", - "license": "MIT", - "dependencies": { - "@supabase/node-fetch": "^2.6.14" - } - }, - "node_modules/@supabase/functions-js": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.4.5.tgz", - "integrity": "sha512-v5GSqb9zbosquTo6gBwIiq7W9eQ7rE5QazsK/ezNiQXdCbY+bH8D9qEaBIkhVvX4ZRW5rP03gEfw5yw9tiq4EQ==", - "dependencies": { - "@supabase/node-fetch": "^2.6.14" - } - }, - "node_modules/@supabase/node-fetch": { - "version": "2.6.15", - "resolved": "https://registry.npmjs.org/@supabase/node-fetch/-/node-fetch-2.6.15.tgz", - "integrity": "sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - } - }, - "node_modules/@supabase/postgrest-js": { - "version": "1.21.3", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.21.3.tgz", - "integrity": "sha512-rg3DmmZQKEVCreXq6Am29hMVe1CzemXyIWVYyyua69y6XubfP+DzGfLxME/1uvdgwqdoaPbtjBDpEBhqxq1ZwA==", - "license": "MIT", - "dependencies": { - "@supabase/node-fetch": "^2.6.14" - } - }, - "node_modules/@supabase/realtime-js": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.15.1.tgz", - "integrity": "sha512-edRFa2IrQw50kNntvUyS38hsL7t2d/psah6om6aNTLLcWem0R6bOUq7sk7DsGeSlNfuwEwWn57FdYSva6VddYw==", - "license": "MIT", - "dependencies": { - "@supabase/node-fetch": "^2.6.13", - "@types/phoenix": "^1.6.6", - "@types/ws": "^8.18.1", - "ws": "^8.18.2" - } - }, - "node_modules/@supabase/storage-js": { - "version": "2.10.4", - "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.10.4.tgz", - "integrity": "sha512-cvL02GarJVFcNoWe36VBybQqTVRq6wQSOCvTS64C+eyuxOruFIm1utZAY0xi2qKtHJO3EjKaj8iWJKySusDmAQ==", - "license": "MIT", - "dependencies": { - "@supabase/node-fetch": "^2.6.14" - } - }, - "node_modules/@tootallnate/quickjs-emscripten": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", - "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true - }, - "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==", - "dev": true - }, - "node_modules/@tsd/typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/@tsd/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-CQlfzol0ldaU+ftWuG52vH29uRoKboLinLy84wS8TQOu+m+tWoaUfk4svL4ij2V8M5284KymJBlHUusKj6k34w==", - "dev": true, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/@types/babel__core": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz", - "integrity": "sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.18.5", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.5.tgz", - "integrity": "sha512-enCvTL8m/EHS/zIvJno9nE+ndYPh1/oNFzRYRmtUqJICG2VnCSBzMLW5VN2KCQU91f23tsNKR8v7VJJQMatl7Q==", - "dev": true, - "dependencies": { - "@babel/types": "^7.3.0" - } - }, - "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==", - "dev": true - }, - "node_modules/@types/graceful-fs": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", - "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest": { - "version": "29.5.1", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.1.tgz", - "integrity": "sha512-tEuVcHrpaixS36w7hpsfLBLpjtMRJUE09/MHXn923LOVojDwyC14cWcfc0rDs0VEfUyYmt/+iX1kxxp+gZMcaQ==", - "dev": true, - "dependencies": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "node_modules/@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", - "dev": true - }, - "node_modules/@types/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", - "dev": true - }, - "node_modules/@types/node": { - "version": "20.1.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.1.3.tgz", - "integrity": "sha512-NP2yfZpgmf2eDRPmgGq+fjGjSwFgYbihA8/gK+ey23qT9RkxsgNTZvGOEpXgzIGqesTYkElELLgtKoMQTys5vA==" - }, - "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==", - "dev": true - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "node_modules/@types/phoenix": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.6.tgz", - "integrity": "sha512-PIzZZlEppgrpoT2QgbnDU+MMzuR6BbCjllj0bM70lWoejMeNJAxCchxnv7J3XFkI8MpygtRpzXrIlmWUBclP5A==", - "license": "MIT" - }, - "node_modules/@types/prettier": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", - "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", - "dev": true - }, - "node_modules/@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "dev": true - }, - "node_modules/@types/ws": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", - "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", - "dev": true - }, - "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, - "license": "MIT", - "optional": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@wallet-standard/base": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@wallet-standard/base/-/base-1.1.0.tgz", - "integrity": "sha512-DJDQhjKmSNVLKWItoKThJS+CsJQjR9AOBOirBVT1F9YpRyC9oYHE+ZnSf8y8bxUphtKqdQMPVQ2mHohYdRvDVQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=16" - } - }, - "node_modules/@wallet-standard/features": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@wallet-standard/features/-/features-1.1.0.tgz", - "integrity": "sha512-hiEivWNztx73s+7iLxsuD1sOJ28xtRix58W7Xnz4XzzA/pF0+aicnWgjOdA10doVDEDZdUuZCIIqG96SFNlDUg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@wallet-standard/base": "^1.1.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", - "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", - "dev": true, - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" - } - }, - "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==", - "dev": true - }, - "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==", - "dev": true - }, - "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==", - "dev": true - }, - "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==", - "dev": true, - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@xtuc/long": "4.2.2" - } - }, - "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==", - "dev": true - }, - "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==", - "dev": true, - "dependencies": { - "@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/@webassemblyjs/ieee754": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", - "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", - "dev": true, - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", - "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", - "dev": true, - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "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==", - "dev": true - }, - "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==", - "dev": true, - "dependencies": { - "@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/@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==", - "dev": true, - "dependencies": { - "@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/@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==", - "dev": true, - "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/@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==", - "dev": true, - "dependencies": { - "@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/@webassemblyjs/wast-printer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", - "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webpack-cli/configtest": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", - "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", - "dev": true, - "peerDependencies": { - "webpack": "4.x.x || 5.x.x", - "webpack-cli": "4.x.x" - } - }, - "node_modules/@webpack-cli/info": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", - "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", - "dev": true, - "dependencies": { - "envinfo": "^7.7.3" - }, - "peerDependencies": { - "webpack-cli": "4.x.x" - } - }, - "node_modules/@webpack-cli/serve": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", - "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", - "dev": true, - "peerDependencies": { - "webpack-cli": "4.x.x" - }, - "peerDependenciesMeta": { - "webpack-dev-server": { - "optional": true - } - } - }, - "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==", - "dev": true - }, - "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==", - "dev": true - }, - "node_modules/@zeit/schemas": { - "version": "2.36.0", - "resolved": "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.36.0.tgz", - "integrity": "sha512-7kjMwcChYEzMKjeex9ZFXkt1AyNov9R5HZtjBKVsmVpw7pa7ZtlCGvCBC2vnnXctaYN+aRI61HjIqeetZW5ROg==", - "dev": true, - "license": "MIT" - }, - "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==", - "dev": true, - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-attributes": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", - "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", - "dev": true, - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/agent-base": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", - "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "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==", - "dev": true, - "dependencies": { - "string-width": "^4.1.0" - } - }, - "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==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/arch": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-differ": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", - "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ast-types": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", - "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/b4a": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", - "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/babel-jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.5.0.tgz", - "integrity": "sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==", - "dev": true, - "dependencies": { - "@jest/transform": "^29.5.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.5.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz", - "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==", - "dev": true, - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@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-top-level-await": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-preset-jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz", - "integrity": "sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==", - "dev": true, - "dependencies": { - "babel-plugin-jest-hoist": "^29.5.0", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/bare-events": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.4.tgz", - "integrity": "sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==", - "dev": true, - "license": "Apache-2.0", - "optional": true - }, - "node_modules/bare-fs": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.1.5.tgz", - "integrity": "sha512-1zccWBMypln0jEE05LzZt+V/8y8AQsQQqxtklqaIyg5nu6OAYFhZxPXinJTSG+kU5qyNmeLgcn9AW7eHiCHVLA==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "bare-events": "^2.5.4", - "bare-path": "^3.0.0", - "bare-stream": "^2.6.4" - }, - "engines": { - "bare": ">=1.16.0" - }, - "peerDependencies": { - "bare-buffer": "*" - }, - "peerDependenciesMeta": { - "bare-buffer": { - "optional": true - } - } - }, - "node_modules/bare-os": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.1.tgz", - "integrity": "sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "engines": { - "bare": ">=1.14.0" - } - }, - "node_modules/bare-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", - "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "bare-os": "^3.0.1" - } - }, - "node_modules/bare-stream": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.6.5.tgz", - "integrity": "sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "streamx": "^2.21.0" - }, - "peerDependencies": { - "bare-buffer": "*", - "bare-events": "*" - }, - "peerDependenciesMeta": { - "bare-buffer": { - "optional": true - }, - "bare-events": { - "optional": true - } - } - }, - "node_modules/basic-ftp": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", - "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.0.0" - } - }, - "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==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/boxen": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.0.0.tgz", - "integrity": "sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==", - "dev": true, - "dependencies": { - "ansi-align": "^3.0.1", - "camelcase": "^7.0.0", - "chalk": "^5.0.1", - "cli-boxes": "^3.0.0", - "string-width": "^5.1.2", - "type-fest": "^2.13.0", - "widest-line": "^4.0.1", - "wrap-ansi": "^8.0.1" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/boxen/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==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/boxen/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==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/boxen/node_modules/camelcase": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", - "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", - "dev": true, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/boxen/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "dev": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/boxen/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==", - "dev": true - }, - "node_modules/boxen/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==", - "dev": true, - "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" - } - }, - "node_modules/boxen/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==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/boxen/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==", - "dev": true, - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/boxen/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==", - "dev": true, - "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" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", - "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", - "dev": true, - "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.30001646", - "electron-to-chromium": "^1.5.4", - "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.0" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "dependencies": { - "fast-json-stable-stringify": "2.x" - }, - "engines": { - "node": ">= 6" - } - }, - "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==", - "dev": true, - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "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, - "license": "MIT", - "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==", - "dev": true - }, - "node_modules/bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "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==", - "dev": true, - "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": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "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==", - "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001655", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001655.tgz", - "integrity": "sha512-jRGVy3iSGO5Uutn2owlb5gR6qsGngTw9ZTb4ali9f3glshcNmJ2noam4Mo9zia5P9Dk3jNNydy7vQjuE5dQmfg==", - "dev": true, - "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/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chalk-template": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz", - "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.2" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/chalk-template?sponsor=1" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/chromium-bidi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-5.1.0.tgz", - "integrity": "sha512-9MSRhWRVoRPDG0TgzkHrshFSJJNZzfY5UFqUMuksg7zL1yoZIZ3jLB0YAgHclbiAxPI86pBnwDX1tbzoiV8aFw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "mitt": "^3.0.1", - "zod": "^3.24.1" - }, - "peerDependencies": { - "devtools-protocol": "*" - } - }, - "node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "node_modules/cjs-module-lexer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", - "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", - "dev": true - }, - "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==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/clipboardy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-3.0.0.tgz", - "integrity": "sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==", - "dev": true, - "dependencies": { - "arch": "^2.2.0", - "execa": "^5.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "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==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", - "dev": true - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/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/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/compare-versions": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", - "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==", - "dev": true - }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "dependencies": { - "mime-db": ">= 1.43.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dev": true, - "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" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "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==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "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==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/content-disposition": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "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==", - "dev": true - }, - "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==", - "dev": true - }, - "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/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==", - "dev": true - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/data-uri-to-buffer": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", - "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, - "node_modules/data-view-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", - "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", - "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", - "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "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==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "dev": true, - "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true - }, - "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==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "dev": true, - "dependencies": { - "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/ljharb" - } - }, - "node_modules/degenerator": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", - "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ast-types": "^0.13.4", - "escodegen": "^2.1.0", - "esprima": "^4.0.1" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/devtools-protocol": { - "version": "0.0.1439962", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1439962.tgz", - "integrity": "sha512-jJF48UdryzKiWhJ1bLKr7BFWUQCEIT5uCNbDLqkQJBtkFxYzILJH44WN0PDKMIlGDN7Utb8vyUY85C3w4R/t2g==", - "dev": true, - "license": "BSD-3-Clause" - }, - "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, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/diff-sequences": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", - "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "node_modules/electron-to-chromium": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz", - "integrity": "sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==", - "dev": true - }, - "node_modules/emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "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==", - "dev": true, - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/enhanced-resolve": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "dev": true, - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, - "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==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-abstract": { - "version": "1.23.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", - "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "data-view-buffer": "^1.0.1", - "data-view-byte-length": "^1.0.1", - "data-view-byte-offset": "^1.0.0", - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "hasown": "^2.0.2", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.1", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.3", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", - "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.2", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.9", - "string.prototype.trimend": "^1.0.8", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.2", - "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.6", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.15" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-module-lexer": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz", - "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==", - "dev": true - }, - "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", - "dev": true, - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.4", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/escodegen": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", - "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escodegen/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eslint-formatter-pretty": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-formatter-pretty/-/eslint-formatter-pretty-4.1.0.tgz", - "integrity": "sha512-IsUTtGxF1hrH6lMWiSl1WbGaiP01eT6kzywdY1U+zLc0MP+nwEnUiS9UI8IaOTUhTeQJLlCEWIbXINBH4YJbBQ==", - "dev": true, - "dependencies": { - "@types/eslint": "^7.2.13", - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "eslint-rule-docs": "^1.1.5", - "log-symbols": "^4.0.0", - "plur": "^4.0.0", - "string-width": "^4.2.0", - "supports-hyperlinks": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint-formatter-pretty/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==", - "dev": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/eslint-rule-docs": { - "version": "1.1.235", - "resolved": "https://registry.npmjs.org/eslint-rule-docs/-/eslint-rule-docs-1.1.235.tgz", - "integrity": "sha512-+TQ+x4JdTnDoFEXXb3fDvfGOwnyNV7duH8fXWTPD1ieaBmB8omj7Gw/pMBBu4uI2uJCCU8APDaQJzWuXnTsH4A==", - "dev": true - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "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/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expect": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.5.0.tgz", - "integrity": "sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==", - "dev": true, - "dependencies": { - "@jest/expect-utils": "^29.5.0", - "jest-get-type": "^29.4.3", - "jest-matcher-utils": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "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, - "license": "BSD-2-Clause", - "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" - }, - "engines": { - "node": ">= 10.17.0" - }, - "optionalDependencies": { - "@types/yauzl": "^2.9.1" - } - }, - "node_modules/extract-zip/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==", - "dev": true, - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "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==", - "dev": true - }, - "node_modules/fast-fifo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", - "dev": true, - "license": "MIT" - }, - "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==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", - "dev": true, - "engines": { - "node": ">= 4.9.1" - } - }, - "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "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==", - "dev": true, - "dependencies": { - "bser": "2.1.1" - } - }, - "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, - "license": "MIT", - "dependencies": { - "pend": "~1.2.0" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "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==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-versions": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-4.0.0.tgz", - "integrity": "sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ==", - "dev": true, - "dependencies": { - "semver-regex": "^3.1.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.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==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "dev": true, - "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" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/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==", - "dev": true, - "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==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "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==", - "dev": true, - "dependencies": { - "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" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-uri": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.4.tgz", - "integrity": "sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "basic-ftp": "^5.0.2", - "data-uri-to-buffer": "^6.0.2", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/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==", - "dev": true - }, - "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==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "dev": true - }, - "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==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "dependencies": { - "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==", - "dev": true, - "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==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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==", - "dev": true - }, - "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/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/husky": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/husky/-/husky-4.3.8.tgz", - "integrity": "sha512-LCqqsB0PzJQ/AlCgfrfzRe3e3+NvmefAdKQhRYpxS4u6clblBoDdzzvHi8fmxKRzvMxPY/1WZWzomPZww0Anow==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "chalk": "^4.0.0", - "ci-info": "^2.0.0", - "compare-versions": "^3.6.0", - "cosmiconfig": "^7.0.0", - "find-versions": "^4.0.0", - "opencollective-postinstall": "^2.0.2", - "pkg-dir": "^5.0.0", - "please-upgrade-node": "^3.2.0", - "slash": "^3.0.0", - "which-pm-runs": "^1.0.0" - }, - "bin": { - "husky-run": "bin/run.js", - "husky-upgrade": "lib/upgrader/bin.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/husky" - } - }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-local/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==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/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==", - "dev": true, - "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==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "node_modules/internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", - "dev": true, - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/ip-address": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", - "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "jsbn": "1.1.0", - "sprintf-js": "^1.1.3" - }, - "engines": { - "node": ">= 12" - } - }, - "node_modules/ip-address/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==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/irregular-plurals": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.5.0.tgz", - "integrity": "sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "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==", - "dev": true - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", - "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-view": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", - "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", - "dev": true, - "dependencies": { - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-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==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-port-reachable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-port-reachable/-/is-port-reachable-4.0.0.tgz", - "integrity": "sha512-9UoipoxYmSk6Xy7QFgRv2HDyaysmgSG75TFQs6S+3pDM7ZhKTF/bskZV+0UlABHzKjNVhPjYCLfeZUEg1wXxig==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", - "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "dev": true, - "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==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", - "dev": true, - "dependencies": { - "which-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", - "dev": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.5.0.tgz", - "integrity": "sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==", - "dev": true, - "dependencies": { - "@jest/core": "^29.5.0", - "@jest/types": "^29.5.0", - "import-local": "^3.0.2", - "jest-cli": "^29.5.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-changed-files": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.5.0.tgz", - "integrity": "sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==", - "dev": true, - "dependencies": { - "execa": "^5.0.0", - "p-limit": "^3.1.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-circus": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.5.0.tgz", - "integrity": "sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.5.0", - "@jest/expect": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.5.0", - "jest-matcher-utils": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-runtime": "^29.5.0", - "jest-snapshot": "^29.5.0", - "jest-util": "^29.5.0", - "p-limit": "^3.1.0", - "pretty-format": "^29.5.0", - "pure-rand": "^6.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-cli": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.5.0.tgz", - "integrity": "sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==", - "dev": true, - "dependencies": { - "@jest/core": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/types": "^29.5.0", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^29.5.0", - "jest-util": "^29.5.0", - "jest-validate": "^29.5.0", - "prompts": "^2.0.1", - "yargs": "^17.3.1" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-config": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.5.0.tgz", - "integrity": "sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.5.0", - "@jest/types": "^29.5.0", - "babel-jest": "^29.5.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.5.0", - "jest-environment-node": "^29.5.0", - "jest-get-type": "^29.4.3", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.5.0", - "jest-runner": "^29.5.0", - "jest-util": "^29.5.0", - "jest-validate": "^29.5.0", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.5.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/jest-config/node_modules/ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-diff": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.5.0.tgz", - "integrity": "sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.4.3", - "jest-get-type": "^29.4.3", - "pretty-format": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-docblock": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz", - "integrity": "sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==", - "dev": true, - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-each": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.5.0.tgz", - "integrity": "sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==", - "dev": true, - "dependencies": { - "@jest/types": "^29.5.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.4.3", - "jest-util": "^29.5.0", - "pretty-format": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-environment-node": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.5.0.tgz", - "integrity": "sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.5.0", - "@jest/fake-timers": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "jest-mock": "^29.5.0", - "jest-util": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-get-type": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", - "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-haste-map": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.5.0.tgz", - "integrity": "sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==", - "dev": true, - "dependencies": { - "@jest/types": "^29.5.0", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.4.3", - "jest-util": "^29.5.0", - "jest-worker": "^29.5.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-leak-detector": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz", - "integrity": "sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==", - "dev": true, - "dependencies": { - "jest-get-type": "^29.4.3", - "pretty-format": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-matcher-utils": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz", - "integrity": "sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.5.0", - "jest-get-type": "^29.4.3", - "pretty-format": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-message-util": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz", - "integrity": "sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.5.0", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.5.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-mock": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.5.0.tgz", - "integrity": "sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==", - "dev": true, - "dependencies": { - "@jest/types": "^29.5.0", - "@types/node": "*", - "jest-util": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz", - "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.5.0.tgz", - "integrity": "sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.5.0", - "jest-validate": "^29.5.0", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz", - "integrity": "sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==", - "dev": true, - "dependencies": { - "jest-regex-util": "^29.4.3", - "jest-snapshot": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runner": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.5.0.tgz", - "integrity": "sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==", - "dev": true, - "dependencies": { - "@jest/console": "^29.5.0", - "@jest/environment": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.4.3", - "jest-environment-node": "^29.5.0", - "jest-haste-map": "^29.5.0", - "jest-leak-detector": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-resolve": "^29.5.0", - "jest-runtime": "^29.5.0", - "jest-util": "^29.5.0", - "jest-watcher": "^29.5.0", - "jest-worker": "^29.5.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runtime": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.5.0.tgz", - "integrity": "sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.5.0", - "@jest/fake-timers": "^29.5.0", - "@jest/globals": "^29.5.0", - "@jest/source-map": "^29.4.3", - "@jest/test-result": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-mock": "^29.5.0", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.5.0", - "jest-snapshot": "^29.5.0", - "jest-util": "^29.5.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.5.0.tgz", - "integrity": "sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/babel__traverse": "^7.0.6", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.5.0", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.5.0", - "jest-get-type": "^29.4.3", - "jest-matcher-utils": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.5.0", - "semver": "^7.3.5" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-util": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", - "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", - "dev": true, - "dependencies": { - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-util/node_modules/ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-validate": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.5.0.tgz", - "integrity": "sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==", - "dev": true, - "dependencies": { - "@jest/types": "^29.5.0", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.4.3", - "leven": "^3.1.0", - "pretty-format": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-watcher": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.5.0.tgz", - "integrity": "sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==", - "dev": true, - "dependencies": { - "@jest/test-result": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.5.0", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.5.0.tgz", - "integrity": "sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==", - "dev": true, - "dependencies": { - "@types/node": "*", - "jest-util": "^29.5.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "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==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "license": "MIT" - }, - "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/jsbn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", - "dev": true, - "license": "MIT" - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "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==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", - "dev": true - }, - "node_modules/jsr": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/jsr/-/jsr-0.13.5.tgz", - "integrity": "sha512-qQP20ZcG28pYes7bCq3uuvixl1TL1EpJzwLPfoQadSyWk9j2AID66qhW8+aXpRDRFDvDkXFnONsSRhpnnQAupg==", - "dev": true, - "license": "MIT", - "dependencies": { - "node-stream-zip": "^1.15.0", - "semiver": "^1.1.0" - }, - "bin": { - "jsr": "dist/bin.js" - } - }, - "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==", - "dev": true, - "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==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/kolorist": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", - "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==", - "dev": true, - "license": "MIT" - }, - "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==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "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==", - "dev": true - }, - "node_modules/load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file/node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "dev": true, - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/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==", - "dev": true, - "engines": { - "node": ">=6.11.5" - } - }, - "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==", - "dev": true, - "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": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "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==", - "dev": true - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/lunr": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", - "dev": true - }, - "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==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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==", - "dev": true - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "dependencies": { - "tmpl": "1.0.5" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/marked": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", - "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", - "dev": true, - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 12" - } - }, - "node_modules/memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - }, - "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" - } - }, - "node_modules/memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", - "dev": true, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/meow": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", - "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", - "dev": true, - "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize": "^1.2.0", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/meow/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/meow/node_modules/normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/meow/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==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/meow/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/meow/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "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==", - "dev": true - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "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==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mitt": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", - "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", - "dev": true, - "license": "MIT" - }, - "node_modules/mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "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==", - "dev": true, - "license": "MIT" - }, - "node_modules/multimatch": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz", - "integrity": "sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==", - "dev": true, - "dependencies": { - "@types/minimatch": "^3.0.3", - "array-differ": "^3.0.0", - "array-union": "^2.1.0", - "arrify": "^2.0.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true, - "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==", - "dev": true - }, - "node_modules/netmask": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", - "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "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==", - "dev": true - }, - "node_modules/node-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", - "dev": true - }, - "node_modules/node-stream-zip": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz", - "integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==", - "dev": true, - "engines": { - "node": ">=0.12.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/antelle" - } - }, - "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==", - "dev": true, - "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/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/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-all": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", - "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", - "memorystream": "^0.3.1", - "minimatch": "^3.0.4", - "pidtree": "^0.3.0", - "read-pkg": "^3.0.0", - "shell-quote": "^1.6.1", - "string.prototype.padend": "^3.0.0" - }, - "bin": { - "npm-run-all": "bin/npm-run-all/index.js", - "run-p": "bin/run-p/index.js", - "run-s": "bin/run-s/index.js" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/npm-run-all/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/npm-run-all/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/npm-run-all/node_modules/cross-spawn": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", - "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", - "dev": true, - "license": "MIT", - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/npm-run-all/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/npm-run-all/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/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==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/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/npm-run-all/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==", - "dev": true, - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-all/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==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-all/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "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==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "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==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", - "dev": true, - "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" - } - }, - "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==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/opencollective-postinstall": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz", - "integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==", - "dev": true, - "bin": { - "opencollective-postinstall": "index.js" - } - }, - "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==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-locate/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==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pac-proxy-agent": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz", - "integrity": "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@tootallnate/quickjs-emscripten": "^0.23.0", - "agent-base": "^7.1.2", - "debug": "^4.3.4", - "get-uri": "^6.0.1", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.6", - "pac-resolver": "^7.0.1", - "socks-proxy-agent": "^8.0.5" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/pac-resolver": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", - "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", - "dev": true, - "license": "MIT", - "dependencies": { - "degenerator": "^5.0.0", - "netmask": "^2.0.2" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/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==", - "dev": true, - "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/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==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true, - "license": "(WTFPL OR MIT)" - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-to-regexp": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz", - "integrity": "sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==", - "dev": true, - "license": "MIT" - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/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, - "license": "MIT" - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pidtree": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", - "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", - "dev": true, - "bin": { - "pidtree": "bin/pidtree.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/pirates": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", - "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/pkg-dir": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", - "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", - "dev": true, - "dependencies": { - "find-up": "^5.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/pkg-dir/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==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/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==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/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==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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/plur": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/plur/-/plur-4.0.0.tgz", - "integrity": "sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg==", - "dev": true, - "dependencies": { - "irregular-plurals": "^3.2.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", - "dev": true, - "engines": { - "node": ">= 0.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/pretty-format": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", - "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.4.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/pretty-quick": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/pretty-quick/-/pretty-quick-3.1.3.tgz", - "integrity": "sha512-kOCi2FJabvuh1as9enxYmrnBC6tVMoVOenMaBqRfsvBHB0cbpYHjdQEpSglpASDFEXVwplpcGR4CLEaisYAFcA==", - "dev": true, - "dependencies": { - "chalk": "^3.0.0", - "execa": "^4.0.0", - "find-up": "^4.1.0", - "ignore": "^5.1.4", - "mri": "^1.1.5", - "multimatch": "^4.0.0" - }, - "bin": { - "pretty-quick": "bin/pretty-quick.js" - }, - "engines": { - "node": ">=10.13" - }, - "peerDependencies": { - "prettier": ">=2.0.0" - } - }, - "node_modules/pretty-quick/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pretty-quick/node_modules/execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/pretty-quick/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==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pretty-quick/node_modules/human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", - "dev": true, - "engines": { - "node": ">=8.12.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==", - "dev": true - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "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==", - "dev": true, - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/proxy-agent": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz", - "integrity": "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "^4.3.4", - "http-proxy-agent": "^7.0.1", - "https-proxy-agent": "^7.0.6", - "lru-cache": "^7.14.1", - "pac-proxy-agent": "^7.1.0", - "proxy-from-env": "^1.1.0", - "socks-proxy-agent": "^8.0.5" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/proxy-agent/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "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==", - "dev": true, - "license": "MIT" - }, - "node_modules/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", - "dev": true - }, - "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==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/puppeteer": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.9.0.tgz", - "integrity": "sha512-L0pOtALIx8rgDt24Y+COm8X52v78gNtBOW6EmUcEPci0TYD72SAuaXKqasRIx4JXxmg2Tkw5ySKcpPOwN8xXnQ==", - "dev": true, - "hasInstallScript": true, - "license": "Apache-2.0", - "dependencies": { - "@puppeteer/browsers": "2.10.5", - "chromium-bidi": "5.1.0", - "cosmiconfig": "^9.0.0", - "devtools-protocol": "0.0.1439962", - "puppeteer-core": "24.9.0", - "typed-query-selector": "^2.12.0" - }, - "bin": { - "puppeteer": "lib/cjs/puppeteer/node/cli.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/puppeteer-core": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.9.0.tgz", - "integrity": "sha512-HFdCeH/wx6QPz8EncafbCqJBqaCG1ENW75xg3cLFMRUoqZDgByT6HSueiumetT2uClZxwqj0qS4qMVZwLHRHHw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@puppeteer/browsers": "2.10.5", - "chromium-bidi": "5.1.0", - "debug": "^4.4.1", - "devtools-protocol": "0.0.1439962", - "typed-query-selector": "^2.12.0", - "ws": "^8.18.2" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/puppeteer/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, - "license": "Python-2.0" - }, - "node_modules/puppeteer/node_modules/cosmiconfig": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", - "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "env-paths": "^2.2.1", - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/puppeteer/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, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/puppeteer/node_modules/typescript": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", - "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/pure-rand": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.2.tgz", - "integrity": "sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - ] - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "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==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "dev": true - }, - "node_modules/read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", - "dev": true, - "dependencies": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "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==", - "dev": true, - "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/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "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/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==", - "dev": true, - "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==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg/node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "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==", - "dev": true, - "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/rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", - "dev": true, - "dependencies": { - "resolve": "^1.9.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dev": true, - "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", - "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "set-function-name": "^2.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/registry-auth-token": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", - "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", - "dev": true, - "dependencies": { - "rc": "^1.1.6", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/registry-url": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", - "integrity": "sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==", - "dev": true, - "dependencies": { - "rc": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "dev": true, - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", - "dev": true, - "dependencies": { - "is-core-module": "^2.11.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-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==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-cwd/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==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/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" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-array-concat": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", - "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4", - "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==", - "dev": true - }, - "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==", - "dev": true - }, - "node_modules/safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-regex": "^1.1.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "dev": true, - "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/semantic-release-plugin-update-version-in-files": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/semantic-release-plugin-update-version-in-files/-/semantic-release-plugin-update-version-in-files-1.1.0.tgz", - "integrity": "sha512-OWBrved3Rr0w3YP4iID81MhG9qhGrG+XtxdO9VMhKJ9qte3yBdMz5cSxDiPE/uhnGJQF00fqQetY3yhHFGabWw==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "glob": "^7.1.3" - } - }, - "node_modules/semiver": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/semiver/-/semiver-1.1.0.tgz", - "integrity": "sha512-QNI2ChmuioGC1/xjyYwyZYADILWyW6AmS1UH6gDj/SFUUUS4MBAWs/7mxnkRPc/F4iHezDP+O8t0dO8WHiEOdg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "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-regex": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-3.1.4.tgz", - "integrity": "sha512-6IiqeZNgq01qGf0TId0t3NvKzSvUsjcpdEO3AQNeIjR6A2+ckTnQlDpl4qu1bjRv0RzN3FP9hzFmws3lKqRWkA==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/serve": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/serve/-/serve-14.2.4.tgz", - "integrity": "sha512-qy1S34PJ/fcY8gjVGszDB3EXiPSk5FKhUa7tQe0UPRddxRidc2V6cNHPNewbE1D7MAkgLuWEt3Vw56vYy73tzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@zeit/schemas": "2.36.0", - "ajv": "8.12.0", - "arg": "5.0.2", - "boxen": "7.0.0", - "chalk": "5.0.1", - "chalk-template": "0.4.0", - "clipboardy": "3.0.0", - "compression": "1.7.4", - "is-port-reachable": "4.0.0", - "serve-handler": "6.1.6", - "update-check": "1.5.4" - }, - "bin": { - "serve": "build/main.js" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/serve-handler": { - "version": "6.1.6", - "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.6.tgz", - "integrity": "sha512-x5RL9Y2p5+Sh3D38Fh9i/iQ5ZK+e4xuXRd/pGbM4D13tgo/MGwbttUk8emytcr1YYzBYs+apnUngBDFYfpjPuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "3.0.0", - "content-disposition": "0.5.2", - "mime-types": "2.1.18", - "minimatch": "3.1.2", - "path-is-inside": "1.0.2", - "path-to-regexp": "3.3.0", - "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==", - "dev": true, - "license": "MIT", - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "~1.33.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "license": "MIT", - "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/serve/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==", - "dev": true - }, - "node_modules/serve/node_modules/chalk": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.0.1.tgz", - "integrity": "sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==", - "dev": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/serve/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, - "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==", - "dev": true, - "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.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/shell-quote": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", - "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/shiki": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.10.1.tgz", - "integrity": "sha512-VsY7QJVzU51j5o1+DguUd+6vmCmZ5v/6gYu4vyYAhzjuNQU6P/vmSy4uQaOhvje031qQMiW0d2BwgMH52vqMng==", - "dev": true, - "dependencies": { - "jsonc-parser": "^3.0.0", - "vscode-oniguruma": "^1.6.1", - "vscode-textmate": "5.2.0" - } - }, - "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==", - "dev": true, - "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" - } - }, - "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==", - "dev": true - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks": { - "version": "2.8.4", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.4.tgz", - "integrity": "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ip-address": "^9.0.5", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks-proxy-agent": { - "version": "8.0.5", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", - "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "^4.3.4", - "socks": "^2.8.3" - }, - "engines": { - "node": ">= 14" - } - }, - "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" - } - }, - "node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "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==", - "dev": true, - "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==", - "dev": true - }, - "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==", - "dev": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", - "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", - "dev": true - }, - "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/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/streamx": { - "version": "2.22.0", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.0.tgz", - "integrity": "sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-fifo": "^1.3.2", - "text-decoder": "^1.1.0" - }, - "optionalDependencies": { - "bare-events": "^2.2.0" - } - }, - "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==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string.prototype.padend": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz", - "integrity": "sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", - "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.0", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", - "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-hyperlinks": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", - "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/tar-fs": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.9.tgz", - "integrity": "sha512-XF4w9Xp+ZQgifKakjZYmFdkLoSWd34VGKcsTCwlNWM7QG3ZbaxnTsaBwnjFZqHRf/rROxaR8rXnbtwdvaDI+lA==", - "dev": true, - "license": "MIT", - "dependencies": { - "pump": "^3.0.0", - "tar-stream": "^3.1.5" - }, - "optionalDependencies": { - "bare-fs": "^4.0.1", - "bare-path": "^3.0.0" - } - }, - "node_modules/tar-stream": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", - "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "b4a": "^1.6.4", - "fast-fifo": "^1.2.0", - "streamx": "^2.15.0" - } - }, - "node_modules/terser": { - "version": "5.31.6", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.6.tgz", - "integrity": "sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==", - "dev": true, - "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.10", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", - "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", - "dev": true, - "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 - } - } - }, - "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==", - "dev": true, - "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/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/terser/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==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/text-decoder": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", - "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.6.4" - } - }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/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==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ts-jest": { - "version": "29.1.0", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.0.tgz", - "integrity": "sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==", - "dev": true, - "dependencies": { - "bs-logger": "0.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^29.0.0", - "json5": "^2.2.3", - "lodash.memoize": "4.x", - "make-error": "1.x", - "semver": "7.x", - "yargs-parser": "^21.0.1" - }, - "bin": { - "ts-jest": "cli.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.0.0-beta.0 <8", - "@jest/types": "^29.0.0", - "babel-jest": "^29.0.0", - "jest": "^29.0.0", - "typescript": ">=4.3 <6" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@jest/types": { - "optional": true - }, - "babel-jest": { - "optional": true - }, - "esbuild": { - "optional": true - } - } - }, - "node_modules/ts-jest/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/ts-loader": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.4.0.tgz", - "integrity": "sha512-6nFY3IZ2//mrPc+ImY3hNWx1vCHyEhl6V+wLmL4CZcm6g1CqX7UKrkc6y0i4FwcfOhxyMPCfaEvh20f4r9GNpw==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "enhanced-resolve": "^4.0.0", - "loader-utils": "^2.0.0", - "micromatch": "^4.0.0", - "semver": "^7.3.4" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "typescript": "*", - "webpack": "*" - } - }, - "node_modules/ts-loader/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", - "dev": true, - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/tsd": { - "version": "0.30.4", - "resolved": "https://registry.npmjs.org/tsd/-/tsd-0.30.4.tgz", - "integrity": "sha512-ncC4SwAeUk0OTcXt5h8l0/gOLHJSp9ogosvOADT6QYzrl0ITm398B3wkz8YESqefIsEEwvYAU8bvo7/rcN/M0Q==", - "dev": true, - "dependencies": { - "@tsd/typescript": "~5.3.3", - "eslint-formatter-pretty": "^4.1.0", - "globby": "^11.0.1", - "jest-diff": "^29.0.3", - "meow": "^9.0.0", - "path-exists": "^4.0.0", - "read-pkg-up": "^7.0.0" - }, - "bin": { - "tsd": "dist/cli.js" - }, - "engines": { - "node": ">=14.16" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "license": "0BSD" - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", - "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", - "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", - "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", - "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-query-selector": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.0.tgz", - "integrity": "sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==", - "dev": true, - "license": "MIT" - }, - "node_modules/typedoc": { - "version": "0.22.18", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.22.18.tgz", - "integrity": "sha512-NK9RlLhRUGMvc6Rw5USEYgT4DVAUFk7IF7Q6MYfpJ88KnTZP7EneEa4RcP+tX1auAcz7QT1Iy0bUSZBYYHdoyA==", - "dev": true, - "dependencies": { - "glob": "^8.0.3", - "lunr": "^2.3.9", - "marked": "^4.0.16", - "minimatch": "^5.1.0", - "shiki": "^0.10.1" - }, - "bin": { - "typedoc": "bin/typedoc" - }, - "engines": { - "node": ">= 12.10.0" - }, - "peerDependencies": { - "typescript": "4.0.x || 4.1.x || 4.2.x || 4.3.x || 4.4.x || 4.5.x || 4.6.x || 4.7.x" - } - }, - "node_modules/typedoc/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/typedoc/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/typedoc/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", - "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", - "dev": true, - "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.2", - "picocolors": "^1.0.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/update-check": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/update-check/-/update-check-1.5.4.tgz", - "integrity": "sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==", - "dev": true, - "dependencies": { - "registry-auth-token": "3.3.2", - "registry-url": "3.1.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "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==", - "dev": true - }, - "node_modules/v8-to-istanbul": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", - "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/v8-to-istanbul/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==", - "dev": true - }, - "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==", - "dev": true, - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/vscode-oniguruma": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", - "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", - "dev": true - }, - "node_modules/vscode-textmate": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-5.2.0.tgz", - "integrity": "sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==", - "dev": true - }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "dependencies": { - "makeerror": "1.0.12" - } - }, - "node_modules/watchpack": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", - "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", - "dev": true, - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "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.94.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", - "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", - "dev": true, - "dependencies": { - "@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-attributes": "^1.9.5", - "browserslist": "^4.21.10", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.1", - "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 - } - } - }, - "node_modules/webpack-cli": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", - "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", - "dev": true, - "dependencies": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.2.0", - "@webpack-cli/info": "^1.5.0", - "@webpack-cli/serve": "^1.7.0", - "colorette": "^2.0.14", - "commander": "^7.0.0", - "cross-spawn": "^7.0.3", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", - "webpack-merge": "^5.7.3" - }, - "bin": { - "webpack-cli": "bin/cli.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "4.x.x || 5.x.x" - }, - "peerDependenciesMeta": { - "@webpack-cli/generators": { - "optional": true - }, - "@webpack-cli/migrate": { - "optional": true - }, - "webpack-bundle-analyzer": { - "optional": true - }, - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/webpack-cli/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-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dev": true, - "dependencies": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - }, - "engines": { - "node": ">=10.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==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack/node_modules/enhanced-resolve": { - "version": "5.17.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", - "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack/node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-pm-runs": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz", - "integrity": "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "dev": true, - "dependencies": { - "string-width": "^5.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/widest-line/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==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/widest-line/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==", - "dev": true - }, - "node_modules/widest-line/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==", - "dev": true, - "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" - } - }, - "node_modules/widest-line/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==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/wildcard": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", - "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", - "dev": true - }, - "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==", - "dev": true, - "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/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/ws": { - "version": "8.18.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz", - "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==", - "license": "MIT", - "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/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "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/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "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, - "license": "MIT", - "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/zod": { - "version": "3.25.36", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.36.tgz", - "integrity": "sha512-eRFS3i8T0IrpGdL8HQyqFAugGOn7jOjyGgGdtv5NY4Wkhi7lJDk732bNZ609YMIGFbLoaj6J69O1Mura23gfIw==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index d4bf3e22..00000000 --- a/package.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "name": "@supabase/supabase-js", - "version": "0.0.0-automated", - "description": "Isomorphic Javascript client for Supabase", - "keywords": [ - "javascript", - "typescript", - "supabase" - ], - "homepage": "https://github.com/supabase/supabase-js", - "bugs": "https://github.com/supabase/supabase-js/issues", - "license": "MIT", - "author": "Supabase", - "files": [ - "dist", - "src" - ], - "main": "dist/main/index.js", - "module": "dist/module/index.js", - "types": "dist/module/index.d.ts", - "sideEffects": false, - "repository": "supabase/supabase-js", - "scripts": { - "clean": "rimraf dist docs/v2", - "format": "prettier --write \"{src,test}/**/*.ts\"", - "build": "run-s clean format build:*", - "build:main": "tsc -p tsconfig.json", - "build:module": "tsc -p tsconfig.module.json", - "build:umd": "webpack --env mode=production", - "types-generate": "dts-gen -m '@supabase/supabase-js' -s", - "test": "run-s test:types test:run", - "test:all": "run-s test:types test:run test:integration test:integration:browser", - "test:run": "jest --runInBand --detectOpenHandles", - "test:unit": "jest --runInBand --detectOpenHandles test/unit", - "test:coverage": "jest --runInBand --coverage --testPathIgnorePatterns=\"test/integration|test/deno\"", - "test:integration": "jest --runInBand --detectOpenHandles test/integration.test.ts", - "test:integration:browser": "deno test --allow-all test/integration.browser.test.ts", - "test:edge-functions": "deno test --allow-all --no-check test/deno/edge-functions-integration.test.ts", - "test:watch": "jest --watch --verbose false --silent false", - "test:node:playwright": "cd test/integration/node-browser && npm install && cp ../../../dist/umd/supabase.js . && npm run test", - "test:bun": "cd test/integration/bun && bun install && bun test", - "test:types": "run-s build:module && tsd --files test/types/*.test-d.ts && jsr publish --dry-run", - "docs": "typedoc --entryPoints src/index.ts --out docs/v2 --includes src/**/*.ts", - "docs:json": "typedoc --entryPoints src/index.ts --includes src/**/*.ts --json docs/v2/spec.json --excludeExternals", - "serve:coverage": "npm run test:coverage && serve test/coverage", - "update:test-deps": "npm run build && npm pack && cp supabase-supabase-js-*.tgz test/integration/expo/supabase-supabase-js-0.0.0-automated.tgz && cp supabase-supabase-js-*.tgz test/integration/next/supabase-supabase-js-0.0.0-automated.tgz && cp supabase-supabase-js-*.tgz test/deno/supabase-supabase-js-0.0.0-automated.tgz && cp supabase-supabase-js-*.tgz test/integration/bun/supabase-supabase-js-0.0.0-automated.tgz && cd test/integration/expo && npm install && cd ../next && npm install --legacy-peer-deps && cd ../../deno && npm install && cd ../integration/bun && bun install", - "update:test-deps:expo": "npm run build && npm pack && cp supabase-supabase-js-*.tgz test/integration/expo/supabase-supabase-js-0.0.0-automated.tgz && cd test/integration/expo && npm install", - "update:test-deps:next": "npm run build && npm pack && cp supabase-supabase-js-*.tgz test/integration/next/supabase-supabase-js-0.0.0-automated.tgz && cd test/integration/next && npm install --legacy-peer-deps", - "update:test-deps:deno": "npm run build && npm pack && cp supabase-supabase-js-*.tgz test/deno/supabase-supabase-js-0.0.0-automated.tgz && cd test/deno && npm install", - "update:test-deps:bun": "npm run build && npm pack && cp supabase-supabase-js-*.tgz test/integration/bun/supabase-supabase-js-0.0.0-automated.tgz && cd test/integration/bun && bun install" - }, - "dependencies": { - "@supabase/auth-js": "2.71.1", - "@supabase/functions-js": "2.4.5", - "@supabase/node-fetch": "2.6.15", - "@supabase/postgrest-js": "1.21.3", - "@supabase/realtime-js": "2.15.1", - "@supabase/storage-js": "^2.10.4" - }, - "devDependencies": { - "@sebbo2002/semantic-release-jsr": "^1.0.0", - "@solana/wallet-standard-features": "^1.3.0", - "@types/jest": "^29.2.5", - "husky": "^4.3.8", - "jest": "^29.3.1", - "jsr": "^0.13.5", - "npm-run-all": "^4.1.5", - "prettier": "^2.5.1", - "pretty-quick": "^3.1.3", - "puppeteer": "^24.9.0", - "rimraf": "^3.0.2", - "semantic-release-plugin-update-version-in-files": "^1.1.0", - "serve": "^14.2.1", - "ts-jest": "^29.0.5", - "ts-loader": "^8.0.11", - "ts-node": "^10.9.1", - "tsd": "^0.30.4", - "typedoc": "^0.22.16", - "typescript": "^4.5.5", - "webpack": "^5.69.1", - "webpack-cli": "^4.9.2" - }, - "husky": { - "hooks": { - "pre-commit": "pretty-quick --staged" - } - }, - "jsdelivr": "dist/umd/supabase.js", - "unpkg": "dist/umd/supabase.js" -} diff --git a/src/SupabaseClient.ts b/src/SupabaseClient.ts deleted file mode 100644 index 1a0bb0ff..00000000 --- a/src/SupabaseClient.ts +++ /dev/null @@ -1,379 +0,0 @@ -import { FunctionsClient } from '@supabase/functions-js' -import { AuthChangeEvent } from '@supabase/auth-js' -import { - PostgrestClient, - PostgrestFilterBuilder, - PostgrestQueryBuilder, -} from '@supabase/postgrest-js' -import { - RealtimeChannel, - RealtimeChannelOptions, - RealtimeClient, - RealtimeClientOptions, -} from '@supabase/realtime-js' -import { StorageClient as SupabaseStorageClient } from '@supabase/storage-js' -import { - DEFAULT_GLOBAL_OPTIONS, - DEFAULT_DB_OPTIONS, - DEFAULT_AUTH_OPTIONS, - DEFAULT_REALTIME_OPTIONS, -} from './lib/constants' -import { fetchWithAuth } from './lib/fetch' -import { ensureTrailingSlash, applySettingDefaults } from './lib/helpers' -import { SupabaseAuthClient } from './lib/SupabaseAuthClient' -import { Fetch, GenericSchema, SupabaseClientOptions, SupabaseAuthClientOptions } from './lib/types' - -/** - * Supabase Client. - * - * An isomorphic Javascript client for interacting with Postgres. - */ -export default class SupabaseClient< - Database = any, - // The second type parameter is also used for specifying db_schema, so we - // support both cases. - // TODO: Allow setting db_schema from ClientOptions. - SchemaNameOrClientOptions extends - | (string & keyof Omit) - | { PostgrestVersion: string } = 'public' extends keyof Omit - ? 'public' - : string & keyof Omit, - SchemaName extends string & - keyof Omit = SchemaNameOrClientOptions extends string & - keyof Omit - ? SchemaNameOrClientOptions - : 'public' extends keyof Omit - ? 'public' - : string & keyof Omit, '__InternalSupabase'>, - Schema extends Omit[SchemaName] extends GenericSchema - ? Omit[SchemaName] - : never = Omit[SchemaName] extends GenericSchema - ? Omit[SchemaName] - : never, - ClientOptions extends { PostgrestVersion: string } = SchemaNameOrClientOptions extends string & - keyof Omit - ? // If the version isn't explicitly set, look for it in the __InternalSupabase object to infer the right version - Database extends { __InternalSupabase: { PostgrestVersion: string } } - ? Database['__InternalSupabase'] - : // otherwise default to 12 - { PostgrestVersion: '12' } - : SchemaNameOrClientOptions extends { PostgrestVersion: string } - ? SchemaNameOrClientOptions - : never -> { - /** - * Supabase Auth allows you to create and manage user sessions for access to data that is secured by access policies. - */ - auth: SupabaseAuthClient - realtime: RealtimeClient - /** - * Supabase Storage allows you to manage user-generated content, such as photos or videos. - */ - storage: SupabaseStorageClient - - protected realtimeUrl: URL - protected authUrl: URL - protected storageUrl: URL - protected functionsUrl: URL - protected rest: PostgrestClient - protected storageKey: string - protected fetch?: Fetch - protected changedAccessToken?: string - protected accessToken?: () => Promise - - protected headers: Record - - /** - * Create a new client for use in the browser. - * @param supabaseUrl The unique Supabase URL which is supplied when you create a new project in your project dashboard. - * @param supabaseKey The unique Supabase Key which is supplied when you create a new project in your project dashboard. - * @param options.db.schema You can switch in between schemas. The schema needs to be on the list of exposed schemas inside Supabase. - * @param options.auth.autoRefreshToken Set to "true" if you want to automatically refresh the token before expiring. - * @param options.auth.persistSession Set to "true" if you want to automatically save the user session into local storage. - * @param options.auth.detectSessionInUrl Set to "true" if you want to automatically detects OAuth grants in the URL and signs in the user. - * @param options.realtime Options passed along to realtime-js constructor. - * @param options.storage Options passed along to the storage-js constructor. - * @param options.global.fetch A custom fetch implementation. - * @param options.global.headers Any additional headers to send with each network request. - */ - constructor( - protected supabaseUrl: string, - protected supabaseKey: string, - options?: SupabaseClientOptions - ) { - if (!supabaseUrl) throw new Error('supabaseUrl is required.') - if (!supabaseKey) throw new Error('supabaseKey is required.') - - const _supabaseUrl = ensureTrailingSlash(supabaseUrl) - const baseUrl = new URL(_supabaseUrl) - - this.realtimeUrl = new URL('realtime/v1', baseUrl) - this.realtimeUrl.protocol = this.realtimeUrl.protocol.replace('http', 'ws') - this.authUrl = new URL('auth/v1', baseUrl) - this.storageUrl = new URL('storage/v1', baseUrl) - this.functionsUrl = new URL('functions/v1', baseUrl) - - // default storage key uses the supabase project ref as a namespace - const defaultStorageKey = `sb-${baseUrl.hostname.split('.')[0]}-auth-token` - const DEFAULTS = { - db: DEFAULT_DB_OPTIONS, - realtime: DEFAULT_REALTIME_OPTIONS, - auth: { ...DEFAULT_AUTH_OPTIONS, storageKey: defaultStorageKey }, - global: DEFAULT_GLOBAL_OPTIONS, - } - - const settings = applySettingDefaults(options ?? {}, DEFAULTS) - - this.storageKey = settings.auth.storageKey ?? '' - this.headers = settings.global.headers ?? {} - - if (!settings.accessToken) { - this.auth = this._initSupabaseAuthClient( - settings.auth ?? {}, - this.headers, - settings.global.fetch - ) - } else { - this.accessToken = settings.accessToken - - this.auth = new Proxy({} as any, { - get: (_, prop) => { - throw new Error( - `@supabase/supabase-js: Supabase Client is configured with the accessToken option, accessing supabase.auth.${String( - prop - )} is not possible` - ) - }, - }) - } - - this.fetch = fetchWithAuth(supabaseKey, this._getAccessToken.bind(this), settings.global.fetch) - this.realtime = this._initRealtimeClient({ - headers: this.headers, - accessToken: this._getAccessToken.bind(this), - ...settings.realtime, - }) - this.rest = new PostgrestClient(new URL('rest/v1', baseUrl).href, { - headers: this.headers, - schema: settings.db.schema, - fetch: this.fetch, - }) - - this.storage = new SupabaseStorageClient( - this.storageUrl.href, - this.headers, - this.fetch, - options?.storage - ) - - if (!settings.accessToken) { - this._listenForAuthEvents() - } - } - - /** - * Supabase Functions allows you to deploy and invoke edge functions. - */ - get functions(): FunctionsClient { - return new FunctionsClient(this.functionsUrl.href, { - headers: this.headers, - customFetch: this.fetch, - }) - } - - // NOTE: signatures must be kept in sync with PostgrestClient.from - from< - TableName extends string & keyof Schema['Tables'], - Table extends Schema['Tables'][TableName] - >(relation: TableName): PostgrestQueryBuilder - from( - relation: ViewName - ): PostgrestQueryBuilder - /** - * Perform a query on a table or a view. - * - * @param relation - The table or view name to query - */ - from(relation: string): PostgrestQueryBuilder { - return this.rest.from(relation) - } - - // NOTE: signatures must be kept in sync with PostgrestClient.schema - /** - * Select a schema to query or perform an function (rpc) call. - * - * The schema needs to be on the list of exposed schemas inside Supabase. - * - * @param schema - The schema to query - */ - schema>( - schema: DynamicSchema - ): PostgrestClient< - Database, - ClientOptions, - DynamicSchema, - Database[DynamicSchema] extends GenericSchema ? Database[DynamicSchema] : any - > { - return this.rest.schema(schema) - } - - // NOTE: signatures must be kept in sync with PostgrestClient.rpc - /** - * Perform a function call. - * - * @param fn - The function name to call - * @param args - The arguments to pass to the function call - * @param options - Named parameters - * @param options.head - When set to `true`, `data` will not be returned. - * Useful if you only need the count. - * @param options.get - When set to `true`, the function will be called with - * read-only access mode. - * @param options.count - Count algorithm to use to count rows returned by the - * function. Only applicable for [set-returning - * functions](https://www.postgresql.org/docs/current/functions-srf.html). - * - * `"exact"`: Exact but slow count algorithm. Performs a `COUNT(*)` under the - * hood. - * - * `"planned"`: Approximated but fast count algorithm. Uses the Postgres - * statistics under the hood. - * - * `"estimated"`: Uses exact count for low numbers and planned count for high - * numbers. - */ - rpc( - fn: FnName, - args: Fn['Args'] = {}, - options: { - head?: boolean - get?: boolean - count?: 'exact' | 'planned' | 'estimated' - } = {} - ): PostgrestFilterBuilder< - ClientOptions, - Schema, - Fn['Returns'] extends any[] - ? Fn['Returns'][number] extends Record - ? Fn['Returns'][number] - : never - : never, - Fn['Returns'], - FnName, - null, - 'RPC' - > { - return this.rest.rpc(fn, args, options) - } - - /** - * Creates a Realtime channel with Broadcast, Presence, and Postgres Changes. - * - * @param {string} name - The name of the Realtime channel. - * @param {Object} opts - The options to pass to the Realtime channel. - * - */ - channel(name: string, opts: RealtimeChannelOptions = { config: {} }): RealtimeChannel { - return this.realtime.channel(name, opts) - } - - /** - * Returns all Realtime channels. - */ - getChannels(): RealtimeChannel[] { - return this.realtime.getChannels() - } - - /** - * Unsubscribes and removes Realtime channel from Realtime client. - * - * @param {RealtimeChannel} channel - The name of the Realtime channel. - * - */ - removeChannel(channel: RealtimeChannel): Promise<'ok' | 'timed out' | 'error'> { - return this.realtime.removeChannel(channel) - } - - /** - * Unsubscribes and removes all Realtime channels from Realtime client. - */ - removeAllChannels(): Promise<('ok' | 'timed out' | 'error')[]> { - return this.realtime.removeAllChannels() - } - - private async _getAccessToken() { - if (this.accessToken) { - return await this.accessToken() - } - - const { data } = await this.auth.getSession() - - return data.session?.access_token ?? this.supabaseKey - } - - private _initSupabaseAuthClient( - { - autoRefreshToken, - persistSession, - detectSessionInUrl, - storage, - storageKey, - flowType, - lock, - debug, - }: SupabaseAuthClientOptions, - headers?: Record, - fetch?: Fetch - ) { - const authHeaders = { - Authorization: `Bearer ${this.supabaseKey}`, - apikey: `${this.supabaseKey}`, - } - return new SupabaseAuthClient({ - url: this.authUrl.href, - headers: { ...authHeaders, ...headers }, - storageKey: storageKey, - autoRefreshToken, - persistSession, - detectSessionInUrl, - storage, - flowType, - lock, - debug, - fetch, - // auth checks if there is a custom authorizaiton header using this flag - // so it knows whether to return an error when getUser is called with no session - hasCustomAuthorizationHeader: 'Authorization' in this.headers, - }) - } - - private _initRealtimeClient(options: RealtimeClientOptions) { - return new RealtimeClient(this.realtimeUrl.href, { - ...options, - params: { ...{ apikey: this.supabaseKey }, ...options?.params }, - }) - } - - private _listenForAuthEvents() { - let data = this.auth.onAuthStateChange((event, session) => { - this._handleTokenChanged(event, 'CLIENT', session?.access_token) - }) - return data - } - - private _handleTokenChanged( - event: AuthChangeEvent, - source: 'CLIENT' | 'STORAGE', - token?: string - ) { - if ( - (event === 'TOKEN_REFRESHED' || event === 'SIGNED_IN') && - this.changedAccessToken !== token - ) { - this.changedAccessToken = token - } else if (event === 'SIGNED_OUT') { - this.realtime.setAuth() - if (source == 'STORAGE') this.auth.signOut() - this.changedAccessToken = undefined - } - } -} diff --git a/src/index.ts b/src/index.ts deleted file mode 100644 index 95b97461..00000000 --- a/src/index.ts +++ /dev/null @@ -1,86 +0,0 @@ -import SupabaseClient from './SupabaseClient' -import type { SupabaseClientOptions } from './lib/types' - -export * from '@supabase/auth-js' -export type { User as AuthUser, Session as AuthSession } from '@supabase/auth-js' -export { - type PostgrestResponse, - type PostgrestSingleResponse, - type PostgrestMaybeSingleResponse, - PostgrestError, -} from '@supabase/postgrest-js' -export { - FunctionsHttpError, - FunctionsFetchError, - FunctionsRelayError, - FunctionsError, - type FunctionInvokeOptions, - FunctionRegion, -} from '@supabase/functions-js' -export * from '@supabase/realtime-js' -export { default as SupabaseClient } from './SupabaseClient' -export type { SupabaseClientOptions, QueryResult, QueryData, QueryError } from './lib/types' - -/** - * Creates a new Supabase Client. - */ -export const createClient = < - Database = any, - SchemaNameOrClientOptions extends - | (string & keyof Omit) - | { PostgrestVersion: string } = 'public' extends keyof Omit - ? 'public' - : string & keyof Omit, - SchemaName extends string & - keyof Omit = SchemaNameOrClientOptions extends string & - keyof Omit - ? SchemaNameOrClientOptions - : 'public' extends keyof Omit - ? 'public' - : string & keyof Omit, '__InternalSupabase'> ->( - supabaseUrl: string, - supabaseKey: string, - options?: SupabaseClientOptions -): SupabaseClient => { - return new SupabaseClient( - supabaseUrl, - supabaseKey, - options - ) -} - -// Check for Node.js <= 18 deprecation -function shouldShowDeprecationWarning(): boolean { - // Skip in browser environments - if (typeof window !== 'undefined') { - return false - } - - // Skip if process is not available (e.g., Edge Runtime) - if (typeof process === 'undefined') { - return false - } - - // Use dynamic property access to avoid Next.js Edge Runtime static analysis warnings - const processVersion = (process as any)['version'] - if (processVersion === undefined || processVersion === null) { - return false - } - - const versionMatch = processVersion.match(/^v(\d+)\./) - if (!versionMatch) { - return false - } - - const majorVersion = parseInt(versionMatch[1], 10) - return majorVersion <= 18 -} - -if (shouldShowDeprecationWarning()) { - console.warn( - `⚠️ Node.js 18 and below are deprecated and will no longer be supported in future versions of @supabase/supabase-js. ` + - `Please upgrade to Node.js 20 or later. ` + - `For more information, visit: https://github.com/orgs/supabase/discussions/37217` - ) -} diff --git a/src/lib/SupabaseAuthClient.ts b/src/lib/SupabaseAuthClient.ts deleted file mode 100644 index ebc36395..00000000 --- a/src/lib/SupabaseAuthClient.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { AuthClient } from '@supabase/auth-js' -import { SupabaseAuthClientOptions } from './types' - -export class SupabaseAuthClient extends AuthClient { - constructor(options: SupabaseAuthClientOptions) { - super(options) - } -} diff --git a/src/lib/constants.ts b/src/lib/constants.ts deleted file mode 100644 index 101927de..00000000 --- a/src/lib/constants.ts +++ /dev/null @@ -1,35 +0,0 @@ -// constants.ts -import { RealtimeClientOptions } from '@supabase/realtime-js' -import { SupabaseAuthClientOptions } from './types' -import { version } from './version' - -let JS_ENV = '' -// @ts-ignore -if (typeof Deno !== 'undefined') { - JS_ENV = 'deno' -} else if (typeof document !== 'undefined') { - JS_ENV = 'web' -} else if (typeof navigator !== 'undefined' && navigator.product === 'ReactNative') { - JS_ENV = 'react-native' -} else { - JS_ENV = 'node' -} - -export const DEFAULT_HEADERS = { 'X-Client-Info': `supabase-js-${JS_ENV}/${version}` } - -export const DEFAULT_GLOBAL_OPTIONS = { - headers: DEFAULT_HEADERS, -} - -export const DEFAULT_DB_OPTIONS = { - schema: 'public', -} - -export const DEFAULT_AUTH_OPTIONS: SupabaseAuthClientOptions = { - autoRefreshToken: true, - persistSession: true, - detectSessionInUrl: true, - flowType: 'implicit', -} - -export const DEFAULT_REALTIME_OPTIONS: RealtimeClientOptions = {} diff --git a/src/lib/fetch.ts b/src/lib/fetch.ts deleted file mode 100644 index c3ec5f42..00000000 --- a/src/lib/fetch.ts +++ /dev/null @@ -1,48 +0,0 @@ -// @ts-ignore -import nodeFetch, { Headers as NodeFetchHeaders } from '@supabase/node-fetch' - -type Fetch = typeof fetch - -export const resolveFetch = (customFetch?: Fetch): Fetch => { - let _fetch: Fetch - if (customFetch) { - _fetch = customFetch - } else if (typeof fetch === 'undefined') { - _fetch = nodeFetch as unknown as Fetch - } else { - _fetch = fetch - } - return (...args: Parameters) => _fetch(...args) -} - -export const resolveHeadersConstructor = () => { - if (typeof Headers === 'undefined') { - return NodeFetchHeaders - } - - return Headers -} - -export const fetchWithAuth = ( - supabaseKey: string, - getAccessToken: () => Promise, - customFetch?: Fetch -): Fetch => { - const fetch = resolveFetch(customFetch) - const HeadersConstructor = resolveHeadersConstructor() - - return async (input, init) => { - const accessToken = (await getAccessToken()) ?? supabaseKey - let headers = new HeadersConstructor(init?.headers) - - if (!headers.has('apikey')) { - headers.set('apikey', supabaseKey) - } - - if (!headers.has('Authorization')) { - headers.set('Authorization', `Bearer ${accessToken}`) - } - - return fetch(input, { ...init, headers }) - } -} diff --git a/src/lib/helpers.ts b/src/lib/helpers.ts deleted file mode 100644 index 4e4c7fe9..00000000 --- a/src/lib/helpers.ts +++ /dev/null @@ -1,73 +0,0 @@ -// helpers.ts -import { SupabaseClientOptions } from './types' - -export function uuid() { - return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = (Math.random() * 16) | 0, - v = c == 'x' ? r : (r & 0x3) | 0x8 - return v.toString(16) - }) -} - -export function ensureTrailingSlash(url: string): string { - return url.endsWith('/') ? url : url + '/' -} - -export const isBrowser = () => typeof window !== 'undefined' - -export function applySettingDefaults< - Database = any, - SchemaName extends string & keyof Database = 'public' extends keyof Database - ? 'public' - : string & keyof Database ->( - options: SupabaseClientOptions, - defaults: SupabaseClientOptions -): Required> { - const { - db: dbOptions, - auth: authOptions, - realtime: realtimeOptions, - global: globalOptions, - } = options - const { - db: DEFAULT_DB_OPTIONS, - auth: DEFAULT_AUTH_OPTIONS, - realtime: DEFAULT_REALTIME_OPTIONS, - global: DEFAULT_GLOBAL_OPTIONS, - } = defaults - - const result: Required> = { - db: { - ...DEFAULT_DB_OPTIONS, - ...dbOptions, - }, - auth: { - ...DEFAULT_AUTH_OPTIONS, - ...authOptions, - }, - realtime: { - ...DEFAULT_REALTIME_OPTIONS, - ...realtimeOptions, - }, - storage: {}, - global: { - ...DEFAULT_GLOBAL_OPTIONS, - ...globalOptions, - headers: { - ...(DEFAULT_GLOBAL_OPTIONS?.headers ?? {}), - ...(globalOptions?.headers ?? {}), - }, - }, - accessToken: async () => '', - } - - if (options.accessToken) { - result.accessToken = options.accessToken - } else { - // hack around Required<> - delete (result as any).accessToken - } - - return result -} diff --git a/src/lib/types.ts b/src/lib/types.ts deleted file mode 100644 index eaafd889..00000000 --- a/src/lib/types.ts +++ /dev/null @@ -1,125 +0,0 @@ -import { AuthClient } from '@supabase/auth-js' -import { RealtimeClientOptions } from '@supabase/realtime-js' -import { PostgrestError } from '@supabase/postgrest-js' -import { StorageClientOptions } from '@supabase/storage-js/dist/module/StorageClient' - -type AuthClientOptions = ConstructorParameters[0] - -export interface SupabaseAuthClientOptions extends AuthClientOptions {} - -export type Fetch = typeof fetch - -export type SupabaseClientOptions = { - /** - * The Postgres schema which your tables belong to. Must be on the list of exposed schemas in Supabase. Defaults to `public`. - */ - db?: { - schema?: SchemaName - } - - auth?: { - /** - * Automatically refreshes the token for logged-in users. Defaults to true. - */ - autoRefreshToken?: boolean - /** - * Optional key name used for storing tokens in local storage. - */ - storageKey?: string - /** - * Whether to persist a logged-in session to storage. Defaults to true. - */ - persistSession?: boolean - /** - * Detect a session from the URL. Used for OAuth login callbacks. Defaults to true. - */ - detectSessionInUrl?: boolean - /** - * A storage provider. Used to store the logged-in session. - */ - storage?: SupabaseAuthClientOptions['storage'] - /** - * OAuth flow to use - defaults to implicit flow. PKCE is recommended for mobile and server-side applications. - */ - flowType?: SupabaseAuthClientOptions['flowType'] - /** - * If debug messages for authentication client are emitted. Can be used to inspect the behavior of the library. - */ - debug?: SupabaseAuthClientOptions['debug'] - /** - * Provide your own locking mechanism based on the environment. By default no locking is done at this time. - * - * @experimental - */ - lock?: SupabaseAuthClientOptions['lock'] - } - /** - * Options passed to the realtime-js instance - */ - realtime?: RealtimeClientOptions - storage?: StorageClientOptions - global?: { - /** - * A custom `fetch` implementation. - */ - fetch?: Fetch - /** - * Optional headers for initializing the client. - */ - headers?: Record - } - /** - * Optional function for using a third-party authentication system with - * Supabase. The function should return an access token or ID token (JWT) by - * obtaining it from the third-party auth client library. Note that this - * function may be called concurrently and many times. Use memoization and - * locking techniques if this is not supported by the client libraries. - * - * When set, the `auth` namespace of the Supabase client cannot be used. - * Create another client if you wish to use Supabase Auth and third-party - * authentications concurrently in the same application. - */ - accessToken?: () => Promise -} - -export type GenericRelationship = { - foreignKeyName: string - columns: string[] - isOneToOne?: boolean - referencedRelation: string - referencedColumns: string[] -} - -export type GenericTable = { - Row: Record - Insert: Record - Update: Record - Relationships: GenericRelationship[] -} - -export type GenericUpdatableView = GenericTable - -export type GenericNonUpdatableView = { - Row: Record - Relationships: GenericRelationship[] -} - -export type GenericView = GenericUpdatableView | GenericNonUpdatableView - -export type GenericFunction = { - Args: Record - Returns: unknown -} - -export type GenericSchema = { - Tables: Record - Views: Record - Functions: Record -} - -/** - * Helper types for query results. - */ -export type QueryResult = T extends PromiseLike ? U : never -export type QueryData = T extends PromiseLike<{ data: infer U }> ? Exclude : never -export type QueryError = PostgrestError diff --git a/src/lib/version.ts b/src/lib/version.ts deleted file mode 100644 index 73b21a01..00000000 --- a/src/lib/version.ts +++ /dev/null @@ -1 +0,0 @@ -export const version = '0.0.0-automated' diff --git a/supabase/.branches/_current_branch b/supabase/.branches/_current_branch deleted file mode 100644 index 88d050b1..00000000 --- a/supabase/.branches/_current_branch +++ /dev/null @@ -1 +0,0 @@ -main \ No newline at end of file diff --git a/supabase/.temp/cli-latest b/supabase/.temp/cli-latest deleted file mode 100644 index 8e00c6d6..00000000 --- a/supabase/.temp/cli-latest +++ /dev/null @@ -1 +0,0 @@ -v2.33.9 \ No newline at end of file diff --git a/supabase/functions/echo/index.ts b/supabase/functions/echo/index.ts deleted file mode 100644 index a4b9f85f..00000000 --- a/supabase/functions/echo/index.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { serve } from 'https://deno.land/std@0.168.0/http/server.ts' - -const corsHeaders = { - 'Access-Control-Allow-Origin': '*', - 'Access-Control-Allow-Headers': 'authorization, x-client-info, apikey, content-type', -} - -serve(async (req) => { - // Handle CORS preflight requests - if (req.method === 'OPTIONS') { - return new Response('ok', { headers: corsHeaders }) - } - - try { - const body = await req.json() - const data = { - echo: body, - method: req.method, - url: req.url, - timestamp: new Date().toISOString(), - } - - return new Response(JSON.stringify(data), { - headers: { ...corsHeaders, 'Content-Type': 'application/json' }, - status: 200, - }) - } catch (error) { - return new Response(JSON.stringify({ error: error.message }), { - headers: { ...corsHeaders, 'Content-Type': 'application/json' }, - status: 400, - }) - } -}) diff --git a/supabase/functions/hello/index.ts b/supabase/functions/hello/index.ts deleted file mode 100644 index d72d185d..00000000 --- a/supabase/functions/hello/index.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { serve } from 'https://deno.land/std@0.168.0/http/server.ts' - -const corsHeaders = { - 'Access-Control-Allow-Origin': '*', - 'Access-Control-Allow-Headers': 'authorization, x-client-info, apikey, content-type', -} - -serve(async (req) => { - // Handle CORS preflight requests - if (req.method === 'OPTIONS') { - return new Response('ok', { headers: corsHeaders }) - } - - try { - const { name } = await req.json() - const data = { - message: `Hello ${name || 'World'}!`, - timestamp: new Date().toISOString(), - } - - return new Response(JSON.stringify(data), { - headers: { ...corsHeaders, 'Content-Type': 'application/json' }, - status: 200, - }) - } catch (error) { - return new Response(JSON.stringify({ error: error.message }), { - headers: { ...corsHeaders, 'Content-Type': 'application/json' }, - status: 400, - }) - } -}) diff --git a/supabase/functions/status/index.ts b/supabase/functions/status/index.ts deleted file mode 100644 index fbba08bc..00000000 --- a/supabase/functions/status/index.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { serve } from 'https://deno.land/std@0.168.0/http/server.ts' - -const corsHeaders = { - 'Access-Control-Allow-Origin': '*', - 'Access-Control-Allow-Headers': 'authorization, x-client-info, apikey, content-type', -} - -serve(async (req) => { - // Handle CORS preflight requests - if (req.method === 'OPTIONS') { - return new Response('ok', { headers: corsHeaders }) - } - - try { - const data = { - status: 'ok', - timestamp: new Date().toISOString(), - environment: Deno.env.get('ENVIRONMENT') || 'development', - version: '1.0.0', - uptime: Date.now(), - } - - return new Response(JSON.stringify(data), { - headers: { ...corsHeaders, 'Content-Type': 'application/json' }, - status: 200, - }) - } catch (error) { - return new Response(JSON.stringify({ error: error.message }), { - headers: { ...corsHeaders, 'Content-Type': 'application/json' }, - status: 500, - }) - } -}) diff --git a/supabase/migrations/20250422000000_create_todos_table.sql b/supabase/migrations/20250422000000_create_todos_table.sql deleted file mode 100644 index ca7a76d8..00000000 --- a/supabase/migrations/20250422000000_create_todos_table.sql +++ /dev/null @@ -1,54 +0,0 @@ --- Create todos table -CREATE TABLE IF NOT EXISTS public.todos ( - id UUID PRIMARY KEY DEFAULT gen_random_uuid(), - task TEXT NOT NULL, - is_complete BOOLEAN NOT NULL DEFAULT FALSE, - created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), - user_id UUID REFERENCES auth.users(id) -); - --- Set up Row Level Security (RLS) -ALTER TABLE public.todos ENABLE ROW LEVEL SECURITY; - --- Allow anonymous users to read all todos (public data) -CREATE POLICY "Allow anonymous read access" ON public.todos - FOR SELECT - TO anon - USING (true); - --- Allow anonymous users to insert todos (for backward compatibility with old tests) -CREATE POLICY "Allow anonymous insert access" ON public.todos - FOR INSERT - TO anon - WITH CHECK (true); - --- Allow anonymous users to delete todos (for backward compatibility with old tests) -CREATE POLICY "Allow anonymous delete access" ON public.todos - FOR DELETE - TO anon - USING (true); - --- Allow authenticated users to read their own todos -CREATE POLICY "Allow authenticated read own todos" ON public.todos - FOR SELECT - TO authenticated - USING (auth.uid() = user_id); - --- Allow authenticated users to insert their own todos -CREATE POLICY "Allow authenticated insert own todos" ON public.todos - FOR INSERT - TO authenticated - WITH CHECK (auth.uid() = user_id); - --- Allow authenticated users to update their own todos -CREATE POLICY "Allow authenticated update own todos" ON public.todos - FOR UPDATE - TO authenticated - USING (auth.uid() = user_id) - WITH CHECK (auth.uid() = user_id); - --- Allow authenticated users to delete their own todos -CREATE POLICY "Allow authenticated delete own todos" ON public.todos - FOR DELETE - TO authenticated - USING (auth.uid() = user_id); diff --git a/supabase/migrations/20250423000000_realtime_rls_setup.sql b/supabase/migrations/20250423000000_realtime_rls_setup.sql deleted file mode 100644 index 8e81a72e..00000000 --- a/supabase/migrations/20250423000000_realtime_rls_setup.sql +++ /dev/null @@ -1,11 +0,0 @@ -create policy "authenticated can read all messages on topic" -on "realtime"."messages" -for select -to authenticated -using ( realtime.topic() like '%channel%' ); - -create policy "authenticated can insert messages on topic" -on "realtime"."messages" -for insert -to authenticated -with check (realtime.topic() like '%channel%'); \ No newline at end of file diff --git a/supabase/migrations/20250424000000_storage_anon_policy.sql b/supabase/migrations/20250424000000_storage_anon_policy.sql deleted file mode 100644 index dfea0b66..00000000 --- a/supabase/migrations/20250424000000_storage_anon_policy.sql +++ /dev/null @@ -1,4 +0,0 @@ --- Create test bucket for storage tests -insert into storage.buckets (id, name, public) -values ('test-bucket', 'test-bucket', false) -on conflict (id) do nothing; diff --git a/supabase/seed/seed_todos.sql b/supabase/seed/seed_todos.sql deleted file mode 100644 index 8b49be91..00000000 --- a/supabase/seed/seed_todos.sql +++ /dev/null @@ -1,8 +0,0 @@ --- Seed data for todos table -INSERT INTO public.todos (task, is_complete) -VALUES - ('Buy groceries', false), - ('Complete project report', true), - ('Call mom', false), - ('Schedule dentist appointment', false), - ('Pay bills', true); \ No newline at end of file diff --git a/test/deno/.gitignore b/test/deno/.gitignore deleted file mode 100644 index 6d277716..00000000 --- a/test/deno/.gitignore +++ /dev/null @@ -1 +0,0 @@ -deno.json \ No newline at end of file diff --git a/test/deno/edge-functions-integration.test.ts b/test/deno/edge-functions-integration.test.ts deleted file mode 100644 index 861d28ed..00000000 --- a/test/deno/edge-functions-integration.test.ts +++ /dev/null @@ -1,132 +0,0 @@ -import { assertEquals, assertExists } from 'https://deno.land/std@0.220.1/assert/mod.ts' -import { createClient } from '../../dist/module/index.js' - -// These tests are for integration testing with actual deployed edge functions -// To run these tests, you need to: -// 1. Deploy the edge functions to a Supabase project -// 2. Set the SUPABASE_URL and SUPABASE_ANON_KEY environment variables -// 3. Or use the local development credentials below - -Deno.test( - 'Edge Functions Integration Tests', - { sanitizeOps: false, sanitizeResources: false }, - async (t) => { - // Use environment variables or fall back to local development - const SUPABASE_URL = Deno.env.get('SUPABASE_URL') || 'http://127.0.0.1:54321' - const ANON_KEY = - Deno.env.get('SUPABASE_ANON_KEY') || - 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24iLCJleHAiOjE5ODM4MTI5OTZ9.CRXP1A7WOeoJeXxjNni43kdQwgnWNReilDMblYTn_I0' - - const supabase = createClient(SUPABASE_URL, ANON_KEY, { - realtime: { heartbeatIntervalMs: 500 }, - }) - - try { - await t.step('hello function - should return greeting with name', async () => { - const { data, error } = await supabase.functions.invoke('hello', { - body: { name: 'Test User' }, - }) - - assertEquals(error, null) - assertExists(data) - assertEquals(typeof data.message, 'string') - assertEquals(data.message, 'Hello Test User!') - assertEquals(typeof data.timestamp, 'string') - }) - - await t.step('hello function - should return default greeting without name', async () => { - const { data, error } = await supabase.functions.invoke('hello', { - body: {}, - }) - - assertEquals(error, null) - assertExists(data) - assertEquals(typeof data.message, 'string') - assertEquals(data.message, 'Hello World!') - assertEquals(typeof data.timestamp, 'string') - }) - - await t.step('echo function - should echo request body', async () => { - const testData = { - message: 'Hello Echo!', - number: 42, - array: [1, 2, 3], - nested: { key: 'value' }, - } - - const { data, error } = await supabase.functions.invoke('echo', { - body: testData, - }) - - assertEquals(error, null) - assertExists(data) - assertEquals(data.echo, testData) - assertEquals(typeof data.method, 'string') - assertEquals(typeof data.url, 'string') - assertEquals(typeof data.timestamp, 'string') - }) - - await t.step('status function - should return system status', async () => { - const { data, error } = await supabase.functions.invoke('status', { - body: {}, - }) - - assertEquals(error, null) - assertExists(data) - assertEquals(data.status, 'ok') - assertEquals(typeof data.timestamp, 'string') - assertEquals(typeof data.environment, 'string') - assertEquals(data.version, '1.0.0') - assertEquals(typeof data.uptime, 'number') - }) - - await t.step('should handle non-existent function', async () => { - const { data, error } = await supabase.functions.invoke('non-existent-function', { - body: {}, - }) - - assertExists(error) - assertEquals(data, null) - }) - - await t.step('should handle concurrent function calls', async () => { - const promises = Array.from({ length: 5 }, (_, i) => - supabase.functions.invoke('hello', { - body: { name: `Concurrent Test ${i}` }, - }) - ) - - const results = await Promise.all(promises) - - // Check if any functions are deployed - const hasDeployedFunctions = results.some(({ error }) => !error) - - if (!hasDeployedFunctions) { - console.log('No functions deployed, skipping concurrent execution test') - return - } - - results.forEach(({ data, error }) => { - if (!error) { - assertEquals(error, null) - assertExists(data) - assertEquals(typeof data.message, 'string') - assertEquals(typeof data.timestamp, 'string') - } - }) - }) - - await t.step('should handle function errors gracefully', async () => { - const { data, error } = await supabase.functions.invoke('hello', { - body: 'invalid json', - }) - - assertExists(error) - assertEquals(data, null) - }) - } catch (error) { - console.error('Test error:', error) - throw error - } - } -) diff --git a/test/deno/integration.test.ts b/test/deno/integration.test.ts deleted file mode 100644 index 4107ddb7..00000000 --- a/test/deno/integration.test.ts +++ /dev/null @@ -1,242 +0,0 @@ -import { assertEquals, assertExists } from 'https://deno.land/std@0.220.1/assert/mod.ts' -import { createClient, SupabaseClient } from '../../dist/module/index.js' -import type { RealtimeChannel } from '../../dist/module/index.js' - -// These tests assume that a local Supabase server is already running -// Start a local Supabase instance with 'supabase start' before running these tests - -// TODO: Remove sanitizeOps and sanitizeResources once the issue is fixed -Deno.test( - 'Supabase Integration Tests', - { sanitizeOps: false, sanitizeResources: false }, - async (t) => { - // Default local dev credentials from Supabase CLI - const SUPABASE_URL = 'http://127.0.0.1:54321' - const ANON_KEY = - 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24iLCJleHAiOjE5ODM4MTI5OTZ9.CRXP1A7WOeoJeXxjNni43kdQwgnWNReilDMblYTn_I0' - - const supabase = createClient(SUPABASE_URL, ANON_KEY, { - realtime: { heartbeatIntervalMs: 500 }, - }) - - // Cleanup function to be called after all tests - const cleanup = async () => { - await supabase.auth.signOut() - await supabase.auth.stopAutoRefresh() - await supabase.removeAllChannels() - // Give some time for cleanup to complete - await new Promise((resolve) => setTimeout(resolve, 1000)) - } - - try { - await t.step('should connect to Supabase instance', () => { - assertExists(supabase) - assertEquals(supabase instanceof SupabaseClient, true) - }) - - await t.step('PostgREST - should query data from public schema', async () => { - const { data, error } = await supabase.from('todos').select('*').limit(5) - - // The default schema includes a 'todos' table, but it might be empty - assertEquals(error, null) - assertEquals(Array.isArray(data), true) - }) - - await t.step('PostgREST - should create and delete a todo', async () => { - // Create a new todo - const { data: createdTodo, error: createError } = await supabase - .from('todos') - .insert({ task: 'Integration Test Todo', is_complete: false }) - .select() - .single() - - assertEquals(createError, null) - assertExists(createdTodo) - assertEquals(createdTodo!.task, 'Integration Test Todo') - assertEquals(createdTodo!.is_complete, false) - - // Delete the created todo - const { error: deleteError } = await supabase - .from('todos') - .delete() - .eq('id', createdTodo!.id) - - assertEquals(deleteError, null) - - // Verify the todo was deleted - const { data: fetchedTodo, error: fetchError } = await supabase - .from('todos') - .select('*') - .eq('id', createdTodo!.id) - .single() - - assertExists(fetchError) - assertEquals(fetchedTodo, null) - }) - - await t.step('Authentication - should sign up a user', async () => { - const email = `test-${Date.now()}@example.com` - const password = 'password123' - - const { data, error } = await supabase.auth.signUp({ - email, - password, - }) - - assertEquals(error, null) - assertExists(data.user) - assertEquals(data.user!.email, email) - }) - - await t.step('Authentication - should sign in and out successfully', async () => { - const email = `deno-signout-${Date.now()}@example.com` - const password = 'password123' - - await supabase.auth.signUp({ email, password }) - const { data, error } = await supabase.auth.signInWithPassword({ email, password }) - - assertEquals(error, null) - assertExists(data.user) - assertEquals(data.user!.email, email) - - const { error: signOutError } = await supabase.auth.signOut() - - assertEquals(signOutError, null) - }) - - await t.step('Authentication - should get current user', async () => { - const email = `deno-getuser-${Date.now()}@example.com` - const password = 'password123' - - await supabase.auth.signUp({ email, password }) - await supabase.auth.signInWithPassword({ email, password }) - - const { data, error } = await supabase.auth.getUser() - - assertEquals(error, null) - assertExists(data.user) - assertEquals(data.user!.email, email) - }) - - await t.step('Authentication - should handle invalid credentials', async () => { - const email = `deno-invalid-${Date.now()}@example.com` - const password = 'password123' - - await supabase.auth.signUp({ email, password }) - - const { data, error } = await supabase.auth.signInWithPassword({ - email, - password: 'wrongpassword', - }) - - assertExists(error) - assertEquals(data.user, null) - }) - - await t.step('Authentication - should handle non-existent user', async () => { - const email = `deno-nonexistent-${Date.now()}@example.com` - const password = 'password123' - - const { data, error } = await supabase.auth.signInWithPassword({ - email, - password, - }) - - assertExists(error) - assertEquals(data.user, null) - }) - - await t.step('Realtime - is able to connect and broadcast', async () => { - const channelName = `channel-${crypto.randomUUID()}` - let channel: RealtimeChannel - const email = `test-${Date.now()}@example.com` - const password = 'password123' - - // Sign up and create channel - await supabase.auth.signUp({ email, password }) - const config = { broadcast: { self: true }, private: true } - channel = supabase.channel(channelName, { config }) - await supabase.realtime.setAuth() - - const testMessage = { message: 'test' } - let receivedMessage: any - let subscribed = false - let attempts = 0 - - channel - .on('broadcast', { event: '*' }, (payload: unknown) => (receivedMessage = payload)) - .subscribe((status: string) => { - if (status == 'SUBSCRIBED') subscribed = true - }) - - // Wait for subscription - while (!subscribed) { - if (attempts > 50) throw new Error('Timeout waiting for subscription') - await new Promise((resolve) => setTimeout(resolve, 100)) - attempts++ - } - - attempts = 0 - - channel.send({ - type: 'broadcast', - event: 'test-event', - payload: testMessage, - }) - - // Wait on message - while (!receivedMessage) { - if (attempts > 50) throw new Error('Timeout waiting for message') - await new Promise((resolve) => setTimeout(resolve, 100)) - attempts++ - } - - assertExists(receivedMessage) - assertEquals(supabase.realtime.getChannels().length, 1) - - // Cleanup channel - await channel.unsubscribe() - }) - - await t.step('Storage - should upload and list file in bucket', async () => { - const bucket = 'test-bucket' - const filePath = 'test-file.txt' - const fileContent = new Blob(['Hello, Supabase Storage!'], { type: 'text/plain' }) - - // use service_role key for bypass RLS - const SERVICE_ROLE_KEY = - Deno.env.get('SUPABASE_SERVICE_ROLE_KEY') || - 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6InNlcnZpY2Vfcm9sZSIsImV4cCI6MTk4MzgxMjk5Nn0.EGIM96RAZx35lJzdJsyH-qQwv8Hdp7fsn3W0YpN81IU' - const supabaseWithServiceRole = createClient(SUPABASE_URL, SERVICE_ROLE_KEY, { - realtime: { heartbeatIntervalMs: 500 }, - }) - - // upload - const { data: uploadData, error: uploadError } = await supabaseWithServiceRole.storage - .from(bucket) - .upload(filePath, fileContent, { upsert: true }) - assertEquals(uploadError, null) - assertExists(uploadData) - - // list - const { data: listData, error: listError } = await supabaseWithServiceRole.storage - .from(bucket) - .list() - assertEquals(listError, null) - assertEquals(Array.isArray(listData), true) - if (!listData) throw new Error('listData is null') - const fileNames = listData.map((f: any) => f.name) - assertEquals(fileNames.includes('test-file.txt'), true) - - // delete file - const { error: deleteError } = await supabaseWithServiceRole.storage - .from(bucket) - .remove([filePath]) - assertEquals(deleteError, null) - }) - } finally { - // Ensure cleanup runs even if tests fail - await cleanup() - } - } -) diff --git a/test/deno/package.json b/test/deno/package.json deleted file mode 100644 index 10d6397d..00000000 --- a/test/deno/package.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "test-deno", - "private": true, - "scripts": { - "test": "npm run setup-deps && deno test --allow-all --unstable-sloppy-imports integration.test.ts", - "test:edge-functions": "npm run setup-deps && deno test --allow-all --no-check --unstable-sloppy-imports edge-functions-integration.test.ts", - "setup-deps": "node setup-deps.js" - }, - "dependencies": { - "@supabase/supabase-js": "file:supabase-supabase-js-0.0.0-automated.tgz" - } -} diff --git a/test/deno/setup-deps.js b/test/deno/setup-deps.js deleted file mode 100755 index 7063dc41..00000000 --- a/test/deno/setup-deps.js +++ /dev/null @@ -1,61 +0,0 @@ -#!/usr/bin/env node - -const fs = require('node:fs') -const path = require('node:path') - -// Get the directory of the script -const scriptDir = __dirname -const projectRoot = path.dirname(path.dirname(scriptDir)) - -// Read package.json from main project -const packageJsonPath = path.join(projectRoot, 'package.json') -const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')) - -// Extract versions from package.json dependencies -const getVersion = (packageName) => { - const dependencies = packageJson.dependencies || {} - const devDependencies = packageJson.devDependencies || {} - - // Check both dependencies and devDependencies - return dependencies[packageName] || devDependencies[packageName] || null -} - -const versions = { - realtime: getVersion('@supabase/realtime-js'), - functions: getVersion('@supabase/functions-js'), - postgrest: getVersion('@supabase/postgrest-js'), - auth: getVersion('@supabase/auth-js'), - storage: getVersion('@supabase/storage-js'), - node_fetch: getVersion('@supabase/node-fetch'), -} - -// Read or create deno.json -const denoJsonPath = path.join(scriptDir, 'deno.json') -let denoJson = { - lock: false, - imports: {}, -} - -try { - if (fs.existsSync(denoJsonPath)) { - denoJson = JSON.parse(fs.readFileSync(denoJsonPath, 'utf8')) - } -} catch (error) { - console.warn('Warning: Could not read existing deno.json, creating new one') -} - -// Update imports in deno.json -denoJson.imports = { - '@supabase/realtime-js': `npm:@supabase/realtime-js@${versions.realtime}`, - '@supabase/functions-js': `npm:@supabase/functions-js@${versions.functions}`, - '@supabase/postgrest-js': `npm:@supabase/postgrest-js@${versions.postgrest}`, - '@supabase/auth-js': `npm:@supabase/auth-js@${versions.auth}`, - '@supabase/storage-js': `npm:@supabase/storage-js@${versions.storage}`, - '@supabase/node-fetch': `npm:@supabase/node-fetch@${versions.node_fetch}`, -} - -// Write updated deno.json -fs.writeFileSync(denoJsonPath, JSON.stringify(denoJson, null, 2) + '\n') - -console.log('Updated deno.json with versions from package.json') -console.log('Versions used:', versions) diff --git a/test/integration.browser.test.ts b/test/integration.browser.test.ts deleted file mode 100644 index ec9cf0bd..00000000 --- a/test/integration.browser.test.ts +++ /dev/null @@ -1,102 +0,0 @@ -import { serve } from 'https://deno.land/std@0.192.0/http/server.ts' -import { assertEquals } from 'https://deno.land/std@0.224.0/testing/asserts.ts' -import { describe, it, beforeAll, afterAll } from 'https://deno.land/std@0.224.0/testing/bdd.ts' -import { Browser, Page, launch } from 'npm:puppeteer@24.9.0' -import { sleep } from 'https://deno.land/x/sleep/mod.ts' -// Run the UMD build before serving the page -const stderr = 'inherit' -const ac = new AbortController() - -let browser: Browser -let page: Page - -const port = 8000 -const content = ` - -
- - - - - - - - -` - -beforeAll(async () => { - await new Deno.Command('supabase', { args: ['start'], stderr }).output() - await new Deno.Command('npm', { args: ['install'], stderr }).output() - await new Deno.Command('npm', { - args: ['run', 'build:umd', '--', '--mode', 'production'], - stderr, - }).output() - - await new Deno.Command('npx', { - args: ['puppeteer', 'browsers', 'install', 'chrome'], - stderr, - }).output() - - serve( - async (req: any) => { - if (req.url.endsWith('supabase.js')) { - const file = await Deno.readFile('./dist/umd/supabase.js') - - return new Response(file, { - headers: { 'content-type': 'application/javascript' }, - }) - } - return new Response(content, { - headers: { - 'content-type': 'text/html', - 'cache-control': 'no-cache', - }, - }) - }, - { signal: ac.signal, port: port } - ) -}) - -afterAll(async () => { - await ac.abort() - await page.close() - await browser.close() - await sleep(1) -}) - -describe('Realtime integration test', () => { - beforeAll(async () => { - browser = await launch({ - args: ['--no-sandbox', '--disable-setuid-sandbox'], - }) - page = await browser.newPage() - }) - - it('connects to realtime', async () => { - await page.goto('http://localhost:8000') - await page.waitForSelector('#realtime_status', { timeout: 2000 }) - const realtimeStatus = await page.$eval('#realtime_status', (el) => el.innerHTML) - assertEquals(realtimeStatus, 'SUBSCRIBED') - }) -}) diff --git a/test/integration.test.ts b/test/integration.test.ts deleted file mode 100644 index 55478ddc..00000000 --- a/test/integration.test.ts +++ /dev/null @@ -1,362 +0,0 @@ -import { createClient, RealtimeChannel, SupabaseClient } from '../src/index' - -// These tests assume that a local Supabase server is already running -// Start a local Supabase instance with 'supabase start' before running these tests -// Default local dev credentials from Supabase CLI -const SUPABASE_URL = 'http://127.0.0.1:54321' -const ANON_KEY = - 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24iLCJleHAiOjE5ODM4MTI5OTZ9.CRXP1A7WOeoJeXxjNni43kdQwgnWNReilDMblYTn_I0' - -// For Node.js < 22, we need to provide a WebSocket implementation -// Node.js 22+ has native WebSocket support -let wsTransport: any = undefined -if (typeof WebSocket === 'undefined' && typeof process !== 'undefined' && process.versions?.node) { - try { - wsTransport = require('ws') - } catch (error) { - console.warn('WebSocket not available, Realtime features may not work') - } -} - -const supabase = createClient(SUPABASE_URL, ANON_KEY, { - realtime: { - heartbeatIntervalMs: 500, - ...(wsTransport && { transport: wsTransport }), - }, -}) - -describe('Supabase Integration Tests', () => { - test('should connect to Supabase instance', async () => { - expect(supabase).toBeDefined() - expect(supabase).toBeInstanceOf(SupabaseClient) - }) - - describe('PostgREST', () => { - test('should connect to PostgREST API', async () => { - const { data, error } = await supabase.from('todos').select('*').limit(5) - - // The default schema includes a 'todos' table, but it might be empty - expect(error).toBeNull() - expect(Array.isArray(data)).toBe(true) - }) - - // Test creating and deleting data - test('should create and delete a todo', async () => { - // Create a new todo - const { data: createdTodo, error: createError } = await supabase - .from('todos') - .insert({ task: 'Integration Test Todo', is_complete: false }) - .select() - .single() - - expect(createError).toBeNull() - expect(createdTodo).toBeDefined() - expect(createdTodo!.task).toBe('Integration Test Todo') - expect(createdTodo!.is_complete).toBe(false) - - // Delete the created todo - const { error: deleteError } = await supabase.from('todos').delete().eq('id', createdTodo!.id) - - expect(deleteError).toBeNull() - - // Verify the todo was deleted - const { data: fetchedTodo, error: fetchError } = await supabase - .from('todos') - .select('*') - .eq('id', createdTodo!.id) - .single() - - expect(fetchError).not.toBeNull() - expect(fetchedTodo).toBeNull() - }) - }) - - describe('PostgreSQL RLS', () => { - let user1Email: string - let user2Email: string - let user1Id: string - let user2Id: string - let user1TodoId: string - let user2TodoId: string - - beforeAll(async () => { - // Create two test users - user1Email = `user1-${Date.now()}@example.com` - user2Email = `user2-${Date.now()}@example.com` - const password = 'password123' - - const { data: user1Data } = await supabase.auth.signUp({ - email: user1Email, - password, - }) - user1Id = user1Data.user!.id - - const { data: user2Data } = await supabase.auth.signUp({ - email: user2Email, - password, - }) - user2Id = user2Data.user!.id - - // Create todos for both users - await supabase.auth.signInWithPassword({ email: user1Email, password }) - const { data: user1Todo } = await supabase - .from('todos') - .insert({ task: 'User 1 Todo', is_complete: false, user_id: user1Id }) - .select() - .single() - user1TodoId = user1Todo!.id - - await supabase.auth.signInWithPassword({ email: user2Email, password }) - const { data: user2Todo } = await supabase - .from('todos') - .insert({ task: 'User 2 Todo', is_complete: false, user_id: user2Id }) - .select() - .single() - user2TodoId = user2Todo!.id - }) - - afterAll(async () => { - await supabase.auth.signOut() - }) - - test('should allow anonymous access via RLS policies', async () => { - await supabase.auth.signOut() - - const { data, error } = await supabase.from('todos').select('*').limit(5) - - expect(error).toBeNull() - expect(Array.isArray(data)).toBe(true) - }) - - test('should allow authenticated user to access their own data', async () => { - await supabase.auth.signInWithPassword({ email: user1Email, password: 'password123' }) - - const { data, error } = await supabase - .from('todos') - .select('*') - .eq('id', user1TodoId) - .single() - - expect(error).toBeNull() - expect(data).toBeDefined() - expect(data!.task).toBe('User 1 Todo') - }) - - test('should prevent access to other users data', async () => { - await supabase.auth.signInWithPassword({ email: user1Email, password: 'password123' }) - - const { data, error } = await supabase - .from('todos') - .select('*') - .eq('id', user2TodoId) - .single() - - expect(error).not.toBeNull() - expect(data).toBeNull() - }) - - test('should allow authenticated user to create their own data', async () => { - await supabase.auth.signInWithPassword({ email: user1Email, password: 'password123' }) - - const { data, error } = await supabase - .from('todos') - .insert({ task: 'New User 1 Todo', is_complete: false, user_id: user1Id }) - .select() - .single() - - expect(error).toBeNull() - expect(data).toBeDefined() - expect(data!.task).toBe('New User 1 Todo') - }) - - test('should allow authenticated user to update their own data', async () => { - await supabase.auth.signInWithPassword({ email: user1Email, password: 'password123' }) - - const { data, error } = await supabase - .from('todos') - .update({ task: 'Updated User 1 Todo' }) - .eq('id', user1TodoId) - .select() - .single() - - expect(error).toBeNull() - expect(data).toBeDefined() - expect(data!.task).toBe('Updated User 1 Todo') - }) - }) - - describe('Authentication', () => { - afterAll(async () => { - // Clean up by signing out the user - await supabase.auth.signOut() - }) - - test('should sign up a user', async () => { - const email = `test-${Date.now()}@example.com` - const password = 'password123' - - const { data, error } = await supabase.auth.signUp({ - email, - password, - }) - - expect(error).toBeNull() - expect(data.user).toBeDefined() - expect(data.user!.email).toBe(email) - }) - - test('should sign in and out successfully', async () => { - const email = `test-${Date.now()}@example.com` - const password = 'password123' - - await supabase.auth.signUp({ email, password }) - const { data, error } = await supabase.auth.signInWithPassword({ email, password }) - - expect(error).toBeNull() - expect(data.user).toBeDefined() - expect(data.user!.email).toBe(email) - - const { error: signOutError } = await supabase.auth.signOut() - - expect(signOutError).toBeNull() - }) - - test('should get current user', async () => { - const email = `test-${Date.now()}@example.com` - const password = 'password123' - - await supabase.auth.signUp({ email, password }) - await supabase.auth.signInWithPassword({ email, password }) - - const { data, error } = await supabase.auth.getUser() - - expect(error).toBeNull() - expect(data.user).toBeDefined() - expect(data.user!.email).toBe(email) - }) - - test('should handle invalid credentials', async () => { - const email = `test-${Date.now()}@example.com` - const password = 'password123' - - await supabase.auth.signUp({ email, password }) - - const { data, error } = await supabase.auth.signInWithPassword({ - email, - password: 'wrongpassword', - }) - - expect(error).not.toBeNull() - expect(data.user).toBeNull() - }) - - test('should handle non-existent user', async () => { - const email = `nonexistent-${Date.now()}@example.com` - const password = 'password123' - - const { data, error } = await supabase.auth.signInWithPassword({ - email, - password, - }) - - expect(error).not.toBeNull() - expect(data.user).toBeNull() - }) - }) - - describe('Realtime', () => { - const channelName = `channel-${crypto.randomUUID()}` - let channel: RealtimeChannel - let email: string - let password: string - - beforeEach(async () => { - await supabase.auth.signOut() - email = `test-${Date.now()}@example.com` - password = 'password123' - await supabase.auth.signUp({ email, password }) - - const config = { broadcast: { self: true }, private: true } - channel = supabase.channel(channelName, { config }) - - await supabase.realtime.setAuth() - }) - - afterEach(async () => { - await supabase.removeAllChannels() - }) - - test('is able to connect and broadcast', async () => { - const testMessage = { message: 'test' } - let receivedMessage: any - let subscribed = false - let attempts = 0 - - channel - .on('broadcast', { event: '*' }, (payload) => (receivedMessage = payload)) - .subscribe((status) => { - if (status == 'SUBSCRIBED') subscribed = true - }) - - // Wait for subscription - while (!subscribed) { - if (attempts > 50) throw new Error('Timeout waiting for subscription') - await new Promise((resolve) => setTimeout(resolve, 100)) - attempts++ - } - - attempts = 0 - - channel.send({ type: 'broadcast', event: 'test-event', payload: testMessage }) - - // Wait on message - while (!receivedMessage) { - if (attempts > 50) throw new Error('Timeout waiting for message') - await new Promise((resolve) => setTimeout(resolve, 100)) - attempts++ - } - expect(receivedMessage).toBeDefined() - expect(supabase.realtime.getChannels().length).toBe(1) - }, 10000) - }) -}) - -describe('Storage API', () => { - const bucket = 'test-bucket' - const filePath = 'test-file.txt' - const fileContent = new Blob(['Hello, Supabase Storage!'], { type: 'text/plain' }) - - // use service_role key for bypass RLS - const SERVICE_ROLE_KEY = process.env.SUPABASE_SERVICE_ROLE_KEY || 'use-service-role-key' - const supabaseWithServiceRole = createClient(SUPABASE_URL, SERVICE_ROLE_KEY, { - realtime: { - heartbeatIntervalMs: 500, - ...(wsTransport && { transport: wsTransport }), - }, - }) - - test('upload and list file in bucket', async () => { - // upload - const { data: uploadData, error: uploadError } = await supabaseWithServiceRole.storage - .from(bucket) - .upload(filePath, fileContent, { upsert: true }) - expect(uploadError).toBeNull() - expect(uploadData).toBeDefined() - - // list - const { data: listData, error: listError } = await supabaseWithServiceRole.storage - .from(bucket) - .list() - expect(listError).toBeNull() - expect(Array.isArray(listData)).toBe(true) - if (!listData) throw new Error('listData is null') - const fileNames = listData.map((f: any) => f.name) - expect(fileNames).toContain('test-file.txt') - - // delete file - const { error: deleteError } = await supabaseWithServiceRole.storage - .from(bucket) - .remove([filePath]) - expect(deleteError).toBeNull() - }) -}) diff --git a/test/integration/bun/bun.lock b/test/integration/bun/bun.lock deleted file mode 100644 index d7e192a2..00000000 --- a/test/integration/bun/bun.lock +++ /dev/null @@ -1,53 +0,0 @@ -{ - "lockfileVersion": 1, - "workspaces": { - "": { - "name": "test-bun", - "dependencies": { - "@supabase/supabase-js": "file:supabase-supabase-js-0.0.0-automated.tgz", - }, - "devDependencies": { - "bun-types": "latest", - }, - }, - }, - "packages": { - "@supabase/auth-js": ["@supabase/auth-js@2.70.0", "", { "dependencies": { "@supabase/node-fetch": "^2.6.14" } }, "sha512-BaAK/tOAZFJtzF1sE3gJ2FwTjLf4ky3PSvcvLGEgEmO4BSBkwWKu8l67rLLIBZPDnCyV7Owk2uPyKHa0kj5QGg=="], - - "@supabase/functions-js": ["@supabase/functions-js@2.4.5", "", { "dependencies": { "@supabase/node-fetch": "^2.6.14" } }, "sha512-v5GSqb9zbosquTo6gBwIiq7W9eQ7rE5QazsK/ezNiQXdCbY+bH8D9qEaBIkhVvX4ZRW5rP03gEfw5yw9tiq4EQ=="], - - "@supabase/node-fetch": ["@supabase/node-fetch@2.6.15", "", { "dependencies": { "whatwg-url": "^5.0.0" } }, "sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ=="], - - "@supabase/postgrest-js": ["@supabase/postgrest-js@1.19.4", "", { "dependencies": { "@supabase/node-fetch": "^2.6.14" } }, "sha512-O4soKqKtZIW3olqmbXXbKugUtByD2jPa8kL2m2c1oozAO11uCcGrRhkZL0kVxjBLrXHE0mdSkFsMj7jDSfyNpw=="], - - "@supabase/realtime-js": ["@supabase/realtime-js@2.11.15", "", { "dependencies": { "@supabase/node-fetch": "^2.6.13", "@types/phoenix": "^1.6.6", "@types/ws": "^8.18.1", "isows": "^1.0.7", "ws": "^8.18.2" } }, "sha512-HQKRnwAqdVqJW/P9TjKVK+/ETpW4yQ8tyDPPtRMKOH4Uh3vQD74vmj353CYs8+YwVBKubeUOOEpI9CT8mT4obw=="], - - "@supabase/storage-js": ["@supabase/storage-js@2.7.1", "", { "dependencies": { "@supabase/node-fetch": "^2.6.14" } }, "sha512-asYHcyDR1fKqrMpytAS1zjyEfvxuOIp1CIXX7ji4lHHcJKqyk+sLl/Vxgm4sN6u8zvuUtae9e4kDxQP2qrwWBA=="], - - "@supabase/supabase-js": ["@supabase/supabase-js@supabase-supabase-js-0.0.0-automated.tgz", { "dependencies": { "@supabase/auth-js": "2.70.0", "@supabase/functions-js": "2.4.5", "@supabase/node-fetch": "2.6.15", "@supabase/postgrest-js": "1.19.4", "@supabase/realtime-js": "2.11.15", "@supabase/storage-js": "2.7.1" } }], - - "@types/node": ["@types/node@24.0.10", "", { "dependencies": { "undici-types": "~7.8.0" } }, "sha512-ENHwaH+JIRTDIEEbDK6QSQntAYGtbvdDXnMXnZaZ6k13Du1dPMmprkEHIL7ok2Wl2aZevetwTAb5S+7yIF+enA=="], - - "@types/phoenix": ["@types/phoenix@1.6.6", "", {}, "sha512-PIzZZlEppgrpoT2QgbnDU+MMzuR6BbCjllj0bM70lWoejMeNJAxCchxnv7J3XFkI8MpygtRpzXrIlmWUBclP5A=="], - - "@types/react": ["@types/react@19.1.8", "", { "dependencies": { "csstype": "^3.0.2" } }, "sha512-AwAfQ2Wa5bCx9WP8nZL2uMZWod7J7/JSplxbTmBQ5ms6QpqNYm672H0Vu9ZVKVngQ+ii4R/byguVEUZQyeg44g=="], - - "@types/ws": ["@types/ws@8.18.1", "", { "dependencies": { "@types/node": "*" } }, "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg=="], - - "bun-types": ["bun-types@1.2.18", "", { "dependencies": { "@types/node": "*" }, "peerDependencies": { "@types/react": "^19" } }, "sha512-04+Eha5NP7Z0A9YgDAzMk5PHR16ZuLVa83b26kH5+cp1qZW4F6FmAURngE7INf4tKOvCE69vYvDEwoNl1tGiWw=="], - - "csstype": ["csstype@3.1.3", "", {}, "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="], - - "isows": ["isows@1.0.7", "", { "peerDependencies": { "ws": "*" } }, "sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg=="], - - "tr46": ["tr46@0.0.3", "", {}, "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="], - - "undici-types": ["undici-types@7.8.0", "", {}, "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw=="], - - "webidl-conversions": ["webidl-conversions@3.0.1", "", {}, "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="], - - "whatwg-url": ["whatwg-url@5.0.0", "", { "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" } }, "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw=="], - - "ws": ["ws@8.18.3", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg=="], - } -} diff --git a/test/integration/bun/integration.test.ts b/test/integration/bun/integration.test.ts deleted file mode 100644 index 985a172c..00000000 --- a/test/integration/bun/integration.test.ts +++ /dev/null @@ -1,148 +0,0 @@ -import { test, expect } from 'bun:test' -import { createClient } from '@supabase/supabase-js' - -const SUPABASE_URL = 'http://127.0.0.1:54321' -const ANON_KEY = - 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24iLCJleHAiOjE5ODM4MTI5OTZ9.CRXP1A7WOeoJeXxjNni43kdQwgnWNReilDMblYTn_I0' - -const supabase = createClient(SUPABASE_URL, ANON_KEY, { - realtime: { heartbeatIntervalMs: 500 }, -}) - -test('should subscribe to realtime channel', async () => { - await supabase.auth.signOut() - const email = `bun-test-${Date.now()}@example.com` - const password = 'password123' - await supabase.auth.signUp({ email, password }) - await supabase.realtime.setAuth() - - const channelName = `bun-channel-${crypto.randomUUID()}` - const config = { broadcast: { self: true }, private: true } - const channel = supabase.channel(channelName, { config }) - - let subscribed = false - let attempts = 0 - - channel.subscribe((status) => { - if (status === 'SUBSCRIBED') { - subscribed = true - } - }) - - // Wait for subscription - while (!subscribed) { - if (attempts > 100) throw new Error('Timeout waiting for subscription') - await new Promise((resolve) => setTimeout(resolve, 100)) - attempts++ - } - - expect(subscribed).toBe(true) - expect(supabase.realtime.getChannels().length).toBe(1) - - // Cleanup - await supabase.removeAllChannels() -}, 10000) - -test('should sign up a user', async () => { - await supabase.auth.signOut() - const email = `bun-auth-${Date.now()}@example.com` - const password = 'password123' - - const { data, error } = await supabase.auth.signUp({ - email, - password, - }) - - expect(error).toBeNull() - expect(data.user).toBeDefined() - expect(data.user!.email).toBe(email) -}) - -test('should sign in and out successfully', async () => { - await supabase.auth.signOut() - const email = `bun-signin-${Date.now()}@example.com` - const password = 'password123' - - await supabase.auth.signUp({ email, password }) - - const { data, error } = await supabase.auth.signInWithPassword({ - email, - password, - }) - - expect(error).toBeNull() - expect(data.user).toBeDefined() - expect(data.user!.email).toBe(email) - - const { error: signOutError } = await supabase.auth.signOut() - - expect(signOutError).toBeNull() -}) - -test('should get current user', async () => { - await supabase.auth.signOut() - const email = `bun-getuser-${Date.now()}@example.com` - const password = 'password123' - - await supabase.auth.signUp({ email, password }) - await supabase.auth.signInWithPassword({ email, password }) - - const { data, error } = await supabase.auth.getUser() - - expect(error).toBeNull() - expect(data.user).toBeDefined() - expect(data.user!.email).toBe(email) -}) - -test('should handle invalid credentials', async () => { - await supabase.auth.signOut() - const email = `bun-invalid-${Date.now()}@example.com` - const password = 'password123' - - await supabase.auth.signUp({ email, password }) - - const { data, error } = await supabase.auth.signInWithPassword({ - email, - password: 'wrongpassword', - }) - - expect(error).not.toBeNull() - expect(data.user).toBeNull() -}) - -test('should upload and list file in bucket', async () => { - const bucket = 'test-bucket' - const filePath = 'test-file.txt' - const fileContent = new Blob(['Hello, Supabase Storage!'], { type: 'text/plain' }) - - // use service_role key for bypass RLS - const SERVICE_ROLE_KEY = - process.env.SUPABASE_SERVICE_ROLE_KEY || - 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6InNlcnZpY2Vfcm9sZSIsImV4cCI6MTk4MzgxMjk5Nn0.EGIM96RAZx35lJzdJsyH-qQwv8Hdp7fsn3W0YpN81IU' - const supabaseWithServiceRole = createClient(SUPABASE_URL, SERVICE_ROLE_KEY, { - realtime: { heartbeatIntervalMs: 500 }, - }) - - // upload - const { data: uploadData, error: uploadError } = await supabaseWithServiceRole.storage - .from(bucket) - .upload(filePath, fileContent, { upsert: true }) - expect(uploadError).toBeNull() - expect(uploadData).toBeDefined() - - // list - const { data: listData, error: listError } = await supabaseWithServiceRole.storage - .from(bucket) - .list() - expect(listError).toBeNull() - expect(Array.isArray(listData)).toBe(true) - if (!listData) throw new Error('listData is null') - const fileNames = listData.map((f: any) => f.name) - expect(fileNames).toContain('test-file.txt') - - // delete file - const { error: deleteError } = await supabaseWithServiceRole.storage - .from(bucket) - .remove([filePath]) - expect(deleteError).toBeNull() -}) diff --git a/test/integration/bun/package.json b/test/integration/bun/package.json deleted file mode 100644 index 03a2714a..00000000 --- a/test/integration/bun/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "test-bun", - "private": true, - "scripts": { - "test": "bun test integration.test.ts", - "test:watch": "bun test --watch integration.test.ts" - }, - "dependencies": { - "@supabase/supabase-js": "file:supabase-supabase-js-0.0.0-automated.tgz" - }, - "devDependencies": { - "bun-types": "latest" - } -} diff --git a/test/integration/expo/.gitignore b/test/integration/expo/.gitignore deleted file mode 100644 index 7c016144..00000000 --- a/test/integration/expo/.gitignore +++ /dev/null @@ -1,41 +0,0 @@ -# Learn more https://docs.github.com/en/get-started/getting-started-with-git/ignoring-files - -# dependencies -node_modules/ - -# Expo -.expo/ -dist/ -web-build/ -expo-env.d.ts - -# Native -.kotlin/ -*.orig.* -*.jks -*.p8 -*.p12 -*.key -*.mobileprovision - -# Metro -.metro-health-check* - -# debug -npm-debug.* -yarn-debug.* -yarn-error.* - -# macOS -.DS_Store -*.pem - -# local env files -.env*.local - -# typescript -*.tsbuildinfo - -app-example - -package-lock.json \ No newline at end of file diff --git a/test/integration/expo/.vscode/settings.json b/test/integration/expo/.vscode/settings.json deleted file mode 100644 index e2798e42..00000000 --- a/test/integration/expo/.vscode/settings.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "editor.codeActionsOnSave": { - "source.fixAll": "explicit", - "source.organizeImports": "explicit", - "source.sortMembers": "explicit" - } -} diff --git a/test/integration/expo/README.md b/test/integration/expo/README.md deleted file mode 100644 index 48dd63ff..00000000 --- a/test/integration/expo/README.md +++ /dev/null @@ -1,50 +0,0 @@ -# Welcome to your Expo app 👋 - -This is an [Expo](https://expo.dev) project created with [`create-expo-app`](https://www.npmjs.com/package/create-expo-app). - -## Get started - -1. Install dependencies - - ```bash - npm install - ``` - -2. Start the app - - ```bash - npx expo start - ``` - -In the output, you'll find options to open the app in a - -- [development build](https://docs.expo.dev/develop/development-builds/introduction/) -- [Android emulator](https://docs.expo.dev/workflow/android-studio-emulator/) -- [iOS simulator](https://docs.expo.dev/workflow/ios-simulator/) -- [Expo Go](https://expo.dev/go), a limited sandbox for trying out app development with Expo - -You can start developing by editing the files inside the **app** directory. This project uses [file-based routing](https://docs.expo.dev/router/introduction). - -## Get a fresh project - -When you're ready, run: - -```bash -npm run reset-project -``` - -This command will move the starter code to the **app-example** directory and create a blank **app** directory where you can start developing. - -## Learn more - -To learn more about developing your project with Expo, look at the following resources: - -- [Expo documentation](https://docs.expo.dev/): Learn fundamentals, or go into advanced topics with our [guides](https://docs.expo.dev/guides). -- [Learn Expo tutorial](https://docs.expo.dev/tutorial/introduction/): Follow a step-by-step tutorial where you'll create a project that runs on Android, iOS, and the web. - -## Join the community - -Join our community of developers creating universal apps. - -- [Expo on GitHub](https://github.com/expo/expo): View our open source platform and contribute. -- [Discord community](https://chat.expo.dev): Chat with Expo users and ask questions. diff --git a/test/integration/expo/__tests__/Index.test.tsx b/test/integration/expo/__tests__/Index.test.tsx deleted file mode 100644 index df4979ad..00000000 --- a/test/integration/expo/__tests__/Index.test.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import { cleanup, render, waitFor } from '@testing-library/react-native' -import Index from '../app/index.tsx' - -describe('Index', () => { - afterEach(() => { - cleanup() - }) - - it('should display SUBSCRIBED status when realtime connection is established', async () => { - const { getByTestId, unmount } = render() - - // Initially, the text should be empty - expect(getByTestId('realtime_status')).toHaveTextContent('') - - // Wait for the subscription status to be updated - await waitFor( - () => { - const status = getByTestId('realtime_status').props.children - expect(status).toBe('SUBSCRIBED') - }, - { - timeout: 30000, // 30 seconds timeout for waitFor - interval: 1000, // Check every second - onTimeout: (error) => { - const currentStatus = getByTestId('realtime_status').props.children - throw new Error( - `Timeout waiting for SUBSCRIBED status. Current status: ${currentStatus}. ${error.message}` - ) - }, - } - ) - - // Unmount the component to trigger cleanup. - unmount() - }, 35000) // 35 seconds timeout for the entire test -}) diff --git a/test/integration/expo/app.json b/test/integration/expo/app.json deleted file mode 100644 index 378aebc6..00000000 --- a/test/integration/expo/app.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "expo": { - "name": "expo-app", - "slug": "expo-app", - "version": "1.0.0", - "orientation": "portrait", - "icon": "./assets/images/icon.png", - "scheme": "expoapp", - "userInterfaceStyle": "automatic", - "newArchEnabled": true, - "ios": { - "supportsTablet": true - }, - "android": { - "adaptiveIcon": { - "foregroundImage": "./assets/images/adaptive-icon.png", - "backgroundColor": "#ffffff" - }, - "edgeToEdgeEnabled": true - }, - "web": { - "bundler": "metro", - "output": "static", - "favicon": "./assets/images/favicon.png" - }, - "plugins": [ - "expo-router", - [ - "expo-splash-screen", - { - "image": "./assets/images/splash-icon.png", - "imageWidth": 200, - "resizeMode": "contain", - "backgroundColor": "#ffffff" - } - ] - ], - "experiments": { - "typedRoutes": true - } - } -} diff --git a/test/integration/expo/app/_layout.tsx b/test/integration/expo/app/_layout.tsx deleted file mode 100644 index ced57ee6..00000000 --- a/test/integration/expo/app/_layout.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import { Stack } from 'expo-router' - -export default function RootLayout() { - return -} diff --git a/test/integration/expo/app/index.tsx b/test/integration/expo/app/index.tsx deleted file mode 100644 index 93038543..00000000 --- a/test/integration/expo/app/index.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import { Text, View } from 'react-native' -import { useState, useEffect } from 'react' -import { createClient } from '@supabase/supabase-js' - -const SUPABASE_URL = 'http://127.0.0.1:54321' -const TEST_ANON_KEY = - 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24iLCJleHAiOjE5ODM4MTI5OTZ9.CRXP1A7WOeoJeXxjNni43kdQwgnWNReilDMblYTn_I0' - -const supabase = createClient(SUPABASE_URL, TEST_ANON_KEY) - -export default function Index() { - const [realtimeStatus, setRealtimeStatus] = useState(null) - const channel = supabase.channel('realtime:public:todos') - - useEffect(() => { - if (channel.state === 'closed') { - channel.subscribe((status) => { - if (status === 'SUBSCRIBED') setRealtimeStatus(status) - }) - } - - return () => { - channel.unsubscribe() - supabase.realtime.disconnect() - } - }, []) - - return ( - - {realtimeStatus || ''} - - ) -} diff --git a/test/integration/expo/assets/fonts/SpaceMono-Regular.ttf b/test/integration/expo/assets/fonts/SpaceMono-Regular.ttf deleted file mode 100755 index 28d7ff71..00000000 Binary files a/test/integration/expo/assets/fonts/SpaceMono-Regular.ttf and /dev/null differ diff --git a/test/integration/expo/assets/images/adaptive-icon.png b/test/integration/expo/assets/images/adaptive-icon.png deleted file mode 100644 index 03d6f6b6..00000000 Binary files a/test/integration/expo/assets/images/adaptive-icon.png and /dev/null differ diff --git a/test/integration/expo/assets/images/favicon.png b/test/integration/expo/assets/images/favicon.png deleted file mode 100644 index e75f697b..00000000 Binary files a/test/integration/expo/assets/images/favicon.png and /dev/null differ diff --git a/test/integration/expo/assets/images/icon.png b/test/integration/expo/assets/images/icon.png deleted file mode 100644 index a0b1526f..00000000 Binary files a/test/integration/expo/assets/images/icon.png and /dev/null differ diff --git a/test/integration/expo/assets/images/partial-react-logo.png b/test/integration/expo/assets/images/partial-react-logo.png deleted file mode 100644 index 66fd9570..00000000 Binary files a/test/integration/expo/assets/images/partial-react-logo.png and /dev/null differ diff --git a/test/integration/expo/assets/images/react-logo.png b/test/integration/expo/assets/images/react-logo.png deleted file mode 100644 index 9d72a9ff..00000000 Binary files a/test/integration/expo/assets/images/react-logo.png and /dev/null differ diff --git a/test/integration/expo/assets/images/react-logo@2x.png b/test/integration/expo/assets/images/react-logo@2x.png deleted file mode 100644 index 2229b130..00000000 Binary files a/test/integration/expo/assets/images/react-logo@2x.png and /dev/null differ diff --git a/test/integration/expo/assets/images/react-logo@3x.png b/test/integration/expo/assets/images/react-logo@3x.png deleted file mode 100644 index a99b2032..00000000 Binary files a/test/integration/expo/assets/images/react-logo@3x.png and /dev/null differ diff --git a/test/integration/expo/assets/images/splash-icon.png b/test/integration/expo/assets/images/splash-icon.png deleted file mode 100644 index 03d6f6b6..00000000 Binary files a/test/integration/expo/assets/images/splash-icon.png and /dev/null differ diff --git a/test/integration/expo/eslint.config.js b/test/integration/expo/eslint.config.js deleted file mode 100644 index ea589baa..00000000 --- a/test/integration/expo/eslint.config.js +++ /dev/null @@ -1,10 +0,0 @@ -// https://docs.expo.dev/guides/using-eslint/ -const { defineConfig } = require('eslint/config') -const expoConfig = require('eslint-config-expo/flat') - -module.exports = defineConfig([ - expoConfig, - { - ignores: ['dist/*'], - }, -]) diff --git a/test/integration/expo/jest.setup.js b/test/integration/expo/jest.setup.js deleted file mode 100644 index b387583d..00000000 --- a/test/integration/expo/jest.setup.js +++ /dev/null @@ -1 +0,0 @@ -global.WebSocket = require('ws') diff --git a/test/integration/expo/package.json b/test/integration/expo/package.json deleted file mode 100644 index 9c76dad8..00000000 --- a/test/integration/expo/package.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "name": "expo-app", - "main": "expo-router/entry", - "version": "1.0.0", - "scripts": { - "start": "expo start", - "reset-project": "node ./scripts/reset-project.js", - "android": "expo start --android", - "ios": "expo start --ios", - "web": "expo start --web", - "lint": "expo lint", - "test": "jest --runInBand --detectOpenHandles" - }, - "dependencies": { - "@expo/vector-icons": "^14.1.0", - "@react-navigation/bottom-tabs": "^7.3.10", - "@react-navigation/elements": "^2.3.8", - "@react-navigation/native": "^7.1.6", - "@supabase/supabase-js": "file:supabase-supabase-js-0.0.0-automated.tgz", - "expo": "~53.0.9", - "expo-blur": "~14.1.4", - "expo-constants": "~17.1.6", - "expo-font": "~13.3.1", - "expo-haptics": "~14.1.4", - "expo-image": "~2.1.7", - "expo-linking": "~7.1.5", - "expo-router": "~5.0.6", - "expo-splash-screen": "~0.30.8", - "expo-status-bar": "~2.2.3", - "expo-symbols": "~0.4.4", - "expo-system-ui": "~5.0.7", - "expo-web-browser": "~14.1.6", - "react": "^19.0.0", - "react-dom": "19.1.0", - "react-native": "0.79.2", - "react-native-gesture-handler": "~2.24.0", - "react-native-reanimated": "~3.17.4", - "react-native-safe-area-context": "5.4.0", - "react-native-screens": "~4.10.0", - "react-native-web": "~0.20.0", - "react-native-webview": "13.13.5" - }, - "devDependencies": { - "@babel/core": "^7.25.2", - "@testing-library/react-native": "^13.2.0", - "@types/jest": "^29.5.14", - "@types/react": "~19.1.0", - "eslint": "^9.25.0", - "eslint-config-expo": "~9.2.0", - "jest": "~29.7.0", - "jest-expo": "~53.0.5", - "typescript": "~5.8.3", - "ws": "^8.18.2" - }, - "private": true, - "jest": { - "preset": "jest-expo", - "setupFiles": [ - "./jest.setup.js" - ], - "transformIgnorePatterns": [ - "node_modules/(?!(isows|@supabase|@supabase/realtime-js|@react-native|react-native|expo-modules-core|expo)/)" - ], - "moduleNameMapper": { - "^(\\.{1,2}/.*)\\.js$": "$1" - } - } -} diff --git a/test/integration/expo/tsconfig.json b/test/integration/expo/tsconfig.json deleted file mode 100644 index ce27fee3..00000000 --- a/test/integration/expo/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "expo/tsconfig.base", - "compilerOptions": { - "strict": true, - "paths": { - "@/*": ["./*"] - } - }, - "include": ["**/*.ts", "**/*.tsx", ".expo/types/**/*.ts", "expo-env.d.ts"] -} diff --git a/test/integration/next/.env.example b/test/integration/next/.env.example deleted file mode 100644 index 69370319..00000000 --- a/test/integration/next/.env.example +++ /dev/null @@ -1,4 +0,0 @@ -# Update these with your Supabase details from your project settings > API -# https://app.supabase.com/project/_/settings/api -NEXT_PUBLIC_SUPABASE_URL=your-project-url -NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key diff --git a/test/integration/next/.gitignore b/test/integration/next/.gitignore deleted file mode 100644 index f0c0219c..00000000 --- a/test/integration/next/.gitignore +++ /dev/null @@ -1,47 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -/node_modules -/.pnp -.pnp.* -.yarn/* -!.yarn/patches -!.yarn/plugins -!.yarn/releases -!.yarn/versions - -# testing -/coverage - -# next.js -/.next/ -/out/ - -# production -/build - -# misc -.DS_Store -*.pem - -# debug -npm-debug.log* -yarn-debug.log* -yarn-error.log* -.pnpm-debug.log* - -# env files (can opt-in for committing if needed) -.env*.local -.env - -# vercel -.vercel - -# typescript -*.tsbuildinfo -next-env.d.ts - -# playwright -playwright-report -test-results -package-lock.json \ No newline at end of file diff --git a/test/integration/next/README.md b/test/integration/next/README.md deleted file mode 100644 index 70027348..00000000 --- a/test/integration/next/README.md +++ /dev/null @@ -1,105 +0,0 @@ - - Next.js and Supabase Starter Kit - the fastest way to build apps with Next.js and Supabase -

Next.js and Supabase Starter Kit

-
- -

- The fastest way to build apps with Next.js and Supabase -

- -

- Features · - Demo · - Deploy to Vercel · - Clone and run locally · - Feedback and issues - More Examples -

-
- -## Features - -- Works across the entire [Next.js](https://nextjs.org) stack - - App Router - - Pages Router - - Middleware - - Client - - Server - - It just works! -- supabase-ssr. A package to configure Supabase Auth to use cookies -- Password-based authentication block installed via the [Supabase UI Library](https://supabase.com/ui/docs/nextjs/password-based-auth) -- Styling with [Tailwind CSS](https://tailwindcss.com) -- Components with [shadcn/ui](https://ui.shadcn.com/) -- Optional deployment with [Supabase Vercel Integration and Vercel deploy](#deploy-your-own) - - Environment variables automatically assigned to Vercel project - -## Demo - -You can view a fully working demo at [demo-nextjs-with-supabase.vercel.app](https://demo-nextjs-with-supabase.vercel.app/). - -## Deploy to Vercel - -Vercel deployment will guide you through creating a Supabase account and project. - -After installation of the Supabase integration, all relevant environment variables will be assigned to the project so the deployment is fully functioning. - -[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fvercel%2Fnext.js%2Ftree%2Fcanary%2Fexamples%2Fwith-supabase&project-name=nextjs-with-supabase&repository-name=nextjs-with-supabase&demo-title=nextjs-with-supabase&demo-description=This+starter+configures+Supabase+Auth+to+use+cookies%2C+making+the+user%27s+session+available+throughout+the+entire+Next.js+app+-+Client+Components%2C+Server+Components%2C+Route+Handlers%2C+Server+Actions+and+Middleware.&demo-url=https%3A%2F%2Fdemo-nextjs-with-supabase.vercel.app%2F&external-id=https%3A%2F%2Fgithub.com%2Fvercel%2Fnext.js%2Ftree%2Fcanary%2Fexamples%2Fwith-supabase&demo-image=https%3A%2F%2Fdemo-nextjs-with-supabase.vercel.app%2Fopengraph-image.png) - -The above will also clone the Starter kit to your GitHub, you can clone that locally and develop locally. - -If you wish to just develop locally and not deploy to Vercel, [follow the steps below](#clone-and-run-locally). - -## Clone and run locally - -1. You'll first need a Supabase project which can be made [via the Supabase dashboard](https://database.new) - -2. Create a Next.js app using the Supabase Starter template npx command - - ```bash - npx create-next-app --example with-supabase with-supabase-app - ``` - - ```bash - yarn create next-app --example with-supabase with-supabase-app - ``` - - ```bash - pnpm create next-app --example with-supabase with-supabase-app - ``` - -3. Use `cd` to change into the app's directory - - ```bash - cd with-supabase-app - ``` - -4. Rename `.env.example` to `.env.local` and update the following: - - ``` - NEXT_PUBLIC_SUPABASE_URL=[INSERT SUPABASE PROJECT URL] - NEXT_PUBLIC_SUPABASE_ANON_KEY=[INSERT SUPABASE PROJECT API ANON KEY] - ``` - - Both `NEXT_PUBLIC_SUPABASE_URL` and `NEXT_PUBLIC_SUPABASE_ANON_KEY` can be found in [your Supabase project's API settings](https://supabase.com/dashboard/project/_?showConnect=true) - -5. You can now run the Next.js local development server: - - ```bash - npm run dev - ``` - - The starter kit should now be running on [localhost:3000](http://localhost:3000/). - -6. This template comes with the default shadcn/ui style initialized. If you instead want other ui.shadcn styles, delete `components.json` and [re-install shadcn/ui](https://ui.shadcn.com/docs/installation/next) - -> Check out [the docs for Local Development](https://supabase.com/docs/guides/getting-started/local-development) to also run Supabase locally. - -## Feedback and issues - -Please file feedback and issues over on the [Supabase GitHub org](https://github.com/supabase/supabase/issues/new/choose). - -## More Supabase examples - -- [Next.js Subscription Payments Starter](https://github.com/vercel/nextjs-subscription-payments) -- [Cookie-based Auth and the Next.js 13 App Router (free course)](https://youtube.com/playlist?list=PL5S4mPUpp4OtMhpnp93EFSo42iQ40XjbF) -- [Supabase Auth and the Next.js App Router](https://github.com/supabase/supabase/tree/master/examples/auth/nextjs) diff --git a/test/integration/next/app/layout.tsx b/test/integration/next/app/layout.tsx deleted file mode 100644 index 0cc4b8ea..00000000 --- a/test/integration/next/app/layout.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import type { Metadata } from 'next' - -export const metadata: Metadata = { - title: 'Supabase Integration Test', - description: 'Testing Supabase integration with Next.js', -} - -export default function RootLayout({ children }: { children: React.ReactNode }) { - return ( - - {children} - - ) -} diff --git a/test/integration/next/app/page.tsx b/test/integration/next/app/page.tsx deleted file mode 100644 index e5a23113..00000000 --- a/test/integration/next/app/page.tsx +++ /dev/null @@ -1,20 +0,0 @@ -'use client' - -import { useEffect, useState } from 'react' -import { createClient } from '@/lib/supabase/client' - -export default function Home() { - const supabase = createClient() - const [realtimeStatus, setRealtimeStatus] = useState(null) - const channel = supabase.channel('realtime:public:test') - - useEffect(() => { - channel.subscribe((status) => setRealtimeStatus(status)) - - return () => { - channel.unsubscribe() - } - }, []) - - return
{realtimeStatus}
-} diff --git a/test/integration/next/components.json b/test/integration/next/components.json deleted file mode 100644 index 4ee62ee1..00000000 --- a/test/integration/next/components.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "$schema": "https://ui.shadcn.com/schema.json", - "style": "new-york", - "rsc": true, - "tsx": true, - "tailwind": { - "config": "", - "css": "app/globals.css", - "baseColor": "neutral", - "cssVariables": true, - "prefix": "" - }, - "aliases": { - "components": "@/components", - "utils": "@/lib/utils", - "ui": "@/components/ui", - "lib": "@/lib", - "hooks": "@/hooks" - }, - "iconLibrary": "lucide" -} diff --git a/test/integration/next/eslint.config.mjs b/test/integration/next/eslint.config.mjs deleted file mode 100644 index 46f02aef..00000000 --- a/test/integration/next/eslint.config.mjs +++ /dev/null @@ -1,14 +0,0 @@ -import { dirname } from 'path' -import { fileURLToPath } from 'url' -import { FlatCompat } from '@eslint/eslintrc' - -const __filename = fileURLToPath(import.meta.url) -const __dirname = dirname(__filename) - -const compat = new FlatCompat({ - baseDirectory: __dirname, -}) - -const eslintConfig = [...compat.extends('next/core-web-vitals', 'next/typescript')] - -export default eslintConfig diff --git a/test/integration/next/lib/supabase/client.ts b/test/integration/next/lib/supabase/client.ts deleted file mode 100644 index c3c0fd2a..00000000 --- a/test/integration/next/lib/supabase/client.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { createBrowserClient } from '@supabase/ssr' - -export function createClient() { - return createBrowserClient( - process.env.NEXT_PUBLIC_SUPABASE_URL || 'http://127.0.0.1:54321', - process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY || - 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24iLCJleHAiOjE5ODM4MTI5OTZ9.CRXP1A7WOeoJeXxjNni43kdQwgnWNReilDMblYTn_I0' - ) -} diff --git a/test/integration/next/lib/supabase/middleware.ts b/test/integration/next/lib/supabase/middleware.ts deleted file mode 100644 index bed39d2a..00000000 --- a/test/integration/next/lib/supabase/middleware.ts +++ /dev/null @@ -1,72 +0,0 @@ -import { createServerClient } from '@supabase/ssr' -import { NextResponse, type NextRequest } from 'next/server' -import { hasEnvVars } from '../utils' - -export async function updateSession(request: NextRequest) { - let supabaseResponse = NextResponse.next({ - request, - }) - - // If the env vars are not set, skip middleware check. You can remove this once you setup the project. - if (!hasEnvVars) { - return supabaseResponse - } - - const supabase = createServerClient( - process.env.NEXT_PUBLIC_SUPABASE_URL!, - process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!, - { - cookies: { - getAll() { - return request.cookies.getAll() - }, - setAll(cookiesToSet) { - cookiesToSet.forEach(({ name, value }) => request.cookies.set(name, value)) - supabaseResponse = NextResponse.next({ - request, - }) - cookiesToSet.forEach(({ name, value, options }) => - supabaseResponse.cookies.set(name, value, options) - ) - }, - }, - } - ) - - // Do not run code between createServerClient and - // supabase.auth.getUser(). A simple mistake could make it very hard to debug - // issues with users being randomly logged out. - - // IMPORTANT: DO NOT REMOVE auth.getUser() - - const { - data: { user }, - } = await supabase.auth.getUser() - - if ( - request.nextUrl.pathname !== '/' && - !user && - !request.nextUrl.pathname.startsWith('/login') && - !request.nextUrl.pathname.startsWith('/auth') - ) { - // no user, potentially respond by redirecting the user to the login page - const url = request.nextUrl.clone() - url.pathname = '/auth/login' - return NextResponse.redirect(url) - } - - // IMPORTANT: You *must* return the supabaseResponse object as it is. - // If you're creating a new response object with NextResponse.next() make sure to: - // 1. Pass the request in it, like so: - // const myNewResponse = NextResponse.next({ request }) - // 2. Copy over the cookies, like so: - // myNewResponse.cookies.setAll(supabaseResponse.cookies.getAll()) - // 3. Change the myNewResponse object to fit your needs, but avoid changing - // the cookies! - // 4. Finally: - // return myNewResponse - // If this is not done, you may be causing the browser and server to go out - // of sync and terminate the user's session prematurely! - - return supabaseResponse -} diff --git a/test/integration/next/lib/supabase/server.ts b/test/integration/next/lib/supabase/server.ts deleted file mode 100644 index 40633b0c..00000000 --- a/test/integration/next/lib/supabase/server.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { createServerClient } from '@supabase/ssr' -import { cookies } from 'next/headers' - -export async function createClient() { - const cookieStore = await cookies() - - return createServerClient( - process.env.NEXT_PUBLIC_SUPABASE_URL!, - process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!, - { - cookies: { - getAll() { - return cookieStore.getAll() - }, - setAll(cookiesToSet) { - try { - cookiesToSet.forEach(({ name, value, options }) => - cookieStore.set(name, value, options) - ) - } catch { - // The `setAll` method was called from a Server Component. - // This can be ignored if you have middleware refreshing - // user sessions. - } - }, - }, - } - ) -} diff --git a/test/integration/next/lib/utils.ts b/test/integration/next/lib/utils.ts deleted file mode 100644 index 8e97e998..00000000 --- a/test/integration/next/lib/utils.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { clsx, type ClassValue } from 'clsx' -import { twMerge } from 'tailwind-merge' - -export function cn(...inputs: ClassValue[]) { - return twMerge(clsx(inputs)) -} - -// This check can be removed, it is just for tutorial purposes -export const hasEnvVars = - process.env.NEXT_PUBLIC_SUPABASE_URL && process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY diff --git a/test/integration/next/middleware.ts b/test/integration/next/middleware.ts deleted file mode 100644 index de79b4c5..00000000 --- a/test/integration/next/middleware.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { updateSession } from '@/lib/supabase/middleware' -import { type NextRequest } from 'next/server' - -export async function middleware(request: NextRequest) { - return await updateSession(request) -} - -export const config = { - matcher: [ - /* - * Match all request paths except: - * - _next/static (static files) - * - _next/image (image optimization files) - * - favicon.ico (favicon file) - * - images - .svg, .png, .jpg, .jpeg, .gif, .webp - * Feel free to modify this pattern to include more paths. - */ - '/((?!_next/static|_next/image|favicon.ico|.*\\.(?:svg|png|jpg|jpeg|gif|webp)$).*)', - ], -} diff --git a/test/integration/next/next.config.ts b/test/integration/next/next.config.ts deleted file mode 100644 index 73290639..00000000 --- a/test/integration/next/next.config.ts +++ /dev/null @@ -1,7 +0,0 @@ -import type { NextConfig } from 'next' - -const nextConfig: NextConfig = { - /* config options here */ -} - -export default nextConfig diff --git a/test/integration/next/package.json b/test/integration/next/package.json deleted file mode 100644 index 374cbda1..00000000 --- a/test/integration/next/package.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "next dev --turbopack", - "build": "next build", - "start": "next start", - "lint": "next lint", - "test": "playwright test", - "test:ui": "playwright test --ui", - "test:debug": "playwright test --debug", - "test:types": "npx tsd --files tests/types/*.test-d.ts" - }, - "dependencies": { - "@radix-ui/react-checkbox": "^1.3.1", - "@radix-ui/react-dropdown-menu": "^2.1.14", - "@radix-ui/react-label": "^2.1.6", - "@radix-ui/react-slot": "^1.2.2", - "@supabase/ssr": "latest", - "@supabase/supabase-js": "file:supabase-supabase-js-0.0.0-automated.tgz", - "class-variance-authority": "^0.7.1", - "clsx": "^2.1.1", - "lucide-react": "^0.511.0", - "next": "latest", - "next-themes": "^0.4.6", - "react": "^19.0.0", - "react-dom": "^19.0.0", - "tailwind-merge": "^3.3.0" - }, - "devDependencies": { - "@eslint/eslintrc": "^3", - "@playwright/test": "^1.53.0", - "@types/node": "^20", - "@types/react": "^19", - "@types/react-dom": "^19", - "autoprefixer": "^10.4.20", - "eslint": "^9", - "eslint-config-next": "15.3.1", - "postcss": "^8", - "tailwindcss": "^3.4.1", - "tailwindcss-animate": "^1.0.7", - "tsd": "^0.33.0", - "typescript": "^5" - } -} diff --git a/test/integration/next/playwright.config.ts b/test/integration/next/playwright.config.ts deleted file mode 100644 index 001172cf..00000000 --- a/test/integration/next/playwright.config.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { defineConfig, devices } from '@playwright/test' - -export default defineConfig({ - testDir: './tests', - fullyParallel: true, - forbidOnly: !!process.env.CI, - retries: 0, - workers: process.env.CI ? 1 : undefined, - timeout: 20000, - reporter: 'html', - use: { - baseURL: 'http://localhost:3000', - trace: 'retain-on-failure', - screenshot: 'only-on-failure', - }, - projects: [ - { - name: 'chromium', - use: { ...devices['Desktop Chrome'] }, - }, - { - name: 'firefox', - use: { ...devices['Desktop Firefox'] }, - }, - { - name: 'webkit', - use: { ...devices['Desktop Safari'] }, - }, - ], - webServer: { - command: 'npm run dev', - url: 'http://localhost:3000', - reuseExistingServer: !process.env.CI, - }, -}) diff --git a/test/integration/next/postcss.config.mjs b/test/integration/next/postcss.config.mjs deleted file mode 100644 index d0c615b3..00000000 --- a/test/integration/next/postcss.config.mjs +++ /dev/null @@ -1,9 +0,0 @@ -/** @type {import('postcss-load-config').Config} */ -const config = { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, -} - -export default config diff --git a/test/integration/next/tailwind.config.ts b/test/integration/next/tailwind.config.ts deleted file mode 100644 index abd2d09f..00000000 --- a/test/integration/next/tailwind.config.ts +++ /dev/null @@ -1,63 +0,0 @@ -import type { Config } from 'tailwindcss' - -export default { - darkMode: ['class'], - content: [ - './pages/**/*.{js,ts,jsx,tsx,mdx}', - './components/**/*.{js,ts,jsx,tsx,mdx}', - './app/**/*.{js,ts,jsx,tsx,mdx}', - './src/**/*.{js,ts,jsx,tsx,mdx}', - ], - theme: { - extend: { - colors: { - background: 'hsl(var(--background))', - foreground: 'hsl(var(--foreground))', - card: { - DEFAULT: 'hsl(var(--card))', - foreground: 'hsl(var(--card-foreground))', - }, - popover: { - DEFAULT: 'hsl(var(--popover))', - foreground: 'hsl(var(--popover-foreground))', - }, - primary: { - DEFAULT: 'hsl(var(--primary))', - foreground: 'hsl(var(--primary-foreground))', - }, - secondary: { - DEFAULT: 'hsl(var(--secondary))', - foreground: 'hsl(var(--secondary-foreground))', - }, - muted: { - DEFAULT: 'hsl(var(--muted))', - foreground: 'hsl(var(--muted-foreground))', - }, - accent: { - DEFAULT: 'hsl(var(--accent))', - foreground: 'hsl(var(--accent-foreground))', - }, - destructive: { - DEFAULT: 'hsl(var(--destructive))', - foreground: 'hsl(var(--destructive-foreground))', - }, - border: 'hsl(var(--border))', - input: 'hsl(var(--input))', - ring: 'hsl(var(--ring))', - chart: { - '1': 'hsl(var(--chart-1))', - '2': 'hsl(var(--chart-2))', - '3': 'hsl(var(--chart-3))', - '4': 'hsl(var(--chart-4))', - '5': 'hsl(var(--chart-5))', - }, - }, - borderRadius: { - lg: 'var(--radius)', - md: 'calc(var(--radius) - 2px)', - sm: 'calc(var(--radius) - 4px)', - }, - }, - }, - plugins: [require('tailwindcss-animate')], -} satisfies Config diff --git a/test/integration/next/tests/home.spec.ts b/test/integration/next/tests/home.spec.ts deleted file mode 100644 index 0703edf7..00000000 --- a/test/integration/next/tests/home.spec.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { test, expect } from '@playwright/test' - -test.describe('Home Page', () => { - test('should subscribe to realtime channel', async ({ page }) => { - await page.goto('/') - await expect(page.getByTestId('realtime_status')).toHaveText('SUBSCRIBED') - }) -}) diff --git a/test/integration/next/tests/types/types.test-d.ts b/test/integration/next/tests/types/types.test-d.ts deleted file mode 100644 index 830d4f59..00000000 --- a/test/integration/next/tests/types/types.test-d.ts +++ /dev/null @@ -1,180 +0,0 @@ -import { createServerClient, createBrowserClient } from '@supabase/ssr' -import { expectType } from 'tsd' - -// Copied from ts-expect -// https://github.com/TypeStrong/ts-expect/blob/master/src/index.ts#L23-L27 -export type TypeEqual = (() => T extends Target ? 1 : 2) extends < - T ->() => T extends Value ? 1 : 2 - ? true - : false - -type Database = { - public: { - Tables: { - shops: { - Row: { - address: string | null - id: number - shop_geom: unknown | null - } - Insert: { - address?: string | null - id: number - shop_geom?: unknown | null - } - Update: { - address?: string | null - id?: number - shop_geom?: unknown | null - } - Relationships: [] - } - } - Views: { - [_ in never]: never - } - Functions: { - [_ in never]: never - } - Enums: { - [_ in never]: never - } - CompositeTypes: { - [_ in never]: never - } - } -} - -{ - // createBrowserClient should return a typed client - const pg12Client = createBrowserClient('HTTP://localhost:3000', '') - const res12 = await pg12Client.from('shops').select('*') - expectType< - TypeEqual< - | { - address: string | null - id: number - shop_geom: unknown | null - }[] - | null, - typeof res12.data - > - >(true) -} - -{ - // createBrowserClient should infer everything to any without types provided - const pg12Client = createBrowserClient('HTTP://localhost:3000', '') - const res12 = await pg12Client.from('shops').select('address, id, relation(field)') - expectType< - TypeEqual< - | { - address: any - id: any - relation: { - field: any - }[] - }[] - | null, - typeof res12.data - > - >(true) -} - -{ - // createServerClient should return a typed client - const pg12Server = createServerClient('HTTP://localhost:3000', '') - const res12 = await pg12Server.from('shops').select('*') - expectType< - TypeEqual< - | { - address: string | null - id: number - shop_geom: unknown | null - }[] - | null, - typeof res12.data - > - >(true) -} - -{ - // createServerClient should infer everything to any without types provided - const pg12Server = createServerClient('HTTP://localhost:3000', '') - const res12 = await pg12Server.from('shops').select('address, id, relation(field)') - expectType< - TypeEqual< - | { - address: any - id: any - relation: { - field: any - }[] - }[] - | null, - typeof res12.data - > - >(true) -} -// Should be able to get a PostgrestVersion 13 client from __InternalSupabase -{ - type DatabaseWithInternals = { - __InternalSupabase: { - PostgrestVersion: '13' - } - public: { - Tables: { - shops: { - Row: { - address: string | null - id: number - shop_geom: unknown | null - } - Insert: { - address?: string | null - id: number - shop_geom?: unknown | null - } - Update: { - address?: string | null - id?: number - shop_geom?: unknown | null - } - Relationships: [] - } - } - Views: { - [_ in never]: never - } - Functions: { - [_ in never]: never - } - Enums: { - [_ in never]: never - } - CompositeTypes: { - [_ in never]: never - } - } - } - const pg13BrowserClient = createBrowserClient('HTTP://localhost:3000', '') - const pg13ServerClient = createServerClient('HTTP://localhost:3000', '', { - cookies: { getAll: () => [], setAll: () => {} }, - }) - const res13 = await pg13BrowserClient.from('shops').update({ id: 21 }).maxAffected(1) - expectType(null) - const res13Server = await pg13ServerClient.from('shops').update({ id: 21 }).maxAffected(1) - expectType(null) -} -{ - // Should default to PostgrestVersion 12 - const pg12BrowserClient = createBrowserClient('HTTP://localhost:3000', '') - const pg12ServerClient = createServerClient('HTTP://localhost:3000', '', { - cookies: { getAll: () => [], setAll: () => {} }, - }) - const res12 = await pg12BrowserClient.from('shops').update({ id: 21 }).maxAffected(1) - expectType('maxAffected method only available on postgrest 13+') - const res12Server = await pg12ServerClient.from('shops').update({ id: 21 }).maxAffected(1) - expectType('maxAffected method only available on postgrest 13+') -} diff --git a/test/integration/next/tsconfig.json b/test/integration/next/tsconfig.json deleted file mode 100644 index 32d8de30..00000000 --- a/test/integration/next/tsconfig.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "compilerOptions": { - "target": "ES2017", - "lib": ["dom", "dom.iterable", "esnext"], - "allowJs": true, - "skipLibCheck": true, - "strict": true, - "forceConsistentCasingInFileNames": true, - "noEmit": true, - "esModuleInterop": true, - "module": "esnext", - "moduleResolution": "bundler", - "resolveJsonModule": true, - "isolatedModules": true, - "jsx": "preserve", - "incremental": true, - "plugins": [ - { - "name": "next" - } - ], - "paths": { - "@/*": ["./*"] - } - }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], - "exclude": ["node_modules", "test/types/*.test-d.ts"] -} diff --git a/test/integration/node-browser/.gitignore b/test/integration/node-browser/.gitignore deleted file mode 100644 index 7904a59c..00000000 --- a/test/integration/node-browser/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -test-results -playwright-report -package-lock.json -supabase.js \ No newline at end of file diff --git a/test/integration/node-browser/index.html b/test/integration/node-browser/index.html deleted file mode 100644 index bae376d9..00000000 --- a/test/integration/node-browser/index.html +++ /dev/null @@ -1,113 +0,0 @@ - - - -

-    
-    
-  
-
diff --git a/test/integration/node-browser/package.json b/test/integration/node-browser/package.json
deleted file mode 100644
index f29e2f72..00000000
--- a/test/integration/node-browser/package.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-  "name": "websocket-playwright-tests",
-  "version": "1.0.0",
-  "description": "WebSocket browser tests using Playwright",
-  "scripts": {
-    "test": "playwright test",
-    "serve:node-browser": "serve . -p 8004"
-  },
-  "devDependencies": {
-    "@playwright/test": "^1.40.0",
-    "serve": "^14.2.1"
-  }
-}
diff --git a/test/integration/node-browser/playwright.config.ts b/test/integration/node-browser/playwright.config.ts
deleted file mode 100644
index 33223a5e..00000000
--- a/test/integration/node-browser/playwright.config.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-import { defineConfig, devices } from '@playwright/test'
-
-export default defineConfig({
-  testDir: './',
-  fullyParallel: true,
-  forbidOnly: !!process.env.CI,
-  retries: 0,
-  workers: process.env.CI ? 1 : undefined,
-  timeout: 20000,
-  reporter: 'html',
-  use: {
-    baseURL: 'http://localhost:8004',
-    trace: 'retain-on-failure',
-    screenshot: 'only-on-failure',
-  },
-  projects: [
-    {
-      name: 'chromium',
-      use: { ...devices['Desktop Chrome'] },
-    },
-    {
-      name: 'firefox',
-      use: { ...devices['Desktop Firefox'] },
-    },
-    {
-      name: 'webkit',
-      use: { ...devices['Desktop Safari'] },
-    },
-  ],
-  webServer: {
-    command: 'cp ../../../dist/umd/supabase.js . && npm run serve:node-browser',
-    url: 'http://localhost:8004',
-    reuseExistingServer: !process.env.CI,
-  },
-})
diff --git a/test/integration/node-browser/websocket.spec.ts b/test/integration/node-browser/websocket.spec.ts
deleted file mode 100644
index defd5cf6..00000000
--- a/test/integration/node-browser/websocket.spec.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import { test, expect } from '@playwright/test'
-
-test.describe('WebSocket Browser Tests', () => {
-  test('should test WebSocket transport', async ({ page }) => {
-    await page.goto('/')
-    await expect(page.locator('#log')).toBeVisible()
-    await page.waitForTimeout(5000)
-
-    const logContent = await page.locator('#log').textContent()
-    console.log('WebSocket test log content:', logContent)
-
-    expect(logContent).toContain('WebSocket constructor called')
-    //Try to check fix for https://github.com/supabase/realtime-js/issues/493
-    expect(logContent).not.toContain('WebSocket constructor called with 3 parameters')
-
-    // Handle channel errors gracefully - if there's an error, ensure recovery happened
-    if (logContent && logContent.includes('CHANNEL_ERROR')) {
-      expect(logContent).toContain('WebSocket subscribe callback called with: SUBSCRIBED')
-      console.log('Channel experienced initial error but recovered successfully')
-    } else {
-      // If no channel error, just verify successful subscription
-      expect(logContent).toContain('WebSocket subscribe callback called with: SUBSCRIBED')
-    }
-
-    expect(logContent).not.toContain('Global error')
-    expect(logContent).not.toContain('Unhandled promise rejection')
-  })
-})
diff --git a/test/types.ts b/test/types.ts
deleted file mode 100644
index a398bba8..00000000
--- a/test/types.ts
+++ /dev/null
@@ -1,238 +0,0 @@
-export type Json = string | number | boolean | null | { [key: string]: Json | undefined } | Json[]
-
-export interface Database {
-  personal: {
-    Tables: {
-      users: {
-        Row: {
-          age_range: unknown | null
-          data: Json | null
-          status: Database['public']['Enums']['user_status'] | null
-          username: string
-        }
-        Insert: {
-          age_range?: unknown | null
-          data?: Json | null
-          status?: Database['public']['Enums']['user_status'] | null
-          username: string
-        }
-        Update: {
-          age_range?: unknown | null
-          data?: Json | null
-          status?: Database['public']['Enums']['user_status'] | null
-          username?: string
-        }
-        Relationships: []
-      }
-    }
-    Views: {
-      [_ in never]: never
-    }
-    Functions: {
-      get_status: {
-        Args: {
-          name_param: string
-        }
-        Returns: Database['public']['Enums']['user_status']
-      }
-    }
-    Enums: {
-      user_status: 'ONLINE' | 'OFFLINE'
-    }
-    CompositeTypes: {
-      [_ in never]: never
-    }
-  }
-  public: {
-    Tables: {
-      channel_details: {
-        Row: {
-          details: string | null
-          id: number
-        }
-        Insert: {
-          details?: string | null
-          id: number
-        }
-        Update: {
-          details?: string | null
-          id?: number
-        }
-        Relationships: [
-          {
-            foreignKeyName: 'channel_details_id_fkey'
-            columns: ['id']
-            isOneToOne: true
-            referencedRelation: 'channels'
-            referencedColumns: ['id']
-          }
-        ]
-      }
-      channels: {
-        Row: {
-          data: Json | null
-          id: number
-          slug: string | null
-        }
-        Insert: {
-          data?: Json | null
-          id?: number
-          slug?: string | null
-        }
-        Update: {
-          data?: Json | null
-          id?: number
-          slug?: string | null
-        }
-        Relationships: []
-      }
-      messages: {
-        Row: {
-          channel_id: number
-          data: Json | null
-          id: number
-          message: string | null
-          username: string
-        }
-        Insert: {
-          channel_id: number
-          data?: Json | null
-          id?: number
-          message?: string | null
-          username: string
-        }
-        Update: {
-          channel_id?: number
-          data?: Json | null
-          id?: number
-          message?: string | null
-          username?: string
-        }
-        Relationships: [
-          {
-            foreignKeyName: 'messages_channel_id_fkey'
-            columns: ['channel_id']
-            referencedRelation: 'channels'
-            referencedColumns: ['id']
-          },
-          {
-            foreignKeyName: 'messages_username_fkey'
-            columns: ['username']
-            referencedRelation: 'users'
-            referencedColumns: ['username']
-          },
-          {
-            foreignKeyName: 'messages_username_fkey'
-            columns: ['username']
-            referencedRelation: 'non_updatable_view'
-            referencedColumns: ['username']
-          },
-          {
-            foreignKeyName: 'messages_username_fkey'
-            columns: ['username']
-            referencedRelation: 'updatable_view'
-            referencedColumns: ['username']
-          }
-        ]
-      }
-      shops: {
-        Row: {
-          address: string | null
-          id: number
-          shop_geom: unknown | null
-        }
-        Insert: {
-          address?: string | null
-          id: number
-          shop_geom?: unknown | null
-        }
-        Update: {
-          address?: string | null
-          id?: number
-          shop_geom?: unknown | null
-        }
-        Relationships: []
-      }
-      users: {
-        Row: {
-          age_range: unknown | null
-          catchphrase: unknown | null
-          data: Json | null
-          status: Database['public']['Enums']['user_status'] | null
-          username: string
-        }
-        Insert: {
-          age_range?: unknown | null
-          catchphrase?: unknown | null
-          data?: Json | null
-          status?: Database['public']['Enums']['user_status'] | null
-          username: string
-        }
-        Update: {
-          age_range?: unknown | null
-          catchphrase?: unknown | null
-          data?: Json | null
-          status?: Database['public']['Enums']['user_status'] | null
-          username?: string
-        }
-        Relationships: []
-      }
-    }
-    Views: {
-      non_updatable_view: {
-        Row: {
-          username: string | null
-        }
-        Relationships: []
-      }
-      updatable_view: {
-        Row: {
-          non_updatable_column: number | null
-          username: string | null
-        }
-        Insert: {
-          non_updatable_column?: never
-          username?: string | null
-        }
-        Update: {
-          non_updatable_column?: never
-          username?: string | null
-        }
-        Relationships: []
-      }
-    }
-    Functions: {
-      get_status: {
-        Args: {
-          name_param: string
-        }
-        Returns: Database['public']['Enums']['user_status']
-      }
-      get_username_and_status: {
-        Args: {
-          name_param: string
-        }
-        Returns: {
-          username: string
-          status: Database['public']['Enums']['user_status']
-        }[]
-      }
-      offline_user: {
-        Args: {
-          name_param: string
-        }
-        Returns: Database['public']['Enums']['user_status']
-      }
-      void_func: {
-        Args: Record
-        Returns: undefined
-      }
-    }
-    Enums: {
-      user_status: 'ONLINE' | 'OFFLINE'
-    }
-    CompositeTypes: {
-      [_ in never]: never
-    }
-  }
-}
diff --git a/test/types/index.test-d.ts b/test/types/index.test-d.ts
deleted file mode 100644
index a95d6c00..00000000
--- a/test/types/index.test-d.ts
+++ /dev/null
@@ -1,267 +0,0 @@
-import { expectError, expectType } from 'tsd'
-import { PostgrestSingleResponse, SupabaseClient, createClient } from '../../src/index'
-import { Database, Json } from '../types'
-
-const URL = 'http://localhost:3000'
-const KEY = 'some.fake.key'
-const supabase = createClient(URL, KEY)
-
-// table invalid type
-{
-  expectError(supabase.from(42))
-  expectError(supabase.from('some_table_that_does_not_exist'))
-}
-
-// `null` can't be used with `.eq()`
-{
-  supabase.from('users').select().eq('username', 'foo')
-  expectError(supabase.from('users').select().eq('username', null))
-
-  const nullableVar = 'foo' as string | null
-  expectError(supabase.from('users').select().eq('username', nullableVar))
-}
-
-// can override result type
-{
-  const { data, error } = await supabase
-    .from('users')
-    .select('*, messages(*)')
-    .returns<{ messages: { foo: 'bar' }[] }[]>()
-  if (error) {
-    throw new Error(error.message)
-  }
-  expectType<{ foo: 'bar' }[]>(data[0].messages)
-}
-{
-  const { data, error } = await supabase
-    .from('users')
-    .insert({ username: 'foo' })
-    .select('*, messages(*)')
-    .returns<{ messages: { foo: 'bar' }[] }[]>()
-  if (error) {
-    throw new Error(error.message)
-  }
-  expectType<{ foo: 'bar' }[]>(data[0].messages)
-}
-
-// cannot update non-updatable views
-{
-  expectError(supabase.from('updatable_view').update({ non_updatable_column: 0 }))
-}
-
-// cannot update non-updatable columns
-{
-  expectError(supabase.from('updatable_view').update({ non_updatable_column: 0 }))
-}
-
-// json accessor in select query
-{
-  const { data, error } = await supabase
-    .from('users')
-    .select('data->foo->bar, data->foo->>baz')
-    .single()
-  if (error) {
-    throw new Error(error.message)
-  }
-  // getting this w/o the cast, not sure why:
-  // Parameter type Json is declared too wide for argument type Json
-  expectType(data.bar as Json)
-  expectType(data.baz)
-}
-
-// rpc return type
-{
-  const { data, error } = await supabase.rpc('get_status')
-  if (error) {
-    throw new Error(error.message)
-  }
-  expectType<'ONLINE' | 'OFFLINE'>(data)
-}
-
-// many-to-one relationship
-{
-  const { data: message, error } = await supabase.from('messages').select('user:users(*)').single()
-  if (error) {
-    throw new Error(error.message)
-  }
-  expectType(message.user)
-}
-
-// one-to-many relationship
-{
-  const { data: user, error } = await supabase.from('users').select('messages(*)').single()
-  if (error) {
-    throw new Error(error.message)
-  }
-  expectType(user.messages)
-}
-
-// referencing missing column
-{
-  type SelectQueryError = { error: true } & Message
-
-  const res = await supabase.from('users').select('username, dat')
-  expectType<
-    PostgrestSingleResponse[]>
-  >(res)
-}
-
-// one-to-one relationship
-{
-  const { data: channels, error } = await supabase
-    .from('channels')
-    .select('channel_details(*)')
-    .single()
-  if (error) {
-    throw new Error(error.message)
-  }
-  expectType(
-    channels.channel_details
-  )
-}
-
-// throwOnError in chaining
-{
-  const { data: channels, error } = await supabase
-    .from('channels')
-    .select('channel_details(*)')
-    .throwOnError()
-  expectType(null)
-  expectType<
-    {
-      channel_details: {
-        details: string | null
-        id: number
-      } | null
-    }[]
-  >(channels)
-}
-
-// Test Postgrest13
-// should be able to declare specific PostgrestVersion
-{
-  // @ts-expect-error should raise error if provinding invalid version
-  createClient('HTTP://localhost:3000', KEY)
-}
-
-//  should be able to infer PostgrestVersion from Database __InternalSupabase
-{
-  type DatabaseWithInternals = {
-    __InternalSupabase: {
-      PostgrestVersion: '13'
-    }
-    public: {
-      Tables: {
-        shops: {
-          Row: {
-            address: string | null
-            id: number
-            shop_geom: unknown | null
-          }
-          Insert: {
-            address?: string | null
-            id: number
-            shop_geom?: unknown | null
-          }
-          Update: {
-            address?: string | null
-            id?: number
-            shop_geom?: unknown | null
-          }
-          Relationships: []
-        }
-      }
-      Views: {
-        [_ in never]: never
-      }
-      Functions: {
-        [_ in never]: never
-      }
-      Enums: {
-        [_ in never]: never
-      }
-      CompositeTypes: {
-        [_ in never]: never
-      }
-    }
-  }
-  // Note: The template argument properties (PostgrestVersion) will not be autocompleted
-  // due to a Typescript bug tracked here: https://github.com/microsoft/TypeScript/issues/56299
-  const pg13Client = createClient('HTTP://localhost:3000', KEY)
-  // @ts-expect-error should raise error if providing __InternalSupabase as schema name
-  createClient('HTTP://localhost:3000', KEY)
-  // @ts-expect-error should raise error if providing __InternalSupabase as schema name
-  new SupabaseClient('HTTP://localhost:3000', KEY)
-  const pg12Client = createClient('HTTP://localhost:3000', KEY)
-  const res13 = await pg13Client.from('shops').update({ id: 21 }).maxAffected(1)
-  const res12 = await pg12Client.from('shops').update({ id: 21 }).maxAffected(1)
-  const pg13ClientNew = new SupabaseClient('HTTP://localhost:3000', KEY)
-  const res13New = await pg13ClientNew.from('shops').update({ id: 21 }).maxAffected(1)
-  expectType(null)
-  expectType(null)
-  expectType('maxAffected method only available on postgrest 13+')
-  // Explicitly set PostgrestVersion should override the inferred __InternalSupabase schema version
-  const internal13Set12 = new SupabaseClient(
-    URL,
-    KEY
-  )
-  const resinternal13Set12 = await internal13Set12.from('shops').update({ id: 21 }).maxAffected(1)
-  // The explicitly set PostgrestVersion should override the inferred __InternalSupabase schema version
-  expectType('maxAffected method only available on postgrest 13+')
-}
-
-// createClient with custom schema
-{
-  const pg12CustomSchemaClient = createClient(URL, KEY, {
-    db: { schema: 'personal' },
-  })
-  const pg12CustomSchemaNewClient = new SupabaseClient(URL, KEY, {
-    db: { schema: 'personal' },
-  })
-  const res12new = await pg12CustomSchemaNewClient
-    .from('users')
-    .update({ username: 'test' })
-    .maxAffected(1)
-  const res12 = await pg12CustomSchemaClient
-    .from('users')
-    .update({ username: 'test' })
-    .maxAffected(1)
-  expectType('maxAffected method only available on postgrest 13+')
-  expectType('maxAffected method only available on postgrest 13+')
-  // @ts-expect-error should raise error if providing table name not in the schema
-  pg12CustomSchemaClient.from('channels_details')
-  // @ts-expect-error should raise error if providing table name not in the schema
-  pg12CustomSchemaNewClient.from('channels_details')
-}
-
-// createClient with custom schema and PostgrestVersion explicitly set
-{
-  const pg13CustomSchemaClient = createClient(
-    URL,
-    KEY,
-    {
-      db: { schema: 'personal' },
-    }
-  )
-  const pg12CustomSchemaNewClient = new SupabaseClient<
-    Database,
-    { PostgrestVersion: '12' },
-    'personal'
-  >(URL, KEY, {
-    db: { schema: 'personal' },
-  })
-  const res12new = await pg12CustomSchemaNewClient
-    .from('users')
-    .update({ username: 'test' })
-    .maxAffected(1)
-  const res13 = await pg13CustomSchemaClient
-    .from('users')
-    .update({ username: 'test' })
-    .maxAffected(1)
-  expectType(null)
-  expectType('maxAffected method only available on postgrest 13+')
-  // @ts-expect-error should raise error if providing table name not in the schema
-  pg12CustomSchemaClient.from('channels_details')
-  // @ts-expect-error should raise error if providing table name not in the schema
-  pg13CustomSchemaClient.from('channels_details')
-}
diff --git a/test/unit/SupabaseAuthClient.test.ts b/test/unit/SupabaseAuthClient.test.ts
deleted file mode 100644
index f6800406..00000000
--- a/test/unit/SupabaseAuthClient.test.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-import { SupabaseAuthClient } from '../../src/lib/SupabaseAuthClient'
-import SupabaseClient from '../../src/SupabaseClient'
-import { DEFAULT_HEADERS } from '../../src/lib/constants'
-
-const DEFAULT_OPTIONS = {
-  auth: {
-    autoRefreshToken: true,
-    persistSession: true,
-    detectSessionInUrl: true,
-  },
-  global: {
-    headers: DEFAULT_HEADERS,
-  },
-  db: {
-    schema: 'public',
-  },
-}
-const settings = { ...DEFAULT_OPTIONS }
-
-const authSettings = { ...settings.global, ...settings.auth }
-
-test('it should create a new instance of the class', () => {
-  const authClient = new SupabaseAuthClient(authSettings)
-  expect(authClient).toBeInstanceOf(SupabaseAuthClient)
-})
-
-test('_initSupabaseAuthClient should overwrite authHeaders if headers are provided', () => {
-  const authClient = new SupabaseClient('https://example.supabase.com', 'supabaseKey')[
-    '_initSupabaseAuthClient'
-  ](authSettings, {
-    Authorization: 'Bearer custom-auth-header',
-  })
-  expect(authClient['headers']['Authorization']).toBe('Bearer custom-auth-header')
-  expect(authClient['headers']['apikey']).toBe('supabaseKey')
-})
diff --git a/test/unit/SupabaseClient.test.ts b/test/unit/SupabaseClient.test.ts
deleted file mode 100644
index 81f420be..00000000
--- a/test/unit/SupabaseClient.test.ts
+++ /dev/null
@@ -1,325 +0,0 @@
-import { PostgrestClient } from '@supabase/postgrest-js'
-import { createClient, SupabaseClient } from '../../src/index'
-import { Database } from '../types'
-
-const URL = 'http://localhost:3000'
-const KEY = 'some.fake.key'
-
-describe('SupabaseClient', () => {
-  test('it should create a client with third-party auth accessToken', async () => {
-    const client = createClient(URL, KEY, {
-      accessToken: async () => {
-        return 'jwt'
-      },
-    })
-
-    expect(() => client.auth.getUser()).toThrow(
-      '@supabase/supabase-js: Supabase Client is configured with the accessToken option, accessing supabase.auth.getUser is not possible'
-    )
-  })
-
-  test('it should create the client connection', async () => {
-    const supabase = createClient(URL, KEY)
-    expect(supabase).toBeDefined()
-    expect(supabase).toBeInstanceOf(SupabaseClient)
-  })
-
-  test('it should throw an error if no valid params are provided', async () => {
-    expect(() => createClient('', KEY)).toThrow('supabaseUrl is required.')
-    expect(() => createClient(URL, '')).toThrow('supabaseKey is required.')
-  })
-
-  describe('URL Construction', () => {
-    test('should construct URLs correctly', () => {
-      const client = createClient(URL, KEY)
-
-      // @ts-ignore
-      expect(client.authUrl.toString()).toEqual('http://localhost:3000/auth/v1')
-      // @ts-ignore
-      expect(client.realtimeUrl.toString()).toEqual('ws://localhost:3000/realtime/v1')
-      // @ts-ignore
-      expect(client.storageUrl.toString()).toEqual('http://localhost:3000/storage/v1')
-      // @ts-ignore
-      expect(client.functionsUrl.toString()).toEqual('http://localhost:3000/functions/v1')
-      // @ts-ignore
-      expect(client.rest.url).toEqual('http://localhost:3000/rest/v1')
-    })
-
-    test('should preserve paths in supabaseUrl', () => {
-      const baseUrlWithPath = 'http://localhost:3000/custom/base'
-      const client = createClient(baseUrlWithPath, KEY)
-
-      // @ts-ignore
-      expect(client.authUrl.toString()).toEqual('http://localhost:3000/custom/base/auth/v1')
-      // @ts-ignore
-      expect(client.realtimeUrl.toString()).toEqual('ws://localhost:3000/custom/base/realtime/v1')
-      // @ts-ignore
-      expect(client.storageUrl.toString()).toEqual('http://localhost:3000/custom/base/storage/v1')
-      // @ts-ignore
-      expect(client.functionsUrl.toString()).toEqual(
-        'http://localhost:3000/custom/base/functions/v1'
-      )
-      // @ts-ignore
-      expect(client.rest.url).toEqual('http://localhost:3000/custom/base/rest/v1')
-    })
-
-    test('should handle HTTPS URLs correctly', () => {
-      const client = createClient('https://localhost:3000', KEY)
-      // @ts-ignore
-      expect(client.realtimeUrl.toString()).toEqual('wss://localhost:3000/realtime/v1')
-    })
-  })
-
-  describe('Custom Headers', () => {
-    test('should have custom header set', () => {
-      const customHeader = { 'X-Test-Header': 'value' }
-      const request = createClient(URL, KEY, { global: { headers: customHeader } }).rpc('')
-      //@ts-expect-error headers is protected attribute
-      const requestHeader = request.headers.get('X-Test-Header')
-      expect(requestHeader).toBe(customHeader['X-Test-Header'])
-    })
-
-    test('should merge custom headers with default headers', () => {
-      const customHeader = { 'X-Test-Header': 'value' }
-      const request = createClient(URL, KEY, { global: { headers: customHeader } }).rpc('')
-
-      //@ts-expect-error headers is protected attribute
-      const requestHeader = request.headers.get('X-Test-Header')
-      expect(requestHeader).toBe(customHeader['X-Test-Header'])
-      //@ts-expect-error headers is protected attribute
-      expect(request.headers.get('X-Client-Info')).not.toBeNull()
-    })
-  })
-
-  describe('Storage Key', () => {
-    test('should use default storage key based on project ref', () => {
-      const client = createClient('https://project-ref.supabase.co', KEY)
-      // @ts-ignore
-      expect(client.storageKey).toBe('sb-project-ref-auth-token')
-    })
-
-    test('should use custom storage key when provided', () => {
-      const customStorageKey = 'custom-storage-key'
-      const client = createClient(URL, KEY, {
-        auth: { storageKey: customStorageKey },
-      })
-      // @ts-ignore
-      expect(client.storageKey).toBe(customStorageKey)
-    })
-
-    test('should handle undefined storageKey and headers', () => {
-      const client = createClient(URL, KEY, {
-        auth: { storageKey: undefined },
-        global: { headers: undefined },
-      })
-      expect(client).toBeDefined()
-      // @ts-ignore
-      expect(client.storageKey).toBe('')
-      // @ts-ignore
-      expect(client.headers).toHaveProperty('X-Client-Info')
-    })
-  })
-
-  describe('Client Methods', () => {
-    test('should initialize functions client', () => {
-      const client = createClient(URL, KEY)
-      const functions = client.functions
-      expect(functions).toBeDefined()
-      // @ts-ignore
-      expect(functions.url).toBe('http://localhost:3000/functions/v1')
-    })
-
-    test('should initialize storage client', () => {
-      const client = createClient(URL, KEY)
-      const storage = client.storage
-      expect(storage).toBeDefined()
-      // @ts-ignore
-      expect(storage.url).toBe('http://localhost:3000/storage/v1')
-    })
-
-    test('should initialize realtime client', () => {
-      const client = createClient(URL, KEY)
-      expect(client.realtime).toBeDefined()
-      // @ts-ignore
-      expect(client.realtime.endPoint).toBe('ws://localhost:3000/realtime/v1/websocket')
-    })
-  })
-
-  describe('Realtime Channel Management', () => {
-    test('should create and manage channels', () => {
-      const client = createClient(URL, KEY)
-      const channel = client.channel('test-channel')
-      expect(channel).toBeDefined()
-      expect(client.getChannels()).toHaveLength(1)
-    })
-
-    test('should remove channel', async () => {
-      const client = createClient(URL, KEY)
-      const channel = client.channel('test-channel')
-      const result = await client.removeChannel(channel)
-      expect(result).toBe('ok')
-      expect(client.getChannels()).toHaveLength(0)
-    })
-
-    test('should remove all channels', async () => {
-      const client = createClient(URL, KEY)
-      client.channel('channel1')
-      client.channel('channel2')
-      const results = await client.removeAllChannels()
-      expect(results).toEqual(['ok', 'ok'])
-      expect(client.getChannels()).toHaveLength(0)
-    })
-  })
-
-  describe('Schema Management', () => {
-    test('should switch schema', () => {
-      const client = createClient(URL, KEY)
-      const schemaClient = client.schema('personal')
-      expect(schemaClient).toBeDefined()
-      expect(schemaClient).toBeInstanceOf(PostgrestClient)
-    })
-  })
-
-  describe('Table/View Queries', () => {
-    test('should query table with string relation', () => {
-      const client = createClient(URL, KEY)
-      const queryBuilder = client.from('users')
-      expect(queryBuilder).toBeDefined()
-    })
-  })
-
-  describe('RPC Calls', () => {
-    test('should make RPC call with arguments', () => {
-      const client = createClient(URL, KEY)
-      const rpcCall = client.rpc('get_status', { name_param: 'test' })
-      expect(rpcCall).toBeDefined()
-    })
-
-    test('should make RPC call with options', () => {
-      const client = createClient(URL, KEY)
-      const rpcCall = client.rpc('get_status', { name_param: 'test' }, { head: true })
-      expect(rpcCall).toBeDefined()
-    })
-  })
-
-  describe('Access Token Handling', () => {
-    test('should use custom accessToken when provided', async () => {
-      const customToken = 'custom-jwt-token'
-      const client = createClient(URL, KEY, {
-        accessToken: async () => customToken,
-      })
-
-      // Access the private method through the client instance
-      const accessToken = await (client as any)._getAccessToken()
-      expect(accessToken).toBe(customToken)
-    })
-
-    test('should fallback to session access token when no custom accessToken', async () => {
-      const client = createClient(URL, KEY)
-
-      // Mock the auth.getSession method
-      const mockSession = {
-        data: {
-          session: {
-            access_token: 'session-jwt-token',
-          },
-        },
-      }
-      client.auth.getSession = jest.fn().mockResolvedValue(mockSession)
-
-      const accessToken = await (client as any)._getAccessToken()
-      expect(accessToken).toBe('session-jwt-token')
-    })
-
-    test('should fallback to supabaseKey when no session', async () => {
-      const client = createClient(URL, KEY)
-
-      // Mock the auth.getSession method to return no session
-      const mockSession = {
-        data: {
-          session: null,
-        },
-      }
-      client.auth.getSession = jest.fn().mockResolvedValue(mockSession)
-
-      const accessToken = await (client as any)._getAccessToken()
-      expect(accessToken).toBe(KEY)
-    })
-  })
-
-  describe('Auth Event Handling', () => {
-    test('should handle TOKEN_REFRESHED event', () => {
-      const client = createClient(URL, KEY)
-      const newToken = 'new-refreshed-token'
-
-      // Mock realtime.setAuth
-      client.realtime.setAuth = jest.fn()
-      ;(client as any)._handleTokenChanged('TOKEN_REFRESHED', 'CLIENT', newToken)
-
-      expect((client as any).changedAccessToken).toBe(newToken)
-    })
-
-    test('should listen for auth events', () => {
-      const client = createClient(URL, KEY)
-
-      // Mock auth.onAuthStateChange
-      const mockCallback = jest.fn()
-      client.auth.onAuthStateChange = jest.fn().mockReturnValue(mockCallback)
-
-      // Call the private method
-      const result = (client as any)._listenForAuthEvents()
-
-      expect(client.auth.onAuthStateChange).toHaveBeenCalled()
-      expect(result).toBe(mockCallback)
-    })
-
-    test('should handle SIGNED_IN event', () => {
-      const client = createClient(URL, KEY)
-      const newToken = 'new-signed-in-token'
-
-      // Mock realtime.setAuth
-      client.realtime.setAuth = jest.fn()
-      ;(client as any)._handleTokenChanged('SIGNED_IN', 'CLIENT', newToken)
-
-      expect((client as any).changedAccessToken).toBe(newToken)
-    })
-
-    test('should not update token if it is the same', () => {
-      const client = createClient(URL, KEY)
-      const existingToken = 'existing-token'
-      ;(client as any).changedAccessToken = existingToken
-
-      // Mock realtime.setAuth
-      client.realtime.setAuth = jest.fn()
-      ;(client as any)._handleTokenChanged('TOKEN_REFRESHED', 'CLIENT', existingToken)
-
-      expect((client as any).changedAccessToken).toBe(existingToken)
-    })
-
-    test('should handle SIGNED_OUT event from CLIENT source', () => {
-      const client = createClient(URL, KEY)
-      ;(client as any).changedAccessToken = 'old-token'
-
-      // Mock realtime.setAuth
-      client.realtime.setAuth = jest.fn()
-      ;(client as any)._handleTokenChanged('SIGNED_OUT', 'CLIENT')
-
-      expect(client.realtime.setAuth).toHaveBeenCalled()
-      expect((client as any).changedAccessToken).toBeUndefined()
-    })
-
-    test('should handle SIGNED_OUT event from STORAGE source', () => {
-      const client = createClient(URL, KEY)
-      ;(client as any).changedAccessToken = 'old-token'
-
-      // Mock realtime.setAuth and auth.signOut
-      client.realtime.setAuth = jest.fn()
-      client.auth.signOut = jest.fn()
-      ;(client as any)._handleTokenChanged('SIGNED_OUT', 'STORAGE')
-
-      expect(client.realtime.setAuth).toHaveBeenCalled()
-      expect(client.auth.signOut).toHaveBeenCalled()
-      expect((client as any).changedAccessToken).toBeUndefined()
-    })
-  })
-})
diff --git a/test/unit/constants.test.ts b/test/unit/constants.test.ts
deleted file mode 100644
index 38fb3df1..00000000
--- a/test/unit/constants.test.ts
+++ /dev/null
@@ -1,105 +0,0 @@
-import {
-  DEFAULT_HEADERS,
-  DEFAULT_GLOBAL_OPTIONS,
-  DEFAULT_DB_OPTIONS,
-  DEFAULT_AUTH_OPTIONS,
-  DEFAULT_REALTIME_OPTIONS,
-} from '../../src/lib/constants'
-import { version } from '../../src/lib/version'
-
-describe('constants', () => {
-  const originalEnv = process.env
-  const originalWindow = global.window
-  const originalDocument = global.document
-  const originalNavigator = global.navigator
-  const originalDeno = (global as any).Deno
-
-  beforeEach(() => {
-    jest.resetModules()
-    // Reset globals
-    delete (global as any).window
-    delete (global as any).document
-    delete (global as any).navigator
-    delete (global as any).Deno
-  })
-
-  afterEach(() => {
-    // Restore globals
-    if (originalWindow) global.window = originalWindow
-    if (originalDocument) global.document = originalDocument
-    if (originalNavigator) global.navigator = originalNavigator
-    if (originalDeno) (global as any).Deno = originalDeno
-  })
-
-  test('DEFAULT_HEADERS should contain X-Client-Info', () => {
-    expect(DEFAULT_HEADERS).toHaveProperty('X-Client-Info')
-    expect(DEFAULT_HEADERS['X-Client-Info']).toMatch(/^supabase-js-.*\/.*$/)
-  })
-
-  test('DEFAULT_GLOBAL_OPTIONS should contain headers', () => {
-    expect(DEFAULT_GLOBAL_OPTIONS).toHaveProperty('headers')
-    expect(DEFAULT_GLOBAL_OPTIONS.headers).toBe(DEFAULT_HEADERS)
-  })
-
-  test('DEFAULT_DB_OPTIONS should have schema set to public', () => {
-    expect(DEFAULT_DB_OPTIONS).toHaveProperty('schema')
-    expect(DEFAULT_DB_OPTIONS.schema).toBe('public')
-  })
-
-  test('DEFAULT_AUTH_OPTIONS should have correct default values', () => {
-    expect(DEFAULT_AUTH_OPTIONS).toHaveProperty('autoRefreshToken')
-    expect(DEFAULT_AUTH_OPTIONS.autoRefreshToken).toBe(true)
-    expect(DEFAULT_AUTH_OPTIONS).toHaveProperty('persistSession')
-    expect(DEFAULT_AUTH_OPTIONS.persistSession).toBe(true)
-    expect(DEFAULT_AUTH_OPTIONS).toHaveProperty('detectSessionInUrl')
-    expect(DEFAULT_AUTH_OPTIONS.detectSessionInUrl).toBe(true)
-    expect(DEFAULT_AUTH_OPTIONS).toHaveProperty('flowType')
-    expect(DEFAULT_AUTH_OPTIONS.flowType).toBe('implicit')
-  })
-
-  test('DEFAULT_REALTIME_OPTIONS should be an empty object', () => {
-    expect(DEFAULT_REALTIME_OPTIONS).toEqual({})
-  })
-
-  describe('JS_ENV detection', () => {
-    test('should detect Deno environment', () => {
-      ;(global as any).Deno = {}
-
-      // Re-import to trigger the detection logic
-      jest.resetModules()
-      const { DEFAULT_HEADERS: newHeaders } = require('../../src/lib/constants')
-
-      expect(newHeaders['X-Client-Info']).toContain('supabase-js-deno')
-    })
-
-    test('should detect web environment', () => {
-      global.document = {} as any
-
-      // Re-import to trigger the detection logic
-      jest.resetModules()
-      const { DEFAULT_HEADERS: newHeaders } = require('../../src/lib/constants')
-
-      expect(newHeaders['X-Client-Info']).toContain('supabase-js-web')
-    })
-
-    test('should detect React Native environment', () => {
-      global.navigator = { product: 'ReactNative' } as any
-
-      // Re-import to trigger the detection logic
-      jest.resetModules()
-      const { DEFAULT_HEADERS: newHeaders } = require('../../src/lib/constants')
-
-      expect(newHeaders['X-Client-Info']).toContain('supabase-js-react-native')
-    })
-
-    test('should default to node environment when no specific environment is detected', () => {
-      // No globals set
-
-      // Re-import to trigger the detection logic
-      jest.resetModules()
-      const { DEFAULT_HEADERS: newHeaders } = require('../../src/lib/constants')
-
-      expect(newHeaders['X-Client-Info']).toContain('supabase-js-node')
-    })
-  })
-})
diff --git a/test/unit/deprecation.test.ts b/test/unit/deprecation.test.ts
deleted file mode 100644
index d0465998..00000000
--- a/test/unit/deprecation.test.ts
+++ /dev/null
@@ -1,143 +0,0 @@
-/**
- * @jest-environment node
- */
-
-// Make this file a module to satisfy TypeScript's isolatedModules
-export {}
-
-describe('Node.js deprecation warning', () => {
-  const originalProcess = global.process
-  const originalWindow = global.window
-  const originalConsoleWarn = console.warn
-
-  beforeEach(() => {
-    // Reset modules to re-run the deprecation check
-    jest.resetModules()
-    // Mock console.warn
-    console.warn = jest.fn()
-  })
-
-  afterEach(() => {
-    // Restore original values
-    global.process = originalProcess
-    global.window = originalWindow
-    console.warn = originalConsoleWarn
-    jest.resetModules()
-  })
-
-  it('should not show warning in browser environment', () => {
-    // Simulate browser environment
-    global.window = {} as any
-
-    require('../../src/index')
-
-    expect(console.warn).not.toHaveBeenCalled()
-  })
-
-  // Note: We can't easily test "process is undefined" because dependencies like ws require it
-  // The code handles it correctly with typeof process === 'undefined' check
-  // In real Edge Runtime, the module loading context is different
-
-  it('should not show warning when process.version is undefined', () => {
-    // Process exists but version is undefined
-    // Only mock the version property to avoid TTYWRAP warnings
-    Object.defineProperty(global.process, 'version', {
-      value: undefined,
-      configurable: true,
-    })
-
-    require('../../src/index')
-
-    expect(console.warn).not.toHaveBeenCalled()
-  })
-
-  it('should not show warning when process.version is null', () => {
-    // Process exists but version is null
-    // Only mock the version property to avoid TTYWRAP warnings
-    Object.defineProperty(global.process, 'version', {
-      value: null,
-      configurable: true,
-    })
-
-    require('../../src/index')
-
-    expect(console.warn).not.toHaveBeenCalled()
-  })
-
-  it('should show warning for Node.js 18', () => {
-    Object.defineProperty(global.process, 'version', {
-      value: 'v18.0.0',
-      configurable: true,
-    })
-    delete (global as any).window
-
-    require('../../src/index')
-
-    expect(console.warn).toHaveBeenCalledWith(
-      expect.stringContaining('Node.js 18 and below are deprecated')
-    )
-  })
-
-  it('should show warning for Node.js 16', () => {
-    Object.defineProperty(global.process, 'version', {
-      value: 'v16.14.0',
-      configurable: true,
-    })
-    delete (global as any).window
-
-    require('../../src/index')
-
-    expect(console.warn).toHaveBeenCalledWith(
-      expect.stringContaining('Node.js 18 and below are deprecated')
-    )
-  })
-
-  it('should not show warning for Node.js 20', () => {
-    Object.defineProperty(global.process, 'version', {
-      value: 'v20.0.0',
-      configurable: true,
-    })
-    delete (global as any).window
-
-    require('../../src/index')
-
-    expect(console.warn).not.toHaveBeenCalled()
-  })
-
-  it('should not show warning for Node.js 22', () => {
-    Object.defineProperty(global.process, 'version', {
-      value: 'v22.0.0',
-      configurable: true,
-    })
-    delete (global as any).window
-
-    require('../../src/index')
-
-    expect(console.warn).not.toHaveBeenCalled()
-  })
-
-  it('should handle invalid version format gracefully', () => {
-    Object.defineProperty(global.process, 'version', {
-      value: 'invalid-version',
-      configurable: true,
-    })
-    delete (global as any).window
-
-    require('../../src/index')
-
-    expect(console.warn).not.toHaveBeenCalled()
-  })
-
-  it('should handle version without v prefix', () => {
-    Object.defineProperty(global.process, 'version', {
-      value: '18.0.0',
-      configurable: true,
-    })
-    delete (global as any).window
-
-    require('../../src/index')
-
-    // Should not match the regex and thus not show warning
-    expect(console.warn).not.toHaveBeenCalled()
-  })
-})
diff --git a/test/unit/fetch.test.ts b/test/unit/fetch.test.ts
deleted file mode 100644
index 0380d334..00000000
--- a/test/unit/fetch.test.ts
+++ /dev/null
@@ -1,141 +0,0 @@
-import { resolveFetch, resolveHeadersConstructor, fetchWithAuth } from '../../src/lib/fetch'
-
-// Mock fetch for testing
-const mockFetch = jest.fn()
-const mockHeaders = jest.fn()
-
-describe('fetch module', () => {
-  beforeEach(() => {
-    jest.clearAllMocks()
-    // Reset global fetch
-    delete (global as any).fetch
-    delete (global as any).Headers
-  })
-
-  describe('resolveFetch', () => {
-    test('should use custom fetch when provided', () => {
-      const customFetch = jest.fn()
-      const result = resolveFetch(customFetch)
-      expect(typeof result).toBe('function')
-      // Test that it actually calls the custom fetch
-      result('test')
-      expect(customFetch).toHaveBeenCalledWith('test')
-    })
-
-    test('should use global fetch when available', () => {
-      const globalFetch = jest.fn()
-      ;(global as any).fetch = globalFetch
-
-      const result = resolveFetch()
-      expect(typeof result).toBe('function')
-      // Test that it actually calls the global fetch
-      result('test')
-      expect(globalFetch).toHaveBeenCalledWith('test')
-    })
-
-    test('should fallback to node-fetch when global fetch is undefined', () => {
-      const result = resolveFetch()
-      expect(typeof result).toBe('function')
-    })
-  })
-
-  describe('resolveHeadersConstructor', () => {
-    test('should use global Headers when available', () => {
-      const GlobalHeaders = jest.fn()
-      ;(global as any).Headers = GlobalHeaders
-
-      const result = resolveHeadersConstructor()
-      expect(result).toBe(GlobalHeaders)
-    })
-
-    test('should fallback to NodeFetchHeaders when global Headers is undefined', () => {
-      const result = resolveHeadersConstructor()
-      expect(typeof result).toBe('function')
-    })
-  })
-
-  describe('fetchWithAuth', () => {
-    test('should add apikey and authorization headers', async () => {
-      const mockResponse = { ok: true }
-      const mockFetchImpl = jest.fn().mockResolvedValue(mockResponse)
-      const mockHeadersImpl = jest.fn().mockReturnValue({
-        has: jest.fn().mockReturnValue(false),
-        set: jest.fn(),
-      })
-
-      ;(global as any).fetch = mockFetchImpl
-      ;(global as any).Headers = mockHeadersImpl
-
-      const supabaseKey = 'test-key'
-      const getAccessToken = jest.fn().mockResolvedValue('test-token')
-
-      const authFetch = fetchWithAuth(supabaseKey, getAccessToken)
-      await authFetch('https://example.com')
-
-      expect(mockHeadersImpl).toHaveBeenCalled()
-      expect(getAccessToken).toHaveBeenCalled()
-    })
-
-    test('should use supabaseKey as fallback when getAccessToken returns null', async () => {
-      const mockResponse = { ok: true }
-      const mockFetchImpl = jest.fn().mockResolvedValue(mockResponse)
-      const mockHeadersImpl = jest.fn().mockReturnValue({
-        has: jest.fn().mockReturnValue(false),
-        set: jest.fn(),
-      })
-
-      ;(global as any).fetch = mockFetchImpl
-      ;(global as any).Headers = mockHeadersImpl
-
-      const supabaseKey = 'test-key'
-      const getAccessToken = jest.fn().mockResolvedValue(null)
-
-      const authFetch = fetchWithAuth(supabaseKey, getAccessToken)
-      await authFetch('https://example.com')
-
-      expect(getAccessToken).toHaveBeenCalled()
-    })
-
-    test('should not override existing apikey header', async () => {
-      const mockResponse = { ok: true }
-      const mockFetchImpl = jest.fn().mockResolvedValue(mockResponse)
-      const mockSet = jest.fn()
-      const mockHeadersImpl = jest.fn().mockReturnValue({
-        has: jest.fn().mockImplementation((key) => key === 'apikey'),
-        set: mockSet,
-      })
-
-      ;(global as any).fetch = mockFetchImpl
-      ;(global as any).Headers = mockHeadersImpl
-
-      const supabaseKey = 'test-key'
-      const getAccessToken = jest.fn().mockResolvedValue('test-token')
-
-      const authFetch = fetchWithAuth(supabaseKey, getAccessToken)
-      await authFetch('https://example.com')
-
-      expect(mockSet).not.toHaveBeenCalledWith('apikey', supabaseKey)
-    })
-
-    test('should not override existing authorization header', async () => {
-      const mockResponse = { ok: true }
-      const mockFetchImpl = jest.fn().mockResolvedValue(mockResponse)
-      const mockSet = jest.fn()
-      const mockHeadersImpl = jest.fn().mockReturnValue({
-        has: jest.fn().mockImplementation((key) => key === 'Authorization'),
-        set: mockSet,
-      })
-
-      ;(global as any).fetch = mockFetchImpl
-      ;(global as any).Headers = mockHeadersImpl
-
-      const supabaseKey = 'test-key'
-      const getAccessToken = jest.fn().mockResolvedValue('test-token')
-
-      const authFetch = fetchWithAuth(supabaseKey, getAccessToken)
-      await authFetch('https://example.com')
-
-      expect(mockSet).not.toHaveBeenCalledWith('Authorization', expect.stringContaining('Bearer'))
-    })
-  })
-})
diff --git a/test/unit/helper.test.ts b/test/unit/helper.test.ts
deleted file mode 100644
index 6e3ba431..00000000
--- a/test/unit/helper.test.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { ensureTrailingSlash } from '../../src/lib/helpers'
-
-test('Adds trailing slash to URL if missing', () => {
-  const input = 'http://localhost:3000'
-  const expected = 'http://localhost:3000/'
-  expect(ensureTrailingSlash(input)).toBe(expected)
-})
-
-test('Keeps trailing slash of URL if already present', () => {
-  const input = 'http://localhost:3000/'
-  const expected = 'http://localhost:3000/'
-  expect(ensureTrailingSlash(input)).toBe(expected)
-})
-
-test('Adds trailing slash to URL with path if missing', () => {
-  const input = 'http://localhost:3000/path/to/supabase'
-  const expected = 'http://localhost:3000/path/to/supabase/'
-  expect(ensureTrailingSlash(input)).toBe(expected)
-})
-
-test('Keeps trailing slash of URL with path if already present', () => {
-  const input = 'http://localhost:3000/path/to/supabase/'
-  const expected = 'http://localhost:3000/path/to/supabase/'
-  expect(ensureTrailingSlash(input)).toBe(expected)
-})
diff --git a/test/unit/helpers.test.ts b/test/unit/helpers.test.ts
deleted file mode 100644
index 4e439e6d..00000000
--- a/test/unit/helpers.test.ts
+++ /dev/null
@@ -1,86 +0,0 @@
-import * as helpers from '../../src/lib/helpers'
-import { DEFAULT_HEADERS } from '../../src/lib/constants'
-
-test('uuid', async () => {
-  expect(helpers.uuid()).toMatch(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/)
-})
-
-test('override setting defaults', async () => {
-  const DEFAULT_GLOBAL_OPTIONS = {
-    headers: DEFAULT_HEADERS,
-  }
-
-  const DEFAULT_DB_OPTIONS = {
-    schema: 'public',
-  }
-
-  const DEFAULT_AUTH_OPTIONS = {
-    autoRefreshToken: true,
-    persistSession: true,
-    detectSessionInUrl: true,
-  }
-
-  let defaults = {
-    db: DEFAULT_DB_OPTIONS,
-    auth: DEFAULT_AUTH_OPTIONS,
-    global: DEFAULT_GLOBAL_OPTIONS,
-  }
-
-  let autoRefreshOption = false
-  let options = {
-    auth: {
-      autoRefreshToken: autoRefreshOption,
-    },
-  }
-  let settings = helpers.applySettingDefaults(options, defaults)
-  expect(settings.auth.autoRefreshToken).toBe(autoRefreshOption)
-  // Existing default properties should not be overwritten
-  expect(settings.auth.persistSession).not.toBeNull()
-  expect(settings.global.headers).toStrictEqual(DEFAULT_HEADERS)
-  // Existing property values should remain constant
-  expect(settings.db.schema).toBe(defaults.db.schema)
-})
-
-test('applySettingDefaults with accessToken', () => {
-  const defaults = {
-    db: { schema: 'public' },
-    auth: { autoRefreshToken: true },
-    global: { headers: {} },
-  }
-
-  const customAccessToken = async () => 'custom-token'
-  const options = {
-    accessToken: customAccessToken,
-  }
-
-  const settings = helpers.applySettingDefaults(options, defaults)
-  expect(settings.accessToken).toBe(customAccessToken)
-})
-
-test('applySettingDefaults without accessToken', () => {
-  const defaults = {
-    db: { schema: 'public' },
-    auth: { autoRefreshToken: true },
-    global: { headers: {} },
-  }
-
-  const options = {}
-
-  const settings = helpers.applySettingDefaults(options, defaults)
-  expect(settings).not.toHaveProperty('accessToken')
-})
-
-test('isBrowser function', () => {
-  const originalWindow = global.window
-
-  // Test browser environment
-  global.window = {} as any
-  expect(helpers.isBrowser()).toBe(true)
-
-  // Test non-browser environment
-  delete (global as any).window
-  expect(helpers.isBrowser()).toBe(false)
-
-  // Restore
-  if (originalWindow) global.window = originalWindow
-})
diff --git a/test/unit/index.test.ts b/test/unit/index.test.ts
deleted file mode 100644
index 14541ef4..00000000
--- a/test/unit/index.test.ts
+++ /dev/null
@@ -1,114 +0,0 @@
-import { createClient } from '../../src/index'
-import SupabaseClient from '../../src/SupabaseClient'
-
-// Mock the SupabaseClient constructor
-jest.mock('../../src/SupabaseClient')
-
-describe('index module', () => {
-  const originalProcess = global.process
-  const originalConsole = global.console
-  const originalWindow = global.window
-
-  beforeEach(() => {
-    jest.clearAllMocks()
-    // Reset globals
-    delete (global as any).process
-    delete (global as any).window
-    global.console = { ...originalConsole, warn: jest.fn() }
-  })
-
-  afterEach(() => {
-    // Restore globals
-    if (originalProcess) global.process = originalProcess
-    if (originalWindow) global.window = originalWindow
-    global.console = originalConsole
-  })
-
-  describe('createClient', () => {
-    test('should create a new SupabaseClient instance', () => {
-      const mockSupabaseClient = SupabaseClient as jest.MockedClass
-      mockSupabaseClient.mockImplementation(() => ({} as any))
-
-      const supabaseUrl = 'https://test.supabase.co'
-      const supabaseKey = 'test-key'
-      const options = { auth: { autoRefreshToken: false } }
-
-      const client = createClient(supabaseUrl, supabaseKey, options)
-
-      expect(mockSupabaseClient).toHaveBeenCalledWith(supabaseUrl, supabaseKey, options)
-      expect(client).toBeDefined()
-    })
-
-    test('should create client without options', () => {
-      const mockSupabaseClient = SupabaseClient as jest.MockedClass
-      mockSupabaseClient.mockImplementation(() => ({} as any))
-
-      const supabaseUrl = 'https://test.supabase.co'
-      const supabaseKey = 'test-key'
-
-      const client = createClient(supabaseUrl, supabaseKey)
-
-      expect(mockSupabaseClient).toHaveBeenCalledWith(supabaseUrl, supabaseKey, undefined)
-      expect(client).toBeDefined()
-    })
-
-    test('should work with generic types', () => {
-      const mockSupabaseClient = SupabaseClient as jest.MockedClass
-      mockSupabaseClient.mockImplementation(() => ({} as any))
-
-      interface TestDatabase {
-        public: {
-          Tables: {
-            users: {
-              Row: { id: number; name: string }
-              Insert: { name: string }
-              Update: { name?: string }
-            }
-          }
-        }
-      }
-
-      const supabaseUrl = 'https://test.supabase.co'
-      const supabaseKey = 'test-key'
-
-      const client = createClient(supabaseUrl, supabaseKey)
-
-      expect(mockSupabaseClient).toHaveBeenCalledWith(supabaseUrl, supabaseKey, undefined)
-      expect(client).toBeDefined()
-    })
-  })
-
-  describe('deprecation warnings', () => {
-    test('should show warning for Node.js 18', () => {
-      global.process = { version: 'v18.17.0' } as any
-
-      // Re-import to trigger the deprecation check
-      jest.resetModules()
-      require('../../src/index')
-
-      expect(console.warn).toHaveBeenCalledWith(
-        expect.stringContaining('Node.js 18 and below are deprecated')
-      )
-    })
-
-    test('should not show warning for Node.js 20', () => {
-      global.process = { version: 'v20.0.0' } as any
-
-      // Re-import to trigger the deprecation check
-      jest.resetModules()
-      require('../../src/index')
-
-      expect(console.warn).not.toHaveBeenCalled()
-    })
-
-    test('should not show warning in browser environment', () => {
-      global.window = {} as any
-
-      // Re-import to trigger the deprecation check
-      jest.resetModules()
-      require('../../src/index')
-
-      expect(console.warn).not.toHaveBeenCalled()
-    })
-  })
-})
diff --git a/tsconfig.json b/tsconfig.json
deleted file mode 100644
index 6fe01c78..00000000
--- a/tsconfig.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-  "include": ["src"],
-  "exclude": ["node_modules/**/*.ts"],
-  "compilerOptions": {
-    "declaration": true,
-    "declarationMap": true,
-    "module": "CommonJS",
-    "outDir": "dist/main",
-    "sourceMap": true,
-    "target": "ES2015",
-
-    "strict": true,
-
-    "esModuleInterop": true,
-    "moduleResolution": "Node",
-    "isolatedModules": true,
-
-    "forceConsistentCasingInFileNames": true,
-    "stripInternal": true,
-    "allowSyntheticDefaultImports": true
-  }
-}
diff --git a/tsconfig.module.json b/tsconfig.module.json
deleted file mode 100644
index 8726ca43..00000000
--- a/tsconfig.module.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "extends": "./tsconfig",
-  "compilerOptions": {
-    "module": "ES2020",
-    "outDir": "dist/module"
-  }
-}
diff --git a/docs/v1/.nojekyll b/v1/.nojekyll
similarity index 100%
rename from docs/v1/.nojekyll
rename to v1/.nojekyll
diff --git a/docs/v1/assets/highlight.css b/v1/assets/highlight.css
similarity index 100%
rename from docs/v1/assets/highlight.css
rename to v1/assets/highlight.css
diff --git a/docs/v1/assets/icons.css b/v1/assets/icons.css
similarity index 100%
rename from docs/v1/assets/icons.css
rename to v1/assets/icons.css
diff --git a/docs/v1/assets/icons.png b/v1/assets/icons.png
similarity index 100%
rename from docs/v1/assets/icons.png
rename to v1/assets/icons.png
diff --git a/docs/v1/assets/icons@2x.png b/v1/assets/icons@2x.png
similarity index 100%
rename from docs/v1/assets/icons@2x.png
rename to v1/assets/icons@2x.png
diff --git a/docs/v1/assets/main.js b/v1/assets/main.js
similarity index 100%
rename from docs/v1/assets/main.js
rename to v1/assets/main.js
diff --git a/docs/v1/assets/search.js b/v1/assets/search.js
similarity index 100%
rename from docs/v1/assets/search.js
rename to v1/assets/search.js
diff --git a/docs/v1/assets/style.css b/v1/assets/style.css
similarity index 100%
rename from docs/v1/assets/style.css
rename to v1/assets/style.css
diff --git a/docs/v1/assets/widgets.png b/v1/assets/widgets.png
similarity index 100%
rename from docs/v1/assets/widgets.png
rename to v1/assets/widgets.png
diff --git a/docs/v1/assets/widgets@2x.png b/v1/assets/widgets@2x.png
similarity index 100%
rename from docs/v1/assets/widgets@2x.png
rename to v1/assets/widgets@2x.png
diff --git a/docs/v1/classes/index.GoTrueApi.html b/v1/classes/index.GoTrueApi.html
similarity index 100%
rename from docs/v1/classes/index.GoTrueApi.html
rename to v1/classes/index.GoTrueApi.html
diff --git a/docs/v1/classes/index.GoTrueClient.html b/v1/classes/index.GoTrueClient.html
similarity index 100%
rename from docs/v1/classes/index.GoTrueClient.html
rename to v1/classes/index.GoTrueClient.html
diff --git a/docs/v1/classes/index.RealtimeClient.html b/v1/classes/index.RealtimeClient.html
similarity index 100%
rename from docs/v1/classes/index.RealtimeClient.html
rename to v1/classes/index.RealtimeClient.html
diff --git a/docs/v1/classes/index.RealtimeSubscription.html b/v1/classes/index.RealtimeSubscription.html
similarity index 100%
rename from docs/v1/classes/index.RealtimeSubscription.html
rename to v1/classes/index.RealtimeSubscription.html
diff --git a/docs/v1/classes/index.SupabaseClient.html b/v1/classes/index.SupabaseClient.html
similarity index 100%
rename from docs/v1/classes/index.SupabaseClient.html
rename to v1/classes/index.SupabaseClient.html
diff --git a/docs/v1/classes/lib_SupabaseQueryBuilder.SupabaseQueryBuilder.html b/v1/classes/lib_SupabaseQueryBuilder.SupabaseQueryBuilder.html
similarity index 100%
rename from docs/v1/classes/lib_SupabaseQueryBuilder.SupabaseQueryBuilder.html
rename to v1/classes/lib_SupabaseQueryBuilder.SupabaseQueryBuilder.html
diff --git a/docs/v1/classes/lib_SupabaseRealtimeClient.SupabaseRealtimeClient.html b/v1/classes/lib_SupabaseRealtimeClient.SupabaseRealtimeClient.html
similarity index 100%
rename from docs/v1/classes/lib_SupabaseRealtimeClient.SupabaseRealtimeClient.html
rename to v1/classes/lib_SupabaseRealtimeClient.SupabaseRealtimeClient.html
diff --git a/docs/v1/enums/index.Transformers.PostgresTypes.html b/v1/enums/index.Transformers.PostgresTypes.html
similarity index 100%
rename from docs/v1/enums/index.Transformers.PostgresTypes.html
rename to v1/enums/index.Transformers.PostgresTypes.html
diff --git a/docs/v1/index.html b/v1/index.html
similarity index 100%
rename from docs/v1/index.html
rename to v1/index.html
diff --git a/docs/v1/interfaces/index.AdminUserAttributes.html b/v1/interfaces/index.AdminUserAttributes.html
similarity index 100%
rename from docs/v1/interfaces/index.AdminUserAttributes.html
rename to v1/interfaces/index.AdminUserAttributes.html
diff --git a/docs/v1/interfaces/index.ApiError.html b/v1/interfaces/index.ApiError.html
similarity index 100%
rename from docs/v1/interfaces/index.ApiError.html
rename to v1/interfaces/index.ApiError.html
diff --git a/docs/v1/interfaces/index.AuthSession.html b/v1/interfaces/index.AuthSession.html
similarity index 100%
rename from docs/v1/interfaces/index.AuthSession.html
rename to v1/interfaces/index.AuthSession.html
diff --git a/docs/v1/interfaces/index.AuthUser.html b/v1/interfaces/index.AuthUser.html
similarity index 100%
rename from docs/v1/interfaces/index.AuthUser.html
rename to v1/interfaces/index.AuthUser.html
diff --git a/docs/v1/interfaces/index.CookieOptions.html b/v1/interfaces/index.CookieOptions.html
similarity index 100%
rename from docs/v1/interfaces/index.CookieOptions.html
rename to v1/interfaces/index.CookieOptions.html
diff --git a/docs/v1/interfaces/index.OpenIDConnectCredentials.html b/v1/interfaces/index.OpenIDConnectCredentials.html
similarity index 100%
rename from docs/v1/interfaces/index.OpenIDConnectCredentials.html
rename to v1/interfaces/index.OpenIDConnectCredentials.html
diff --git a/docs/v1/interfaces/index.Subscription.html b/v1/interfaces/index.Subscription.html
similarity index 100%
rename from docs/v1/interfaces/index.Subscription.html
rename to v1/interfaces/index.Subscription.html
diff --git a/docs/v1/interfaces/index.UserAttributes.html b/v1/interfaces/index.UserAttributes.html
similarity index 100%
rename from docs/v1/interfaces/index.UserAttributes.html
rename to v1/interfaces/index.UserAttributes.html
diff --git a/docs/v1/interfaces/index.UserCredentials.html b/v1/interfaces/index.UserCredentials.html
similarity index 100%
rename from docs/v1/interfaces/index.UserCredentials.html
rename to v1/interfaces/index.UserCredentials.html
diff --git a/docs/v1/interfaces/index.UserIdentity.html b/v1/interfaces/index.UserIdentity.html
similarity index 100%
rename from docs/v1/interfaces/index.UserIdentity.html
rename to v1/interfaces/index.UserIdentity.html
diff --git a/docs/v1/interfaces/index.VerifyEmailOTPParams.html b/v1/interfaces/index.VerifyEmailOTPParams.html
similarity index 100%
rename from docs/v1/interfaces/index.VerifyEmailOTPParams.html
rename to v1/interfaces/index.VerifyEmailOTPParams.html
diff --git a/docs/v1/interfaces/index.VerifyMobileOTPParams.html b/v1/interfaces/index.VerifyMobileOTPParams.html
similarity index 100%
rename from docs/v1/interfaces/index.VerifyMobileOTPParams.html
rename to v1/interfaces/index.VerifyMobileOTPParams.html
diff --git a/docs/v1/interfaces/lib_types.SupabaseAuthClientOptions.html b/v1/interfaces/lib_types.SupabaseAuthClientOptions.html
similarity index 100%
rename from docs/v1/interfaces/lib_types.SupabaseAuthClientOptions.html
rename to v1/interfaces/lib_types.SupabaseAuthClientOptions.html
diff --git a/docs/v1/modules.html b/v1/modules.html
similarity index 100%
rename from docs/v1/modules.html
rename to v1/modules.html
diff --git a/docs/v1/modules/index.Transformers.html b/v1/modules/index.Transformers.html
similarity index 100%
rename from docs/v1/modules/index.Transformers.html
rename to v1/modules/index.Transformers.html
diff --git a/docs/v1/modules/index.html b/v1/modules/index.html
similarity index 100%
rename from docs/v1/modules/index.html
rename to v1/modules/index.html
diff --git a/docs/v1/modules/lib_SupabaseQueryBuilder.html b/v1/modules/lib_SupabaseQueryBuilder.html
similarity index 100%
rename from docs/v1/modules/lib_SupabaseQueryBuilder.html
rename to v1/modules/lib_SupabaseQueryBuilder.html
diff --git a/docs/v1/modules/lib_SupabaseRealtimeClient.html b/v1/modules/lib_SupabaseRealtimeClient.html
similarity index 100%
rename from docs/v1/modules/lib_SupabaseRealtimeClient.html
rename to v1/modules/lib_SupabaseRealtimeClient.html
diff --git a/docs/v1/modules/lib_constants.html b/v1/modules/lib_constants.html
similarity index 100%
rename from docs/v1/modules/lib_constants.html
rename to v1/modules/lib_constants.html
diff --git a/docs/v1/modules/lib_helpers.html b/v1/modules/lib_helpers.html
similarity index 100%
rename from docs/v1/modules/lib_helpers.html
rename to v1/modules/lib_helpers.html
diff --git a/docs/v1/modules/lib_types.html b/v1/modules/lib_types.html
similarity index 100%
rename from docs/v1/modules/lib_types.html
rename to v1/modules/lib_types.html
diff --git a/docs/v1/modules/lib_version.html b/v1/modules/lib_version.html
similarity index 100%
rename from docs/v1/modules/lib_version.html
rename to v1/modules/lib_version.html
diff --git a/docs/v1/spec.json b/v1/spec.json
similarity index 100%
rename from docs/v1/spec.json
rename to v1/spec.json
diff --git a/v2/.nojekyll b/v2/.nojekyll
new file mode 100644
index 00000000..e2ac6616
--- /dev/null
+++ b/v2/.nojekyll
@@ -0,0 +1 @@
+TypeDoc added this file to prevent GitHub Pages from using Jekyll. You can turn off this behavior by setting the `githubPages` option to false.
\ No newline at end of file
diff --git a/v2/assets/highlight.css b/v2/assets/highlight.css
new file mode 100644
index 00000000..e0a86ada
--- /dev/null
+++ b/v2/assets/highlight.css
@@ -0,0 +1,113 @@
+:root {
+    --light-hl-0: #000000;
+    --dark-hl-0: #D4D4D4;
+    --light-hl-1: #AF00DB;
+    --dark-hl-1: #C586C0;
+    --light-hl-2: #001080;
+    --dark-hl-2: #9CDCFE;
+    --light-hl-3: #A31515;
+    --dark-hl-3: #CE9178;
+    --light-hl-4: #008000;
+    --dark-hl-4: #6A9955;
+    --light-hl-5: #0000FF;
+    --dark-hl-5: #569CD6;
+    --light-hl-6: #0070C1;
+    --dark-hl-6: #4FC1FF;
+    --light-hl-7: #795E26;
+    --dark-hl-7: #DCDCAA;
+    --light-hl-8: #800000;
+    --dark-hl-8: #808080;
+    --light-hl-9: #800000;
+    --dark-hl-9: #569CD6;
+    --light-hl-10: #000000FF;
+    --dark-hl-10: #D4D4D4;
+    --light-hl-11: #FF0000;
+    --dark-hl-11: #9CDCFE;
+    --light-hl-12: #0000FF;
+    --dark-hl-12: #CE9178;
+    --light-code-background: #F5F5F5;
+    --dark-code-background: #1E1E1E;
+}
+
+@media (prefers-color-scheme: light) { :root {
+    --hl-0: var(--light-hl-0);
+    --hl-1: var(--light-hl-1);
+    --hl-2: var(--light-hl-2);
+    --hl-3: var(--light-hl-3);
+    --hl-4: var(--light-hl-4);
+    --hl-5: var(--light-hl-5);
+    --hl-6: var(--light-hl-6);
+    --hl-7: var(--light-hl-7);
+    --hl-8: var(--light-hl-8);
+    --hl-9: var(--light-hl-9);
+    --hl-10: var(--light-hl-10);
+    --hl-11: var(--light-hl-11);
+    --hl-12: var(--light-hl-12);
+    --code-background: var(--light-code-background);
+} }
+
+@media (prefers-color-scheme: dark) { :root {
+    --hl-0: var(--dark-hl-0);
+    --hl-1: var(--dark-hl-1);
+    --hl-2: var(--dark-hl-2);
+    --hl-3: var(--dark-hl-3);
+    --hl-4: var(--dark-hl-4);
+    --hl-5: var(--dark-hl-5);
+    --hl-6: var(--dark-hl-6);
+    --hl-7: var(--dark-hl-7);
+    --hl-8: var(--dark-hl-8);
+    --hl-9: var(--dark-hl-9);
+    --hl-10: var(--dark-hl-10);
+    --hl-11: var(--dark-hl-11);
+    --hl-12: var(--dark-hl-12);
+    --code-background: var(--dark-code-background);
+} }
+
+body.light {
+    --hl-0: var(--light-hl-0);
+    --hl-1: var(--light-hl-1);
+    --hl-2: var(--light-hl-2);
+    --hl-3: var(--light-hl-3);
+    --hl-4: var(--light-hl-4);
+    --hl-5: var(--light-hl-5);
+    --hl-6: var(--light-hl-6);
+    --hl-7: var(--light-hl-7);
+    --hl-8: var(--light-hl-8);
+    --hl-9: var(--light-hl-9);
+    --hl-10: var(--light-hl-10);
+    --hl-11: var(--light-hl-11);
+    --hl-12: var(--light-hl-12);
+    --code-background: var(--light-code-background);
+}
+
+body.dark {
+    --hl-0: var(--dark-hl-0);
+    --hl-1: var(--dark-hl-1);
+    --hl-2: var(--dark-hl-2);
+    --hl-3: var(--dark-hl-3);
+    --hl-4: var(--dark-hl-4);
+    --hl-5: var(--dark-hl-5);
+    --hl-6: var(--dark-hl-6);
+    --hl-7: var(--dark-hl-7);
+    --hl-8: var(--dark-hl-8);
+    --hl-9: var(--dark-hl-9);
+    --hl-10: var(--dark-hl-10);
+    --hl-11: var(--dark-hl-11);
+    --hl-12: var(--dark-hl-12);
+    --code-background: var(--dark-code-background);
+}
+
+.hl-0 { color: var(--hl-0); }
+.hl-1 { color: var(--hl-1); }
+.hl-2 { color: var(--hl-2); }
+.hl-3 { color: var(--hl-3); }
+.hl-4 { color: var(--hl-4); }
+.hl-5 { color: var(--hl-5); }
+.hl-6 { color: var(--hl-6); }
+.hl-7 { color: var(--hl-7); }
+.hl-8 { color: var(--hl-8); }
+.hl-9 { color: var(--hl-9); }
+.hl-10 { color: var(--hl-10); }
+.hl-11 { color: var(--hl-11); }
+.hl-12 { color: var(--hl-12); }
+pre, code { background: var(--code-background); }
diff --git a/v2/assets/icons.css b/v2/assets/icons.css
new file mode 100644
index 00000000..776a3562
--- /dev/null
+++ b/v2/assets/icons.css
@@ -0,0 +1,1043 @@
+.tsd-kind-icon {
+    display: block;
+    position: relative;
+    padding-left: 20px;
+    text-indent: -20px;
+}
+.tsd-kind-icon:before {
+    content: "";
+    display: inline-block;
+    vertical-align: middle;
+    width: 17px;
+    height: 17px;
+    margin: 0 3px 2px 0;
+    background-image: url(./icons.png);
+}
+@media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi) {
+    .tsd-kind-icon:before {
+        background-image: url(./icons@2x.png);
+        background-size: 238px 204px;
+    }
+}
+
+.tsd-signature.tsd-kind-icon:before {
+    background-position: 0 -153px;
+}
+
+.tsd-kind-object-literal > .tsd-kind-icon:before {
+    background-position: 0px -17px;
+}
+.tsd-kind-object-literal.tsd-is-protected > .tsd-kind-icon:before {
+    background-position: -17px -17px;
+}
+.tsd-kind-object-literal.tsd-is-private > .tsd-kind-icon:before {
+    background-position: -34px -17px;
+}
+
+.tsd-kind-class > .tsd-kind-icon:before {
+    background-position: 0px -34px;
+}
+.tsd-kind-class.tsd-is-protected > .tsd-kind-icon:before {
+    background-position: -17px -34px;
+}
+.tsd-kind-class.tsd-is-private > .tsd-kind-icon:before {
+    background-position: -34px -34px;
+}
+
+.tsd-kind-class.tsd-has-type-parameter > .tsd-kind-icon:before {
+    background-position: 0px -51px;
+}
+.tsd-kind-class.tsd-has-type-parameter.tsd-is-protected
+    > .tsd-kind-icon:before {
+    background-position: -17px -51px;
+}
+.tsd-kind-class.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before {
+    background-position: -34px -51px;
+}
+
+.tsd-kind-interface > .tsd-kind-icon:before {
+    background-position: 0px -68px;
+}
+.tsd-kind-interface.tsd-is-protected > .tsd-kind-icon:before {
+    background-position: -17px -68px;
+}
+.tsd-kind-interface.tsd-is-private > .tsd-kind-icon:before {
+    background-position: -34px -68px;
+}
+
+.tsd-kind-interface.tsd-has-type-parameter > .tsd-kind-icon:before {
+    background-position: 0px -85px;
+}
+.tsd-kind-interface.tsd-has-type-parameter.tsd-is-protected
+    > .tsd-kind-icon:before {
+    background-position: -17px -85px;
+}
+.tsd-kind-interface.tsd-has-type-parameter.tsd-is-private
+    > .tsd-kind-icon:before {
+    background-position: -34px -85px;
+}
+
+.tsd-kind-namespace > .tsd-kind-icon:before {
+    background-position: 0px -102px;
+}
+.tsd-kind-namespace.tsd-is-protected > .tsd-kind-icon:before {
+    background-position: -17px -102px;
+}
+.tsd-kind-namespace.tsd-is-private > .tsd-kind-icon:before {
+    background-position: -34px -102px;
+}
+
+.tsd-kind-module > .tsd-kind-icon:before {
+    background-position: 0px -102px;
+}
+.tsd-kind-module.tsd-is-protected > .tsd-kind-icon:before {
+    background-position: -17px -102px;
+}
+.tsd-kind-module.tsd-is-private > .tsd-kind-icon:before {
+    background-position: -34px -102px;
+}
+
+.tsd-kind-enum > .tsd-kind-icon:before {
+    background-position: 0px -119px;
+}
+.tsd-kind-enum.tsd-is-protected > .tsd-kind-icon:before {
+    background-position: -17px -119px;
+}
+.tsd-kind-enum.tsd-is-private > .tsd-kind-icon:before {
+    background-position: -34px -119px;
+}
+
+.tsd-kind-enum-member > .tsd-kind-icon:before {
+    background-position: 0px -136px;
+}
+.tsd-kind-enum-member.tsd-is-protected > .tsd-kind-icon:before {
+    background-position: -17px -136px;
+}
+.tsd-kind-enum-member.tsd-is-private > .tsd-kind-icon:before {
+    background-position: -34px -136px;
+}
+
+.tsd-kind-signature > .tsd-kind-icon:before {
+    background-position: 0px -153px;
+}
+.tsd-kind-signature.tsd-is-protected > .tsd-kind-icon:before {
+    background-position: -17px -153px;
+}
+.tsd-kind-signature.tsd-is-private > .tsd-kind-icon:before {
+    background-position: -34px -153px;
+}
+
+.tsd-kind-type-alias > .tsd-kind-icon:before {
+    background-position: 0px -170px;
+}
+.tsd-kind-type-alias.tsd-is-protected > .tsd-kind-icon:before {
+    background-position: -17px -170px;
+}
+.tsd-kind-type-alias.tsd-is-private > .tsd-kind-icon:before {
+    background-position: -34px -170px;
+}
+
+.tsd-kind-type-alias.tsd-has-type-parameter > .tsd-kind-icon:before {
+    background-position: 0px -187px;
+}
+.tsd-kind-type-alias.tsd-has-type-parameter.tsd-is-protected
+    > .tsd-kind-icon:before {
+    background-position: -17px -187px;
+}
+.tsd-kind-type-alias.tsd-has-type-parameter.tsd-is-private
+    > .tsd-kind-icon:before {
+    background-position: -34px -187px;
+}
+
+.tsd-kind-variable > .tsd-kind-icon:before {
+    background-position: -136px -0px;
+}
+.tsd-kind-variable.tsd-is-protected > .tsd-kind-icon:before {
+    background-position: -153px -0px;
+}
+.tsd-kind-variable.tsd-is-private > .tsd-kind-icon:before {
+    background-position: -119px -0px;
+}
+.tsd-kind-variable.tsd-parent-kind-class > .tsd-kind-icon:before {
+    background-position: -51px -0px;
+}
+.tsd-kind-variable.tsd-parent-kind-class.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -68px -0px;
+}
+.tsd-kind-variable.tsd-parent-kind-class.tsd-is-protected
+    > .tsd-kind-icon:before {
+    background-position: -85px -0px;
+}
+.tsd-kind-variable.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -102px -0px;
+}
+.tsd-kind-variable.tsd-parent-kind-class.tsd-is-private
+    > .tsd-kind-icon:before {
+    background-position: -119px -0px;
+}
+.tsd-kind-variable.tsd-parent-kind-enum > .tsd-kind-icon:before {
+    background-position: -170px -0px;
+}
+.tsd-kind-variable.tsd-parent-kind-enum.tsd-is-protected
+    > .tsd-kind-icon:before {
+    background-position: -187px -0px;
+}
+.tsd-kind-variable.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before {
+    background-position: -119px -0px;
+}
+.tsd-kind-variable.tsd-parent-kind-interface > .tsd-kind-icon:before {
+    background-position: -204px -0px;
+}
+.tsd-kind-variable.tsd-parent-kind-interface.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -221px -0px;
+}
+
+.tsd-kind-property > .tsd-kind-icon:before {
+    background-position: -136px -0px;
+}
+.tsd-kind-property.tsd-is-protected > .tsd-kind-icon:before {
+    background-position: -153px -0px;
+}
+.tsd-kind-property.tsd-is-private > .tsd-kind-icon:before {
+    background-position: -119px -0px;
+}
+.tsd-kind-property.tsd-parent-kind-class > .tsd-kind-icon:before {
+    background-position: -51px -0px;
+}
+.tsd-kind-property.tsd-parent-kind-class.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -68px -0px;
+}
+.tsd-kind-property.tsd-parent-kind-class.tsd-is-protected
+    > .tsd-kind-icon:before {
+    background-position: -85px -0px;
+}
+.tsd-kind-property.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -102px -0px;
+}
+.tsd-kind-property.tsd-parent-kind-class.tsd-is-private
+    > .tsd-kind-icon:before {
+    background-position: -119px -0px;
+}
+.tsd-kind-property.tsd-parent-kind-enum > .tsd-kind-icon:before {
+    background-position: -170px -0px;
+}
+.tsd-kind-property.tsd-parent-kind-enum.tsd-is-protected
+    > .tsd-kind-icon:before {
+    background-position: -187px -0px;
+}
+.tsd-kind-property.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before {
+    background-position: -119px -0px;
+}
+.tsd-kind-property.tsd-parent-kind-interface > .tsd-kind-icon:before {
+    background-position: -204px -0px;
+}
+.tsd-kind-property.tsd-parent-kind-interface.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -221px -0px;
+}
+
+.tsd-kind-get-signature > .tsd-kind-icon:before {
+    background-position: -136px -17px;
+}
+.tsd-kind-get-signature.tsd-is-protected > .tsd-kind-icon:before {
+    background-position: -153px -17px;
+}
+.tsd-kind-get-signature.tsd-is-private > .tsd-kind-icon:before {
+    background-position: -119px -17px;
+}
+.tsd-kind-get-signature.tsd-parent-kind-class > .tsd-kind-icon:before {
+    background-position: -51px -17px;
+}
+.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -68px -17px;
+}
+.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-protected
+    > .tsd-kind-icon:before {
+    background-position: -85px -17px;
+}
+.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -102px -17px;
+}
+.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-private
+    > .tsd-kind-icon:before {
+    background-position: -119px -17px;
+}
+.tsd-kind-get-signature.tsd-parent-kind-enum > .tsd-kind-icon:before {
+    background-position: -170px -17px;
+}
+.tsd-kind-get-signature.tsd-parent-kind-enum.tsd-is-protected
+    > .tsd-kind-icon:before {
+    background-position: -187px -17px;
+}
+.tsd-kind-get-signature.tsd-parent-kind-enum.tsd-is-private
+    > .tsd-kind-icon:before {
+    background-position: -119px -17px;
+}
+.tsd-kind-get-signature.tsd-parent-kind-interface > .tsd-kind-icon:before {
+    background-position: -204px -17px;
+}
+.tsd-kind-get-signature.tsd-parent-kind-interface.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -221px -17px;
+}
+
+.tsd-kind-set-signature > .tsd-kind-icon:before {
+    background-position: -136px -34px;
+}
+.tsd-kind-set-signature.tsd-is-protected > .tsd-kind-icon:before {
+    background-position: -153px -34px;
+}
+.tsd-kind-set-signature.tsd-is-private > .tsd-kind-icon:before {
+    background-position: -119px -34px;
+}
+.tsd-kind-set-signature.tsd-parent-kind-class > .tsd-kind-icon:before {
+    background-position: -51px -34px;
+}
+.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -68px -34px;
+}
+.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-protected
+    > .tsd-kind-icon:before {
+    background-position: -85px -34px;
+}
+.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -102px -34px;
+}
+.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-private
+    > .tsd-kind-icon:before {
+    background-position: -119px -34px;
+}
+.tsd-kind-set-signature.tsd-parent-kind-enum > .tsd-kind-icon:before {
+    background-position: -170px -34px;
+}
+.tsd-kind-set-signature.tsd-parent-kind-enum.tsd-is-protected
+    > .tsd-kind-icon:before {
+    background-position: -187px -34px;
+}
+.tsd-kind-set-signature.tsd-parent-kind-enum.tsd-is-private
+    > .tsd-kind-icon:before {
+    background-position: -119px -34px;
+}
+.tsd-kind-set-signature.tsd-parent-kind-interface > .tsd-kind-icon:before {
+    background-position: -204px -34px;
+}
+.tsd-kind-set-signature.tsd-parent-kind-interface.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -221px -34px;
+}
+
+.tsd-kind-accessor > .tsd-kind-icon:before {
+    background-position: -136px -51px;
+}
+.tsd-kind-accessor.tsd-is-protected > .tsd-kind-icon:before {
+    background-position: -153px -51px;
+}
+.tsd-kind-accessor.tsd-is-private > .tsd-kind-icon:before {
+    background-position: -119px -51px;
+}
+.tsd-kind-accessor.tsd-parent-kind-class > .tsd-kind-icon:before {
+    background-position: -51px -51px;
+}
+.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -68px -51px;
+}
+.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-protected
+    > .tsd-kind-icon:before {
+    background-position: -85px -51px;
+}
+.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -102px -51px;
+}
+.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-private
+    > .tsd-kind-icon:before {
+    background-position: -119px -51px;
+}
+.tsd-kind-accessor.tsd-parent-kind-enum > .tsd-kind-icon:before {
+    background-position: -170px -51px;
+}
+.tsd-kind-accessor.tsd-parent-kind-enum.tsd-is-protected
+    > .tsd-kind-icon:before {
+    background-position: -187px -51px;
+}
+.tsd-kind-accessor.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before {
+    background-position: -119px -51px;
+}
+.tsd-kind-accessor.tsd-parent-kind-interface > .tsd-kind-icon:before {
+    background-position: -204px -51px;
+}
+.tsd-kind-accessor.tsd-parent-kind-interface.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -221px -51px;
+}
+
+.tsd-kind-function > .tsd-kind-icon:before {
+    background-position: -136px -68px;
+}
+.tsd-kind-function.tsd-is-protected > .tsd-kind-icon:before {
+    background-position: -153px -68px;
+}
+.tsd-kind-function.tsd-is-private > .tsd-kind-icon:before {
+    background-position: -119px -68px;
+}
+.tsd-kind-function.tsd-parent-kind-class > .tsd-kind-icon:before {
+    background-position: -51px -68px;
+}
+.tsd-kind-function.tsd-parent-kind-class.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -68px -68px;
+}
+.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected
+    > .tsd-kind-icon:before {
+    background-position: -85px -68px;
+}
+.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -102px -68px;
+}
+.tsd-kind-function.tsd-parent-kind-class.tsd-is-private
+    > .tsd-kind-icon:before {
+    background-position: -119px -68px;
+}
+.tsd-kind-function.tsd-parent-kind-enum > .tsd-kind-icon:before {
+    background-position: -170px -68px;
+}
+.tsd-kind-function.tsd-parent-kind-enum.tsd-is-protected
+    > .tsd-kind-icon:before {
+    background-position: -187px -68px;
+}
+.tsd-kind-function.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before {
+    background-position: -119px -68px;
+}
+.tsd-kind-function.tsd-parent-kind-interface > .tsd-kind-icon:before {
+    background-position: -204px -68px;
+}
+.tsd-kind-function.tsd-parent-kind-interface.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -221px -68px;
+}
+
+.tsd-kind-method > .tsd-kind-icon:before {
+    background-position: -136px -68px;
+}
+.tsd-kind-method.tsd-is-protected > .tsd-kind-icon:before {
+    background-position: -153px -68px;
+}
+.tsd-kind-method.tsd-is-private > .tsd-kind-icon:before {
+    background-position: -119px -68px;
+}
+.tsd-kind-method.tsd-parent-kind-class > .tsd-kind-icon:before {
+    background-position: -51px -68px;
+}
+.tsd-kind-method.tsd-parent-kind-class.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -68px -68px;
+}
+.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected
+    > .tsd-kind-icon:before {
+    background-position: -85px -68px;
+}
+.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -102px -68px;
+}
+.tsd-kind-method.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before {
+    background-position: -119px -68px;
+}
+.tsd-kind-method.tsd-parent-kind-enum > .tsd-kind-icon:before {
+    background-position: -170px -68px;
+}
+.tsd-kind-method.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before {
+    background-position: -187px -68px;
+}
+.tsd-kind-method.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before {
+    background-position: -119px -68px;
+}
+.tsd-kind-method.tsd-parent-kind-interface > .tsd-kind-icon:before {
+    background-position: -204px -68px;
+}
+.tsd-kind-method.tsd-parent-kind-interface.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -221px -68px;
+}
+
+.tsd-kind-call-signature > .tsd-kind-icon:before {
+    background-position: -136px -68px;
+}
+.tsd-kind-call-signature.tsd-is-protected > .tsd-kind-icon:before {
+    background-position: -153px -68px;
+}
+.tsd-kind-call-signature.tsd-is-private > .tsd-kind-icon:before {
+    background-position: -119px -68px;
+}
+.tsd-kind-call-signature.tsd-parent-kind-class > .tsd-kind-icon:before {
+    background-position: -51px -68px;
+}
+.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -68px -68px;
+}
+.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected
+    > .tsd-kind-icon:before {
+    background-position: -85px -68px;
+}
+.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -102px -68px;
+}
+.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-private
+    > .tsd-kind-icon:before {
+    background-position: -119px -68px;
+}
+.tsd-kind-call-signature.tsd-parent-kind-enum > .tsd-kind-icon:before {
+    background-position: -170px -68px;
+}
+.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-protected
+    > .tsd-kind-icon:before {
+    background-position: -187px -68px;
+}
+.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-private
+    > .tsd-kind-icon:before {
+    background-position: -119px -68px;
+}
+.tsd-kind-call-signature.tsd-parent-kind-interface > .tsd-kind-icon:before {
+    background-position: -204px -68px;
+}
+.tsd-kind-call-signature.tsd-parent-kind-interface.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -221px -68px;
+}
+
+.tsd-kind-function.tsd-has-type-parameter > .tsd-kind-icon:before {
+    background-position: -136px -85px;
+}
+.tsd-kind-function.tsd-has-type-parameter.tsd-is-protected
+    > .tsd-kind-icon:before {
+    background-position: -153px -85px;
+}
+.tsd-kind-function.tsd-has-type-parameter.tsd-is-private
+    > .tsd-kind-icon:before {
+    background-position: -119px -85px;
+}
+.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class
+    > .tsd-kind-icon:before {
+    background-position: -51px -85px;
+}
+.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -68px -85px;
+}
+.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected
+    > .tsd-kind-icon:before {
+    background-position: -85px -85px;
+}
+.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -102px -85px;
+}
+.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-private
+    > .tsd-kind-icon:before {
+    background-position: -119px -85px;
+}
+.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-enum
+    > .tsd-kind-icon:before {
+    background-position: -170px -85px;
+}
+.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-protected
+    > .tsd-kind-icon:before {
+    background-position: -187px -85px;
+}
+.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-private
+    > .tsd-kind-icon:before {
+    background-position: -119px -85px;
+}
+.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-interface
+    > .tsd-kind-icon:before {
+    background-position: -204px -85px;
+}
+.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-interface.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -221px -85px;
+}
+
+.tsd-kind-method.tsd-has-type-parameter > .tsd-kind-icon:before {
+    background-position: -136px -85px;
+}
+.tsd-kind-method.tsd-has-type-parameter.tsd-is-protected
+    > .tsd-kind-icon:before {
+    background-position: -153px -85px;
+}
+.tsd-kind-method.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before {
+    background-position: -119px -85px;
+}
+.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class
+    > .tsd-kind-icon:before {
+    background-position: -51px -85px;
+}
+.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -68px -85px;
+}
+.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected
+    > .tsd-kind-icon:before {
+    background-position: -85px -85px;
+}
+.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -102px -85px;
+}
+.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-private
+    > .tsd-kind-icon:before {
+    background-position: -119px -85px;
+}
+.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-enum
+    > .tsd-kind-icon:before {
+    background-position: -170px -85px;
+}
+.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-protected
+    > .tsd-kind-icon:before {
+    background-position: -187px -85px;
+}
+.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-private
+    > .tsd-kind-icon:before {
+    background-position: -119px -85px;
+}
+.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-interface
+    > .tsd-kind-icon:before {
+    background-position: -204px -85px;
+}
+.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-interface.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -221px -85px;
+}
+
+.tsd-kind-constructor > .tsd-kind-icon:before {
+    background-position: -136px -102px;
+}
+.tsd-kind-constructor.tsd-is-protected > .tsd-kind-icon:before {
+    background-position: -153px -102px;
+}
+.tsd-kind-constructor.tsd-is-private > .tsd-kind-icon:before {
+    background-position: -119px -102px;
+}
+.tsd-kind-constructor.tsd-parent-kind-class > .tsd-kind-icon:before {
+    background-position: -51px -102px;
+}
+.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -68px -102px;
+}
+.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-protected
+    > .tsd-kind-icon:before {
+    background-position: -85px -102px;
+}
+.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -102px -102px;
+}
+.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-private
+    > .tsd-kind-icon:before {
+    background-position: -119px -102px;
+}
+.tsd-kind-constructor.tsd-parent-kind-enum > .tsd-kind-icon:before {
+    background-position: -170px -102px;
+}
+.tsd-kind-constructor.tsd-parent-kind-enum.tsd-is-protected
+    > .tsd-kind-icon:before {
+    background-position: -187px -102px;
+}
+.tsd-kind-constructor.tsd-parent-kind-enum.tsd-is-private
+    > .tsd-kind-icon:before {
+    background-position: -119px -102px;
+}
+.tsd-kind-constructor.tsd-parent-kind-interface > .tsd-kind-icon:before {
+    background-position: -204px -102px;
+}
+.tsd-kind-constructor.tsd-parent-kind-interface.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -221px -102px;
+}
+
+.tsd-kind-constructor-signature > .tsd-kind-icon:before {
+    background-position: -136px -102px;
+}
+.tsd-kind-constructor-signature.tsd-is-protected > .tsd-kind-icon:before {
+    background-position: -153px -102px;
+}
+.tsd-kind-constructor-signature.tsd-is-private > .tsd-kind-icon:before {
+    background-position: -119px -102px;
+}
+.tsd-kind-constructor-signature.tsd-parent-kind-class > .tsd-kind-icon:before {
+    background-position: -51px -102px;
+}
+.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -68px -102px;
+}
+.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-protected
+    > .tsd-kind-icon:before {
+    background-position: -85px -102px;
+}
+.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -102px -102px;
+}
+.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-private
+    > .tsd-kind-icon:before {
+    background-position: -119px -102px;
+}
+.tsd-kind-constructor-signature.tsd-parent-kind-enum > .tsd-kind-icon:before {
+    background-position: -170px -102px;
+}
+.tsd-kind-constructor-signature.tsd-parent-kind-enum.tsd-is-protected
+    > .tsd-kind-icon:before {
+    background-position: -187px -102px;
+}
+.tsd-kind-constructor-signature.tsd-parent-kind-enum.tsd-is-private
+    > .tsd-kind-icon:before {
+    background-position: -119px -102px;
+}
+.tsd-kind-constructor-signature.tsd-parent-kind-interface
+    > .tsd-kind-icon:before {
+    background-position: -204px -102px;
+}
+.tsd-kind-constructor-signature.tsd-parent-kind-interface.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -221px -102px;
+}
+
+.tsd-kind-index-signature > .tsd-kind-icon:before {
+    background-position: -136px -119px;
+}
+.tsd-kind-index-signature.tsd-is-protected > .tsd-kind-icon:before {
+    background-position: -153px -119px;
+}
+.tsd-kind-index-signature.tsd-is-private > .tsd-kind-icon:before {
+    background-position: -119px -119px;
+}
+.tsd-kind-index-signature.tsd-parent-kind-class > .tsd-kind-icon:before {
+    background-position: -51px -119px;
+}
+.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -68px -119px;
+}
+.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-protected
+    > .tsd-kind-icon:before {
+    background-position: -85px -119px;
+}
+.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -102px -119px;
+}
+.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-private
+    > .tsd-kind-icon:before {
+    background-position: -119px -119px;
+}
+.tsd-kind-index-signature.tsd-parent-kind-enum > .tsd-kind-icon:before {
+    background-position: -170px -119px;
+}
+.tsd-kind-index-signature.tsd-parent-kind-enum.tsd-is-protected
+    > .tsd-kind-icon:before {
+    background-position: -187px -119px;
+}
+.tsd-kind-index-signature.tsd-parent-kind-enum.tsd-is-private
+    > .tsd-kind-icon:before {
+    background-position: -119px -119px;
+}
+.tsd-kind-index-signature.tsd-parent-kind-interface > .tsd-kind-icon:before {
+    background-position: -204px -119px;
+}
+.tsd-kind-index-signature.tsd-parent-kind-interface.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -221px -119px;
+}
+
+.tsd-kind-event > .tsd-kind-icon:before {
+    background-position: -136px -136px;
+}
+.tsd-kind-event.tsd-is-protected > .tsd-kind-icon:before {
+    background-position: -153px -136px;
+}
+.tsd-kind-event.tsd-is-private > .tsd-kind-icon:before {
+    background-position: -119px -136px;
+}
+.tsd-kind-event.tsd-parent-kind-class > .tsd-kind-icon:before {
+    background-position: -51px -136px;
+}
+.tsd-kind-event.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before {
+    background-position: -68px -136px;
+}
+.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before {
+    background-position: -85px -136px;
+}
+.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -102px -136px;
+}
+.tsd-kind-event.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before {
+    background-position: -119px -136px;
+}
+.tsd-kind-event.tsd-parent-kind-enum > .tsd-kind-icon:before {
+    background-position: -170px -136px;
+}
+.tsd-kind-event.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before {
+    background-position: -187px -136px;
+}
+.tsd-kind-event.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before {
+    background-position: -119px -136px;
+}
+.tsd-kind-event.tsd-parent-kind-interface > .tsd-kind-icon:before {
+    background-position: -204px -136px;
+}
+.tsd-kind-event.tsd-parent-kind-interface.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -221px -136px;
+}
+
+.tsd-is-static > .tsd-kind-icon:before {
+    background-position: -136px -153px;
+}
+.tsd-is-static.tsd-is-protected > .tsd-kind-icon:before {
+    background-position: -153px -153px;
+}
+.tsd-is-static.tsd-is-private > .tsd-kind-icon:before {
+    background-position: -119px -153px;
+}
+.tsd-is-static.tsd-parent-kind-class > .tsd-kind-icon:before {
+    background-position: -51px -153px;
+}
+.tsd-is-static.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before {
+    background-position: -68px -153px;
+}
+.tsd-is-static.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before {
+    background-position: -85px -153px;
+}
+.tsd-is-static.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -102px -153px;
+}
+.tsd-is-static.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before {
+    background-position: -119px -153px;
+}
+.tsd-is-static.tsd-parent-kind-enum > .tsd-kind-icon:before {
+    background-position: -170px -153px;
+}
+.tsd-is-static.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before {
+    background-position: -187px -153px;
+}
+.tsd-is-static.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before {
+    background-position: -119px -153px;
+}
+.tsd-is-static.tsd-parent-kind-interface > .tsd-kind-icon:before {
+    background-position: -204px -153px;
+}
+.tsd-is-static.tsd-parent-kind-interface.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -221px -153px;
+}
+
+.tsd-is-static.tsd-kind-function > .tsd-kind-icon:before {
+    background-position: -136px -170px;
+}
+.tsd-is-static.tsd-kind-function.tsd-is-protected > .tsd-kind-icon:before {
+    background-position: -153px -170px;
+}
+.tsd-is-static.tsd-kind-function.tsd-is-private > .tsd-kind-icon:before {
+    background-position: -119px -170px;
+}
+.tsd-is-static.tsd-kind-function.tsd-parent-kind-class > .tsd-kind-icon:before {
+    background-position: -51px -170px;
+}
+.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -68px -170px;
+}
+.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected
+    > .tsd-kind-icon:before {
+    background-position: -85px -170px;
+}
+.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -102px -170px;
+}
+.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-private
+    > .tsd-kind-icon:before {
+    background-position: -119px -170px;
+}
+.tsd-is-static.tsd-kind-function.tsd-parent-kind-enum > .tsd-kind-icon:before {
+    background-position: -170px -170px;
+}
+.tsd-is-static.tsd-kind-function.tsd-parent-kind-enum.tsd-is-protected
+    > .tsd-kind-icon:before {
+    background-position: -187px -170px;
+}
+.tsd-is-static.tsd-kind-function.tsd-parent-kind-enum.tsd-is-private
+    > .tsd-kind-icon:before {
+    background-position: -119px -170px;
+}
+.tsd-is-static.tsd-kind-function.tsd-parent-kind-interface
+    > .tsd-kind-icon:before {
+    background-position: -204px -170px;
+}
+.tsd-is-static.tsd-kind-function.tsd-parent-kind-interface.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -221px -170px;
+}
+
+.tsd-is-static.tsd-kind-method > .tsd-kind-icon:before {
+    background-position: -136px -170px;
+}
+.tsd-is-static.tsd-kind-method.tsd-is-protected > .tsd-kind-icon:before {
+    background-position: -153px -170px;
+}
+.tsd-is-static.tsd-kind-method.tsd-is-private > .tsd-kind-icon:before {
+    background-position: -119px -170px;
+}
+.tsd-is-static.tsd-kind-method.tsd-parent-kind-class > .tsd-kind-icon:before {
+    background-position: -51px -170px;
+}
+.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -68px -170px;
+}
+.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected
+    > .tsd-kind-icon:before {
+    background-position: -85px -170px;
+}
+.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -102px -170px;
+}
+.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-private
+    > .tsd-kind-icon:before {
+    background-position: -119px -170px;
+}
+.tsd-is-static.tsd-kind-method.tsd-parent-kind-enum > .tsd-kind-icon:before {
+    background-position: -170px -170px;
+}
+.tsd-is-static.tsd-kind-method.tsd-parent-kind-enum.tsd-is-protected
+    > .tsd-kind-icon:before {
+    background-position: -187px -170px;
+}
+.tsd-is-static.tsd-kind-method.tsd-parent-kind-enum.tsd-is-private
+    > .tsd-kind-icon:before {
+    background-position: -119px -170px;
+}
+.tsd-is-static.tsd-kind-method.tsd-parent-kind-interface
+    > .tsd-kind-icon:before {
+    background-position: -204px -170px;
+}
+.tsd-is-static.tsd-kind-method.tsd-parent-kind-interface.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -221px -170px;
+}
+
+.tsd-is-static.tsd-kind-call-signature > .tsd-kind-icon:before {
+    background-position: -136px -170px;
+}
+.tsd-is-static.tsd-kind-call-signature.tsd-is-protected
+    > .tsd-kind-icon:before {
+    background-position: -153px -170px;
+}
+.tsd-is-static.tsd-kind-call-signature.tsd-is-private > .tsd-kind-icon:before {
+    background-position: -119px -170px;
+}
+.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class
+    > .tsd-kind-icon:before {
+    background-position: -51px -170px;
+}
+.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -68px -170px;
+}
+.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected
+    > .tsd-kind-icon:before {
+    background-position: -85px -170px;
+}
+.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -102px -170px;
+}
+.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-private
+    > .tsd-kind-icon:before {
+    background-position: -119px -170px;
+}
+.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-enum
+    > .tsd-kind-icon:before {
+    background-position: -170px -170px;
+}
+.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-protected
+    > .tsd-kind-icon:before {
+    background-position: -187px -170px;
+}
+.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-private
+    > .tsd-kind-icon:before {
+    background-position: -119px -170px;
+}
+.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-interface
+    > .tsd-kind-icon:before {
+    background-position: -204px -170px;
+}
+.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-interface.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -221px -170px;
+}
+
+.tsd-is-static.tsd-kind-event > .tsd-kind-icon:before {
+    background-position: -136px -187px;
+}
+.tsd-is-static.tsd-kind-event.tsd-is-protected > .tsd-kind-icon:before {
+    background-position: -153px -187px;
+}
+.tsd-is-static.tsd-kind-event.tsd-is-private > .tsd-kind-icon:before {
+    background-position: -119px -187px;
+}
+.tsd-is-static.tsd-kind-event.tsd-parent-kind-class > .tsd-kind-icon:before {
+    background-position: -51px -187px;
+}
+.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -68px -187px;
+}
+.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected
+    > .tsd-kind-icon:before {
+    background-position: -85px -187px;
+}
+.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -102px -187px;
+}
+.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-private
+    > .tsd-kind-icon:before {
+    background-position: -119px -187px;
+}
+.tsd-is-static.tsd-kind-event.tsd-parent-kind-enum > .tsd-kind-icon:before {
+    background-position: -170px -187px;
+}
+.tsd-is-static.tsd-kind-event.tsd-parent-kind-enum.tsd-is-protected
+    > .tsd-kind-icon:before {
+    background-position: -187px -187px;
+}
+.tsd-is-static.tsd-kind-event.tsd-parent-kind-enum.tsd-is-private
+    > .tsd-kind-icon:before {
+    background-position: -119px -187px;
+}
+.tsd-is-static.tsd-kind-event.tsd-parent-kind-interface
+    > .tsd-kind-icon:before {
+    background-position: -204px -187px;
+}
+.tsd-is-static.tsd-kind-event.tsd-parent-kind-interface.tsd-is-inherited
+    > .tsd-kind-icon:before {
+    background-position: -221px -187px;
+}
diff --git a/v2/assets/icons.png b/v2/assets/icons.png
new file mode 100644
index 00000000..3836d5fe
Binary files /dev/null and b/v2/assets/icons.png differ
diff --git a/v2/assets/icons@2x.png b/v2/assets/icons@2x.png
new file mode 100644
index 00000000..5a209e2f
Binary files /dev/null and b/v2/assets/icons@2x.png differ
diff --git a/v2/assets/main.js b/v2/assets/main.js
new file mode 100644
index 00000000..bd45452d
--- /dev/null
+++ b/v2/assets/main.js
@@ -0,0 +1,52 @@
+(()=>{var Ce=Object.create;var ue=Object.defineProperty;var Pe=Object.getOwnPropertyDescriptor;var Oe=Object.getOwnPropertyNames;var Re=Object.getPrototypeOf,_e=Object.prototype.hasOwnProperty;var Me=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var De=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Oe(e))!_e.call(t,i)&&i!==r&&ue(t,i,{get:()=>e[i],enumerable:!(n=Pe(e,i))||n.enumerable});return t};var Fe=(t,e,r)=>(r=t!=null?Ce(Re(t)):{},De(e||!t||!t.__esModule?ue(r,"default",{value:t,enumerable:!0}):r,t));var pe=Me((de,fe)=>{(function(){var t=function(e){var r=new t.Builder;return r.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),r.searchPipeline.add(t.stemmer),e.call(r,r),r.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(r){e.console&&console.warn&&console.warn(r)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var r=Object.create(null),n=Object.keys(e),i=0;i0){var h=t.utils.clone(r)||{};h.position=[a,u],h.index=s.length,s.push(new t.Token(n.slice(a,o),h))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,r){r in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+r),e.label=r,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var r=e.label&&e.label in this.registeredFunctions;r||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index.
+`,e)},t.Pipeline.load=function(e){var r=new t.Pipeline;return e.forEach(function(n){var i=t.Pipeline.registeredFunctions[n];if(i)r.add(i);else throw new Error("Cannot load unregistered function: "+n)}),r},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(r){t.Pipeline.warnIfFunctionNotRegistered(r),this._stack.push(r)},this)},t.Pipeline.prototype.after=function(e,r){t.Pipeline.warnIfFunctionNotRegistered(r);var n=this._stack.indexOf(e);if(n==-1)throw new Error("Cannot find existingFn");n=n+1,this._stack.splice(n,0,r)},t.Pipeline.prototype.before=function(e,r){t.Pipeline.warnIfFunctionNotRegistered(r);var n=this._stack.indexOf(e);if(n==-1)throw new Error("Cannot find existingFn");this._stack.splice(n,0,r)},t.Pipeline.prototype.remove=function(e){var r=this._stack.indexOf(e);r!=-1&&this._stack.splice(r,1)},t.Pipeline.prototype.run=function(e){for(var r=this._stack.length,n=0;n1&&(oe&&(n=s),o!=e);)i=n-r,s=r+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(ol?h+=2:a==l&&(r+=n[u+1]*i[h+1],u+=2,h+=2);return r},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),r=1,n=0;r0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}if(s.str.length==0&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}s.str.length==1&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var h=s.str.charAt(0),f=s.str.charAt(1),p;f in s.node.edges?p=s.node.edges[f]:(p=new t.TokenSet,s.node.edges[f]=p),s.str.length==1&&(p.final=!0),i.push({node:p,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return n},t.TokenSet.fromString=function(e){for(var r=new t.TokenSet,n=r,i=0,s=e.length;i=e;r--){var n=this.uncheckedNodes[r],i=n.child.toString();i in this.minimizedNodes?n.parent.edges[n.char]=this.minimizedNodes[i]:(n.child._str=i,this.minimizedNodes[i]=n.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(r){var n=new t.QueryParser(e,r);n.parse()})},t.Index.prototype.query=function(e){for(var r=new t.Query(this.fields),n=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),l=0;l1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,r){var n=e[this._ref],i=Object.keys(this._fields);this._documents[n]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,r;do e=this.next(),r=e.charCodeAt(0);while(r>47&&r<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var r=e.next();if(r==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(r.charCodeAt(0)==92){e.escapeCharacter();continue}if(r==":")return t.QueryLexer.lexField;if(r=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(r=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(r=="+"&&e.width()===1||r=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(r.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,r){this.lexer=new t.QueryLexer(e),this.query=r,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var r=e.peekLexeme();if(r!=null)switch(r.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var n="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(n+=" with value '"+r.str+"'"),new t.QueryParseError(n,r.start,r.end)}},t.QueryParser.parsePresence=function(e){var r=e.consumeLexeme();if(r!=null){switch(r.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+r.str+"'";throw new t.QueryParseError(n,r.start,r.end)}var i=e.peekLexeme();if(i==null){var n="expecting term or field, found nothing";throw new t.QueryParseError(n,r.start,r.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var n="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(n,i.start,i.end)}}},t.QueryParser.parseField=function(e){var r=e.consumeLexeme();if(r!=null){if(e.query.allFields.indexOf(r.str)==-1){var n=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+r.str+"', possible fields: "+n;throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.fields=[r.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,r.start,r.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var r=e.consumeLexeme();if(r!=null){e.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var n=e.peekLexeme();if(n==null){e.nextClause();return}switch(n.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+n.type+"'";throw new t.QueryParseError(i,n.start,n.end)}}},t.QueryParser.parseEditDistance=function(e){var r=e.consumeLexeme();if(r!=null){var n=parseInt(r.str,10);if(isNaN(n)){var i="edit distance must be numeric";throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.editDistance=n;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var r=e.consumeLexeme();if(r!=null){var n=parseInt(r.str,10);if(isNaN(n)){var i="boost must be numeric";throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.boost=n;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,r){typeof define=="function"&&define.amd?define(r):typeof de=="object"?fe.exports=r():e.lunr=r()}(this,function(){return t})})()});var ce=[];function N(t,e){ce.push({selector:e,constructor:t})}var Y=class{constructor(){this.createComponents(document.body)}createComponents(e){ce.forEach(r=>{e.querySelectorAll(r.selector).forEach(n=>{n.dataset.hasInstance||(new r.constructor({el:n}),n.dataset.hasInstance=String(!0))})})}};var k=class{constructor(e){this.el=e.el}};var J=class{constructor(){this.listeners={}}addEventListener(e,r){e in this.listeners||(this.listeners[e]=[]),this.listeners[e].push(r)}removeEventListener(e,r){if(!(e in this.listeners))return;let n=this.listeners[e];for(let i=0,s=n.length;i{let r=Date.now();return(...n)=>{r+e-Date.now()<0&&(t(...n),r=Date.now())}};var ie=class extends J{constructor(){super();this.scrollTop=0;this.lastY=0;this.width=0;this.height=0;this.showToolbar=!0;this.toolbar=document.querySelector(".tsd-page-toolbar"),this.secondaryNav=document.querySelector(".tsd-navigation.secondary"),window.addEventListener("scroll",ne(()=>this.onScroll(),10)),window.addEventListener("resize",ne(()=>this.onResize(),10)),this.onResize(),this.onScroll()}triggerResize(){let r=new CustomEvent("resize",{detail:{width:this.width,height:this.height}});this.dispatchEvent(r)}onResize(){this.width=window.innerWidth||0,this.height=window.innerHeight||0;let r=new CustomEvent("resize",{detail:{width:this.width,height:this.height}});this.dispatchEvent(r)}onScroll(){this.scrollTop=window.scrollY||0;let r=new CustomEvent("scroll",{detail:{scrollTop:this.scrollTop}});this.dispatchEvent(r),this.hideShowToolbar()}hideShowToolbar(){var n;let r=this.showToolbar;this.showToolbar=this.lastY>=this.scrollTop||this.scrollTop<=0,r!==this.showToolbar&&(this.toolbar.classList.toggle("tsd-page-toolbar--hide"),(n=this.secondaryNav)==null||n.classList.toggle("tsd-navigation--toolbar-hide")),this.lastY=this.scrollTop}},Q=ie;Q.instance=new ie;var X=class extends k{constructor(r){super(r);this.anchors=[];this.index=-1;Q.instance.addEventListener("resize",()=>this.onResize()),Q.instance.addEventListener("scroll",n=>this.onScroll(n)),this.createAnchors()}createAnchors(){let r=window.location.href;r.indexOf("#")!=-1&&(r=r.substr(0,r.indexOf("#"))),this.el.querySelectorAll("a").forEach(n=>{let i=n.href;if(i.indexOf("#")==-1||i.substr(0,r.length)!=r)return;let s=i.substr(i.indexOf("#")+1),o=document.querySelector("a.tsd-anchor[name="+s+"]"),a=n.parentNode;!o||!a||this.anchors.push({link:a,anchor:o,position:0})}),this.onResize()}onResize(){let r;for(let i=0,s=this.anchors.length;ii.position-s.position);let n=new CustomEvent("scroll",{detail:{scrollTop:Q.instance.scrollTop}});this.onScroll(n)}onScroll(r){let n=r.detail.scrollTop+5,i=this.anchors,s=i.length-1,o=this.index;for(;o>-1&&i[o].position>n;)o-=1;for(;o-1&&this.anchors[this.index].link.classList.remove("focus"),this.index=o,this.index>-1&&this.anchors[this.index].link.classList.add("focus"))}};var he=(t,e=100)=>{let r;return(...n)=>{clearTimeout(r),r=setTimeout(()=>t(n),e)}};var ge=Fe(pe());function ye(){let t=document.getElementById("tsd-search");if(!t)return;let e=document.getElementById("search-script");t.classList.add("loading"),e&&(e.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),e.addEventListener("load",()=>{t.classList.remove("loading"),t.classList.add("ready")}),window.searchData&&t.classList.remove("loading"));let r=document.querySelector("#tsd-search input"),n=document.querySelector("#tsd-search .results");if(!r||!n)throw new Error("The input field or the result list wrapper was not found");let i=!1;n.addEventListener("mousedown",()=>i=!0),n.addEventListener("mouseup",()=>{i=!1,t.classList.remove("has-focus")}),r.addEventListener("focus",()=>t.classList.add("has-focus")),r.addEventListener("blur",()=>{i||(i=!1,t.classList.remove("has-focus"))});let s={base:t.dataset.base+"/"};Ae(t,n,r,s)}function Ae(t,e,r,n){r.addEventListener("input",he(()=>{He(t,e,r,n)},200));let i=!1;r.addEventListener("keydown",s=>{i=!0,s.key=="Enter"?ze(e,r):s.key=="Escape"?r.blur():s.key=="ArrowUp"?me(e,-1):s.key==="ArrowDown"?me(e,1):i=!1}),r.addEventListener("keypress",s=>{i&&s.preventDefault()}),document.body.addEventListener("keydown",s=>{s.altKey||s.ctrlKey||s.metaKey||!r.matches(":focus")&&s.key==="/"&&(r.focus(),s.preventDefault())})}function Ve(t,e){t.index||window.searchData&&(e.classList.remove("loading"),e.classList.add("ready"),t.data=window.searchData,t.index=ge.Index.load(window.searchData.index))}function He(t,e,r,n){var o,a;if(Ve(n,t),!n.index||!n.data)return;e.textContent="";let i=r.value.trim(),s=i?n.index.search(`*${i}*`):[];for(let l=0;lu.score-l.score);for(let l=0,u=Math.min(10,s.length);l${ve(h.parent,i)}.${f}`);let p=document.createElement("li");p.classList.value=(a=h.classes)!=null?a:"";let E=document.createElement("a");E.href=n.base+h.url,E.classList.add("tsd-kind-icon"),E.innerHTML=f,p.append(E),e.appendChild(p)}}function me(t,e){var n,i;let r=t.querySelector(".current");if(!r)r=t.querySelector(e==1?"li:first-child":"li:last-child"),r&&r.classList.add("current");else{let s=r;if(e===1)do s=(n=s.nextElementSibling)!=null?n:void 0;while(s instanceof HTMLElement&&s.offsetParent==null);else do s=(i=s.previousElementSibling)!=null?i:void 0;while(s instanceof HTMLElement&&s.offsetParent==null);s&&(r.classList.remove("current"),s.classList.add("current"))}}function ze(t,e){let r=t.querySelector(".current");if(r||(r=t.querySelector("li:first-child")),r){let n=r.querySelector("a");n&&(window.location.href=n.href),e.blur()}}function ve(t,e){if(e==="")return t;let r=t.toLocaleLowerCase(),n=e.toLocaleLowerCase(),i=[],s=0,o=r.indexOf(n);for(;o!=-1;)i.push(se(t.substring(s,o)),`${se(t.substring(o,o+n.length))}`),s=o+n.length,o=r.indexOf(n,s);return i.push(se(t.substring(s))),i.join("")}var Ne={"&":"&","<":"<",">":">","'":"'",'"':"""};function se(t){return t.replace(/[&<>"'"]/g,e=>Ne[e])}var oe=class{constructor(e,r){this.signature=e,this.description=r}addClass(e){return this.signature.classList.add(e),this.description.classList.add(e),this}removeClass(e){return this.signature.classList.remove(e),this.description.classList.remove(e),this}},Z=class extends k{constructor(r){super(r);this.groups=[];this.index=-1;this.createGroups(),this.container&&(this.el.classList.add("active"),Array.from(this.el.children).forEach(n=>{n.addEventListener("touchstart",i=>this.onClick(i)),n.addEventListener("click",i=>this.onClick(i))}),this.container.classList.add("active"),this.setIndex(0))}setIndex(r){if(r<0&&(r=0),r>this.groups.length-1&&(r=this.groups.length-1),this.index==r)return;let n=this.groups[r];if(this.index>-1){let i=this.groups[this.index];i.removeClass("current").addClass("fade-out"),n.addClass("current"),n.addClass("fade-in"),Q.instance.triggerResize(),setTimeout(()=>{i.removeClass("fade-out"),n.removeClass("fade-in")},300)}else n.addClass("current"),Q.instance.triggerResize();this.index=r}createGroups(){let r=this.el.children;if(r.length<2)return;this.container=this.el.nextElementSibling;let n=this.container.children;this.groups=[];for(let i=0;i{n.signature===r.currentTarget&&this.setIndex(i)})}};var C="mousedown",Le="mousemove",_="mouseup",K={x:0,y:0},xe=!1,ae=!1,je=!1,A=!1,Ee=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(Ee?"is-mobile":"not-mobile");Ee&&"ontouchstart"in document.documentElement&&(je=!0,C="touchstart",Le="touchmove",_="touchend");document.addEventListener(C,t=>{ae=!0,A=!1;let e=C=="touchstart"?t.targetTouches[0]:t;K.y=e.pageY||0,K.x=e.pageX||0});document.addEventListener(Le,t=>{if(!!ae&&!A){let e=C=="touchstart"?t.targetTouches[0]:t,r=K.x-(e.pageX||0),n=K.y-(e.pageY||0);A=Math.sqrt(r*r+n*n)>10}});document.addEventListener(_,()=>{ae=!1});document.addEventListener("click",t=>{xe&&(t.preventDefault(),t.stopImmediatePropagation(),xe=!1)});var ee=class extends k{constructor(r){super(r);this.className=this.el.dataset.toggle||"",this.el.addEventListener(_,n=>this.onPointerUp(n)),this.el.addEventListener("click",n=>n.preventDefault()),document.addEventListener(C,n=>this.onDocumentPointerDown(n)),document.addEventListener(_,n=>this.onDocumentPointerUp(n))}setActive(r){if(this.active==r)return;this.active=r,document.documentElement.classList.toggle("has-"+this.className,r),this.el.classList.toggle("active",r);let n=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(n),setTimeout(()=>document.documentElement.classList.remove(n),500)}onPointerUp(r){A||(this.setActive(!0),r.preventDefault())}onDocumentPointerDown(r){if(this.active){if(r.target.closest(".col-menu, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(r){if(!A&&this.active&&r.target.closest(".col-menu")){let n=r.target.closest("a");if(n){let i=window.location.href;i.indexOf("#")!=-1&&(i=i.substr(0,i.indexOf("#"))),n.href.substr(0,i.length)==i&&setTimeout(()=>this.setActive(!1),250)}}}};var te=class{constructor(e,r){this.key=e,this.value=r,this.defaultValue=r,this.initialize(),window.localStorage[this.key]&&this.setValue(this.fromLocalStorage(window.localStorage[this.key]))}initialize(){}setValue(e){if(this.value==e)return;let r=this.value;this.value=e,window.localStorage[this.key]=this.toLocalStorage(e),this.handleValueChange(r,e)}},re=class extends te{initialize(){let r=document.querySelector("#tsd-filter-"+this.key);!r||(this.checkbox=r,this.checkbox.addEventListener("change",()=>{this.setValue(this.checkbox.checked)}))}handleValueChange(r,n){!this.checkbox||(this.checkbox.checked=this.value,document.documentElement.classList.toggle("toggle-"+this.key,this.value!=this.defaultValue))}fromLocalStorage(r){return r=="true"}toLocalStorage(r){return r?"true":"false"}},le=class extends te{initialize(){document.documentElement.classList.add("toggle-"+this.key+this.value);let r=document.querySelector("#tsd-filter-"+this.key);if(!r)return;this.select=r;let n=()=>{this.select.classList.add("active")},i=()=>{this.select.classList.remove("active")};this.select.addEventListener(C,n),this.select.addEventListener("mouseover",n),this.select.addEventListener("mouseleave",i),this.select.querySelectorAll("li").forEach(s=>{s.addEventListener(_,o=>{r.classList.remove("active"),this.setValue(o.target.dataset.value||"")})}),document.addEventListener(C,s=>{this.select.contains(s.target)||this.select.classList.remove("active")})}handleValueChange(r,n){this.select.querySelectorAll("li.selected").forEach(o=>{o.classList.remove("selected")});let i=this.select.querySelector('li[data-value="'+n+'"]'),s=this.select.querySelector(".tsd-select-label");i&&s&&(i.classList.add("selected"),s.textContent=i.textContent),document.documentElement.classList.remove("toggle-"+r),document.documentElement.classList.add("toggle-"+n)}fromLocalStorage(r){return r}toLocalStorage(r){return r}},j=class extends k{constructor(r){super(r);this.optionVisibility=new le("visibility","private"),this.optionInherited=new re("inherited",!0),this.optionExternals=new re("externals",!0)}static isSupported(){try{return typeof window.localStorage!="undefined"}catch{return!1}}};function we(t){let e=localStorage.getItem("tsd-theme")||"os";t.value=e,be(e),t.addEventListener("change",()=>{localStorage.setItem("tsd-theme",t.value),be(t.value)})}function be(t){switch(t){case"os":document.body.classList.remove("light","dark");break;case"light":document.body.classList.remove("dark"),document.body.classList.add("light");break;case"dark":document.body.classList.remove("light"),document.body.classList.add("dark");break}}ye();N(X,".menu-highlight");N(Z,".tsd-signatures");N(ee,"a[data-toggle]");j.isSupported()?N(j,"#tsd-filter"):document.documentElement.classList.add("no-filter");var Te=document.getElementById("theme");Te&&we(Te);var Be=new Y;Object.defineProperty(window,"app",{value:Be});})();
+/*!
+ * lunr.Builder
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+/*!
+ * lunr.Index
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+/*!
+ * lunr.Pipeline
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+/*!
+ * lunr.Set
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+/*!
+ * lunr.TokenSet
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+/*!
+ * lunr.Vector
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+/*!
+ * lunr.stemmer
+ * Copyright (C) 2020 Oliver Nightingale
+ * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt
+ */
+/*!
+ * lunr.stopWordFilter
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+/*!
+ * lunr.tokenizer
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+/*!
+ * lunr.trimmer
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+/*!
+ * lunr.utils
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+/**
+ * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9
+ * Copyright (C) 2020 Oliver Nightingale
+ * @license MIT
+ */
diff --git a/v2/assets/search.js b/v2/assets/search.js
new file mode 100644
index 00000000..04798e51
--- /dev/null
+++ b/v2/assets/search.js
@@ -0,0 +1 @@
+window.searchData = JSON.parse("{\"kinds\":{\"2\":\"Module\",\"32\":\"Variable\",\"64\":\"Function\",\"128\":\"Class\",\"256\":\"Interface\",\"512\":\"Constructor\",\"1024\":\"Property\",\"2048\":\"Method\",\"65536\":\"Type literal\",\"262144\":\"Accessor\",\"4194304\":\"Type alias\",\"16777216\":\"Reference\"},\"rows\":[{\"id\":0,\"kind\":2,\"name\":\"index\",\"url\":\"modules/index.html\",\"classes\":\"tsd-kind-module\"},{\"id\":1,\"kind\":64,\"name\":\"createClient\",\"url\":\"modules/index.html#createClient\",\"classes\":\"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter\",\"parent\":\"index\"},{\"id\":2,\"kind\":2,\"name\":\"lib/constants\",\"url\":\"modules/lib_constants.html\",\"classes\":\"tsd-kind-module\"},{\"id\":3,\"kind\":32,\"name\":\"DEFAULT_HEADERS\",\"url\":\"modules/lib_constants.html#DEFAULT_HEADERS\",\"classes\":\"tsd-kind-variable tsd-parent-kind-module\",\"parent\":\"lib/constants\"},{\"id\":4,\"kind\":65536,\"name\":\"__type\",\"url\":\"modules/lib_constants.html#DEFAULT_HEADERS.__type-3\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-variable\",\"parent\":\"lib/constants.DEFAULT_HEADERS\"},{\"id\":5,\"kind\":1024,\"name\":\"X-Client-Info\",\"url\":\"modules/lib_constants.html#DEFAULT_HEADERS.__type-3.X_Client_Info-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"lib/constants.DEFAULT_HEADERS.__type\"},{\"id\":6,\"kind\":32,\"name\":\"DEFAULT_GLOBAL_OPTIONS\",\"url\":\"modules/lib_constants.html#DEFAULT_GLOBAL_OPTIONS\",\"classes\":\"tsd-kind-variable tsd-parent-kind-module\",\"parent\":\"lib/constants\"},{\"id\":7,\"kind\":65536,\"name\":\"__type\",\"url\":\"modules/lib_constants.html#DEFAULT_GLOBAL_OPTIONS.__type-1\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-variable\",\"parent\":\"lib/constants.DEFAULT_GLOBAL_OPTIONS\"},{\"id\":8,\"kind\":1024,\"name\":\"headers\",\"url\":\"modules/lib_constants.html#DEFAULT_GLOBAL_OPTIONS.__type-1.headers\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"lib/constants.DEFAULT_GLOBAL_OPTIONS.__type\"},{\"id\":9,\"kind\":65536,\"name\":\"__type\",\"url\":\"modules/lib_constants.html#DEFAULT_GLOBAL_OPTIONS.__type-1.__type-2\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-literal\",\"parent\":\"lib/constants.DEFAULT_GLOBAL_OPTIONS.__type\"},{\"id\":10,\"kind\":1024,\"name\":\"X-Client-Info\",\"url\":\"modules/lib_constants.html#DEFAULT_GLOBAL_OPTIONS.__type-1.__type-2.X_Client_Info\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"lib/constants.DEFAULT_GLOBAL_OPTIONS.__type.__type\"},{\"id\":11,\"kind\":32,\"name\":\"DEFAULT_DB_OPTIONS\",\"url\":\"modules/lib_constants.html#DEFAULT_DB_OPTIONS\",\"classes\":\"tsd-kind-variable tsd-parent-kind-module\",\"parent\":\"lib/constants\"},{\"id\":12,\"kind\":65536,\"name\":\"__type\",\"url\":\"modules/lib_constants.html#DEFAULT_DB_OPTIONS.__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-variable\",\"parent\":\"lib/constants.DEFAULT_DB_OPTIONS\"},{\"id\":13,\"kind\":1024,\"name\":\"schema\",\"url\":\"modules/lib_constants.html#DEFAULT_DB_OPTIONS.__type.schema\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"lib/constants.DEFAULT_DB_OPTIONS.__type\"},{\"id\":14,\"kind\":32,\"name\":\"DEFAULT_AUTH_OPTIONS\",\"url\":\"modules/lib_constants.html#DEFAULT_AUTH_OPTIONS\",\"classes\":\"tsd-kind-variable tsd-parent-kind-module\",\"parent\":\"lib/constants\"},{\"id\":15,\"kind\":32,\"name\":\"DEFAULT_REALTIME_OPTIONS\",\"url\":\"modules/lib_constants.html#DEFAULT_REALTIME_OPTIONS\",\"classes\":\"tsd-kind-variable tsd-parent-kind-module\",\"parent\":\"lib/constants\"},{\"id\":16,\"kind\":2,\"name\":\"lib/fetch\",\"url\":\"modules/lib_fetch.html\",\"classes\":\"tsd-kind-module\"},{\"id\":17,\"kind\":64,\"name\":\"resolveFetch\",\"url\":\"modules/lib_fetch.html#resolveFetch\",\"classes\":\"tsd-kind-function tsd-parent-kind-module\",\"parent\":\"lib/fetch\"},{\"id\":18,\"kind\":64,\"name\":\"resolveHeadersConstructor\",\"url\":\"modules/lib_fetch.html#resolveHeadersConstructor\",\"classes\":\"tsd-kind-function tsd-parent-kind-module\",\"parent\":\"lib/fetch\"},{\"id\":19,\"kind\":64,\"name\":\"fetchWithAuth\",\"url\":\"modules/lib_fetch.html#fetchWithAuth\",\"classes\":\"tsd-kind-function tsd-parent-kind-module\",\"parent\":\"lib/fetch\"},{\"id\":20,\"kind\":2,\"name\":\"lib/helpers\",\"url\":\"modules/lib_helpers.html\",\"classes\":\"tsd-kind-module\"},{\"id\":21,\"kind\":64,\"name\":\"uuid\",\"url\":\"modules/lib_helpers.html#uuid\",\"classes\":\"tsd-kind-function tsd-parent-kind-module\",\"parent\":\"lib/helpers\"},{\"id\":22,\"kind\":64,\"name\":\"ensureTrailingSlash\",\"url\":\"modules/lib_helpers.html#ensureTrailingSlash\",\"classes\":\"tsd-kind-function tsd-parent-kind-module\",\"parent\":\"lib/helpers\"},{\"id\":23,\"kind\":64,\"name\":\"applySettingDefaults\",\"url\":\"modules/lib_helpers.html#applySettingDefaults\",\"classes\":\"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter\",\"parent\":\"lib/helpers\"},{\"id\":24,\"kind\":64,\"name\":\"isBrowser\",\"url\":\"modules/lib_helpers.html#isBrowser\",\"classes\":\"tsd-kind-function tsd-parent-kind-module\",\"parent\":\"lib/helpers\"},{\"id\":25,\"kind\":2,\"name\":\"lib/types\",\"url\":\"modules/lib_types.html\",\"classes\":\"tsd-kind-module\"},{\"id\":26,\"kind\":256,\"name\":\"SupabaseAuthClientOptions\",\"url\":\"interfaces/lib_types.SupabaseAuthClientOptions.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-module\",\"parent\":\"lib/types\"},{\"id\":27,\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/lib_types.SupabaseAuthClientOptions.html#__type-1\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-interface\",\"parent\":\"lib/types.SupabaseAuthClientOptions\"},{\"id\":28,\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/lib_types.SupabaseAuthClientOptions.html#__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-interface\",\"parent\":\"lib/types.SupabaseAuthClientOptions\"},{\"id\":29,\"kind\":4194304,\"name\":\"Fetch\",\"url\":\"modules/lib_types.html#Fetch\",\"classes\":\"tsd-kind-type-alias tsd-parent-kind-module\",\"parent\":\"lib/types\"},{\"id\":30,\"kind\":4194304,\"name\":\"SupabaseClientOptions\",\"url\":\"modules/lib_types.html#SupabaseClientOptions\",\"classes\":\"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter\",\"parent\":\"lib/types\"},{\"id\":31,\"kind\":65536,\"name\":\"__type\",\"url\":\"modules/lib_types.html#SupabaseClientOptions.__type-5\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-alias\",\"parent\":\"lib/types.SupabaseClientOptions\"},{\"id\":32,\"kind\":1024,\"name\":\"db\",\"url\":\"modules/lib_types.html#SupabaseClientOptions.__type-5.db\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"lib/types.SupabaseClientOptions.__type\"},{\"id\":33,\"kind\":65536,\"name\":\"__type\",\"url\":\"modules/lib_types.html#SupabaseClientOptions.__type-5.__type-7\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-literal\",\"parent\":\"lib/types.SupabaseClientOptions.__type\"},{\"id\":34,\"kind\":1024,\"name\":\"schema\",\"url\":\"modules/lib_types.html#SupabaseClientOptions.__type-5.__type-7.schema\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"lib/types.SupabaseClientOptions.__type.__type\"},{\"id\":35,\"kind\":1024,\"name\":\"auth\",\"url\":\"modules/lib_types.html#SupabaseClientOptions.__type-5.auth\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"lib/types.SupabaseClientOptions.__type\"},{\"id\":36,\"kind\":65536,\"name\":\"__type\",\"url\":\"modules/lib_types.html#SupabaseClientOptions.__type-5.__type-6\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-literal\",\"parent\":\"lib/types.SupabaseClientOptions.__type\"},{\"id\":37,\"kind\":1024,\"name\":\"autoRefreshToken\",\"url\":\"modules/lib_types.html#SupabaseClientOptions.__type-5.__type-6.autoRefreshToken\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"lib/types.SupabaseClientOptions.__type.__type\"},{\"id\":38,\"kind\":1024,\"name\":\"storageKey\",\"url\":\"modules/lib_types.html#SupabaseClientOptions.__type-5.__type-6.storageKey\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"lib/types.SupabaseClientOptions.__type.__type\"},{\"id\":39,\"kind\":1024,\"name\":\"persistSession\",\"url\":\"modules/lib_types.html#SupabaseClientOptions.__type-5.__type-6.persistSession\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"lib/types.SupabaseClientOptions.__type.__type\"},{\"id\":40,\"kind\":1024,\"name\":\"detectSessionInUrl\",\"url\":\"modules/lib_types.html#SupabaseClientOptions.__type-5.__type-6.detectSessionInUrl\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"lib/types.SupabaseClientOptions.__type.__type\"},{\"id\":41,\"kind\":1024,\"name\":\"storage\",\"url\":\"modules/lib_types.html#SupabaseClientOptions.__type-5.__type-6.storage\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"lib/types.SupabaseClientOptions.__type.__type\"},{\"id\":42,\"kind\":1024,\"name\":\"flowType\",\"url\":\"modules/lib_types.html#SupabaseClientOptions.__type-5.__type-6.flowType\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"lib/types.SupabaseClientOptions.__type.__type\"},{\"id\":43,\"kind\":1024,\"name\":\"debug\",\"url\":\"modules/lib_types.html#SupabaseClientOptions.__type-5.__type-6.debug\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"lib/types.SupabaseClientOptions.__type.__type\"},{\"id\":44,\"kind\":1024,\"name\":\"lock\",\"url\":\"modules/lib_types.html#SupabaseClientOptions.__type-5.__type-6.lock\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"lib/types.SupabaseClientOptions.__type.__type\"},{\"id\":45,\"kind\":1024,\"name\":\"realtime\",\"url\":\"modules/lib_types.html#SupabaseClientOptions.__type-5.realtime\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"lib/types.SupabaseClientOptions.__type\"},{\"id\":46,\"kind\":1024,\"name\":\"storage\",\"url\":\"modules/lib_types.html#SupabaseClientOptions.__type-5.storage-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"lib/types.SupabaseClientOptions.__type\"},{\"id\":47,\"kind\":1024,\"name\":\"global\",\"url\":\"modules/lib_types.html#SupabaseClientOptions.__type-5.global\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"lib/types.SupabaseClientOptions.__type\"},{\"id\":48,\"kind\":65536,\"name\":\"__type\",\"url\":\"modules/lib_types.html#SupabaseClientOptions.__type-5.__type-8\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-literal\",\"parent\":\"lib/types.SupabaseClientOptions.__type\"},{\"id\":49,\"kind\":1024,\"name\":\"fetch\",\"url\":\"modules/lib_types.html#SupabaseClientOptions.__type-5.__type-8.fetch\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"lib/types.SupabaseClientOptions.__type.__type\"},{\"id\":50,\"kind\":1024,\"name\":\"headers\",\"url\":\"modules/lib_types.html#SupabaseClientOptions.__type-5.__type-8.headers\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"lib/types.SupabaseClientOptions.__type.__type\"},{\"id\":51,\"kind\":2048,\"name\":\"accessToken\",\"url\":\"modules/lib_types.html#SupabaseClientOptions.__type-5.accessToken\",\"classes\":\"tsd-kind-method tsd-parent-kind-type-literal\",\"parent\":\"lib/types.SupabaseClientOptions.__type\"},{\"id\":52,\"kind\":4194304,\"name\":\"GenericRelationship\",\"url\":\"modules/lib_types.html#GenericRelationship\",\"classes\":\"tsd-kind-type-alias tsd-parent-kind-module\",\"parent\":\"lib/types\"},{\"id\":53,\"kind\":65536,\"name\":\"__type\",\"url\":\"modules/lib_types.html#GenericRelationship.__type-2\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-alias\",\"parent\":\"lib/types.GenericRelationship\"},{\"id\":54,\"kind\":1024,\"name\":\"foreignKeyName\",\"url\":\"modules/lib_types.html#GenericRelationship.__type-2.foreignKeyName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"lib/types.GenericRelationship.__type\"},{\"id\":55,\"kind\":1024,\"name\":\"columns\",\"url\":\"modules/lib_types.html#GenericRelationship.__type-2.columns\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"lib/types.GenericRelationship.__type\"},{\"id\":56,\"kind\":1024,\"name\":\"isOneToOne\",\"url\":\"modules/lib_types.html#GenericRelationship.__type-2.isOneToOne\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"lib/types.GenericRelationship.__type\"},{\"id\":57,\"kind\":1024,\"name\":\"referencedRelation\",\"url\":\"modules/lib_types.html#GenericRelationship.__type-2.referencedRelation\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"lib/types.GenericRelationship.__type\"},{\"id\":58,\"kind\":1024,\"name\":\"referencedColumns\",\"url\":\"modules/lib_types.html#GenericRelationship.__type-2.referencedColumns\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"lib/types.GenericRelationship.__type\"},{\"id\":59,\"kind\":4194304,\"name\":\"GenericTable\",\"url\":\"modules/lib_types.html#GenericTable\",\"classes\":\"tsd-kind-type-alias tsd-parent-kind-module\",\"parent\":\"lib/types\"},{\"id\":60,\"kind\":65536,\"name\":\"__type\",\"url\":\"modules/lib_types.html#GenericTable.__type-4\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-alias\",\"parent\":\"lib/types.GenericTable\"},{\"id\":61,\"kind\":1024,\"name\":\"Row\",\"url\":\"modules/lib_types.html#GenericTable.__type-4.Row-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"lib/types.GenericTable.__type\"},{\"id\":62,\"kind\":1024,\"name\":\"Insert\",\"url\":\"modules/lib_types.html#GenericTable.__type-4.Insert\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"lib/types.GenericTable.__type\"},{\"id\":63,\"kind\":1024,\"name\":\"Update\",\"url\":\"modules/lib_types.html#GenericTable.__type-4.Update\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"lib/types.GenericTable.__type\"},{\"id\":64,\"kind\":1024,\"name\":\"Relationships\",\"url\":\"modules/lib_types.html#GenericTable.__type-4.Relationships-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"lib/types.GenericTable.__type\"},{\"id\":65,\"kind\":4194304,\"name\":\"GenericUpdatableView\",\"url\":\"modules/lib_types.html#GenericUpdatableView\",\"classes\":\"tsd-kind-type-alias tsd-parent-kind-module\",\"parent\":\"lib/types\"},{\"id\":66,\"kind\":4194304,\"name\":\"GenericNonUpdatableView\",\"url\":\"modules/lib_types.html#GenericNonUpdatableView\",\"classes\":\"tsd-kind-type-alias tsd-parent-kind-module\",\"parent\":\"lib/types\"},{\"id\":67,\"kind\":65536,\"name\":\"__type\",\"url\":\"modules/lib_types.html#GenericNonUpdatableView.__type-1\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-alias\",\"parent\":\"lib/types.GenericNonUpdatableView\"},{\"id\":68,\"kind\":1024,\"name\":\"Row\",\"url\":\"modules/lib_types.html#GenericNonUpdatableView.__type-1.Row\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"lib/types.GenericNonUpdatableView.__type\"},{\"id\":69,\"kind\":1024,\"name\":\"Relationships\",\"url\":\"modules/lib_types.html#GenericNonUpdatableView.__type-1.Relationships\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"lib/types.GenericNonUpdatableView.__type\"},{\"id\":70,\"kind\":4194304,\"name\":\"GenericView\",\"url\":\"modules/lib_types.html#GenericView\",\"classes\":\"tsd-kind-type-alias tsd-parent-kind-module\",\"parent\":\"lib/types\"},{\"id\":71,\"kind\":4194304,\"name\":\"GenericFunction\",\"url\":\"modules/lib_types.html#GenericFunction\",\"classes\":\"tsd-kind-type-alias tsd-parent-kind-module\",\"parent\":\"lib/types\"},{\"id\":72,\"kind\":65536,\"name\":\"__type\",\"url\":\"modules/lib_types.html#GenericFunction.__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-alias\",\"parent\":\"lib/types.GenericFunction\"},{\"id\":73,\"kind\":1024,\"name\":\"Args\",\"url\":\"modules/lib_types.html#GenericFunction.__type.Args\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"lib/types.GenericFunction.__type\"},{\"id\":74,\"kind\":1024,\"name\":\"Returns\",\"url\":\"modules/lib_types.html#GenericFunction.__type.Returns\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"lib/types.GenericFunction.__type\"},{\"id\":75,\"kind\":4194304,\"name\":\"GenericSchema\",\"url\":\"modules/lib_types.html#GenericSchema\",\"classes\":\"tsd-kind-type-alias tsd-parent-kind-module\",\"parent\":\"lib/types\"},{\"id\":76,\"kind\":65536,\"name\":\"__type\",\"url\":\"modules/lib_types.html#GenericSchema.__type-3\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-alias\",\"parent\":\"lib/types.GenericSchema\"},{\"id\":77,\"kind\":1024,\"name\":\"Tables\",\"url\":\"modules/lib_types.html#GenericSchema.__type-3.Tables\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"lib/types.GenericSchema.__type\"},{\"id\":78,\"kind\":1024,\"name\":\"Views\",\"url\":\"modules/lib_types.html#GenericSchema.__type-3.Views\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"lib/types.GenericSchema.__type\"},{\"id\":79,\"kind\":1024,\"name\":\"Functions\",\"url\":\"modules/lib_types.html#GenericSchema.__type-3.Functions\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"lib/types.GenericSchema.__type\"},{\"id\":80,\"kind\":4194304,\"name\":\"QueryResult\",\"url\":\"modules/lib_types.html#QueryResult\",\"classes\":\"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter\",\"parent\":\"lib/types\"},{\"id\":81,\"kind\":4194304,\"name\":\"QueryData\",\"url\":\"modules/lib_types.html#QueryData\",\"classes\":\"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter\",\"parent\":\"lib/types\"},{\"id\":82,\"kind\":4194304,\"name\":\"QueryError\",\"url\":\"modules/lib_types.html#QueryError\",\"classes\":\"tsd-kind-type-alias tsd-parent-kind-module\",\"parent\":\"lib/types\"},{\"id\":83,\"kind\":2,\"name\":\"lib/version\",\"url\":\"modules/lib_version.html\",\"classes\":\"tsd-kind-module\"},{\"id\":84,\"kind\":32,\"name\":\"version\",\"url\":\"modules/lib_version.html#version\",\"classes\":\"tsd-kind-variable tsd-parent-kind-module\",\"parent\":\"lib/version\"},{\"id\":85,\"kind\":128,\"name\":\"SupabaseClient\",\"url\":\"classes/index.SupabaseClient.html\",\"classes\":\"tsd-kind-class tsd-parent-kind-module tsd-has-type-parameter\",\"parent\":\"index\"},{\"id\":86,\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/index.SupabaseClient.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-has-type-parameter\",\"parent\":\"index.SupabaseClient\"},{\"id\":87,\"kind\":1024,\"name\":\"auth\",\"url\":\"classes/index.SupabaseClient.html#auth\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"index.SupabaseClient\"},{\"id\":88,\"kind\":1024,\"name\":\"realtime\",\"url\":\"classes/index.SupabaseClient.html#realtime\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"index.SupabaseClient\"},{\"id\":89,\"kind\":1024,\"name\":\"storage\",\"url\":\"classes/index.SupabaseClient.html#storage\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"index.SupabaseClient\"},{\"id\":90,\"kind\":1024,\"name\":\"realtimeUrl\",\"url\":\"classes/index.SupabaseClient.html#realtimeUrl\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"index.SupabaseClient\"},{\"id\":91,\"kind\":1024,\"name\":\"authUrl\",\"url\":\"classes/index.SupabaseClient.html#authUrl\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"index.SupabaseClient\"},{\"id\":92,\"kind\":1024,\"name\":\"storageUrl\",\"url\":\"classes/index.SupabaseClient.html#storageUrl\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"index.SupabaseClient\"},{\"id\":93,\"kind\":1024,\"name\":\"functionsUrl\",\"url\":\"classes/index.SupabaseClient.html#functionsUrl\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"index.SupabaseClient\"},{\"id\":94,\"kind\":1024,\"name\":\"rest\",\"url\":\"classes/index.SupabaseClient.html#rest\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"index.SupabaseClient\"},{\"id\":95,\"kind\":1024,\"name\":\"storageKey\",\"url\":\"classes/index.SupabaseClient.html#storageKey\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"index.SupabaseClient\"},{\"id\":96,\"kind\":1024,\"name\":\"fetch\",\"url\":\"classes/index.SupabaseClient.html#fetch\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"index.SupabaseClient\"},{\"id\":97,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/index.SupabaseClient.html#__type-1\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-class\",\"parent\":\"index.SupabaseClient\"},{\"id\":98,\"kind\":1024,\"name\":\"changedAccessToken\",\"url\":\"classes/index.SupabaseClient.html#changedAccessToken\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"index.SupabaseClient\"},{\"id\":99,\"kind\":1024,\"name\":\"accessToken\",\"url\":\"classes/index.SupabaseClient.html#accessToken\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"index.SupabaseClient\"},{\"id\":100,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/index.SupabaseClient.html#__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-class\",\"parent\":\"index.SupabaseClient\"},{\"id\":101,\"kind\":1024,\"name\":\"headers\",\"url\":\"classes/index.SupabaseClient.html#headers\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"index.SupabaseClient\"},{\"id\":102,\"kind\":1024,\"name\":\"supabaseUrl\",\"url\":\"classes/index.SupabaseClient.html#supabaseUrl\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"index.SupabaseClient\"},{\"id\":103,\"kind\":1024,\"name\":\"supabaseKey\",\"url\":\"classes/index.SupabaseClient.html#supabaseKey\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"index.SupabaseClient\"},{\"id\":104,\"kind\":262144,\"name\":\"functions\",\"url\":\"classes/index.SupabaseClient.html#functions\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class\",\"parent\":\"index.SupabaseClient\"},{\"id\":105,\"kind\":2048,\"name\":\"from\",\"url\":\"classes/index.SupabaseClient.html#from\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter\",\"parent\":\"index.SupabaseClient\"},{\"id\":106,\"kind\":2048,\"name\":\"schema\",\"url\":\"classes/index.SupabaseClient.html#schema\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter\",\"parent\":\"index.SupabaseClient\"},{\"id\":107,\"kind\":2048,\"name\":\"rpc\",\"url\":\"classes/index.SupabaseClient.html#rpc\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter\",\"parent\":\"index.SupabaseClient\"},{\"id\":108,\"kind\":2048,\"name\":\"channel\",\"url\":\"classes/index.SupabaseClient.html#channel\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"index.SupabaseClient\"},{\"id\":109,\"kind\":2048,\"name\":\"getChannels\",\"url\":\"classes/index.SupabaseClient.html#getChannels\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"index.SupabaseClient\"},{\"id\":110,\"kind\":2048,\"name\":\"removeChannel\",\"url\":\"classes/index.SupabaseClient.html#removeChannel\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"index.SupabaseClient\"},{\"id\":111,\"kind\":2048,\"name\":\"removeAllChannels\",\"url\":\"classes/index.SupabaseClient.html#removeAllChannels\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"index.SupabaseClient\"},{\"id\":112,\"kind\":2048,\"name\":\"_getAccessToken\",\"url\":\"classes/index.SupabaseClient.html#_getAccessToken\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"index.SupabaseClient\"},{\"id\":113,\"kind\":2048,\"name\":\"_initSupabaseAuthClient\",\"url\":\"classes/index.SupabaseClient.html#_initSupabaseAuthClient\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"index.SupabaseClient\"},{\"id\":114,\"kind\":2048,\"name\":\"_initRealtimeClient\",\"url\":\"classes/index.SupabaseClient.html#_initRealtimeClient\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"index.SupabaseClient\"},{\"id\":115,\"kind\":2048,\"name\":\"_listenForAuthEvents\",\"url\":\"classes/index.SupabaseClient.html#_listenForAuthEvents\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"index.SupabaseClient\"},{\"id\":116,\"kind\":2048,\"name\":\"_handleTokenChanged\",\"url\":\"classes/index.SupabaseClient.html#_handleTokenChanged\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"index.SupabaseClient\"},{\"id\":117,\"kind\":16777216,\"name\":\"SupabaseClientOptions\",\"url\":\"modules/index.html#SupabaseClientOptions\",\"classes\":\"tsd-kind-reference tsd-parent-kind-module\",\"parent\":\"index\"},{\"id\":118,\"kind\":16777216,\"name\":\"QueryResult\",\"url\":\"modules/index.html#QueryResult\",\"classes\":\"tsd-kind-reference tsd-parent-kind-module\",\"parent\":\"index\"},{\"id\":119,\"kind\":16777216,\"name\":\"QueryData\",\"url\":\"modules/index.html#QueryData\",\"classes\":\"tsd-kind-reference tsd-parent-kind-module\",\"parent\":\"index\"},{\"id\":120,\"kind\":16777216,\"name\":\"QueryError\",\"url\":\"modules/index.html#QueryError\",\"classes\":\"tsd-kind-reference tsd-parent-kind-module\",\"parent\":\"index\"},{\"id\":121,\"kind\":16777216,\"name\":\"Session\",\"url\":\"modules/index.html#Session\",\"classes\":\"tsd-kind-reference tsd-parent-kind-module\",\"parent\":\"index\"},{\"id\":122,\"kind\":16777216,\"name\":\"User\",\"url\":\"modules/index.html#User\",\"classes\":\"tsd-kind-reference tsd-parent-kind-module\",\"parent\":\"index\"}],\"index\":{\"version\":\"2.3.9\",\"fields\":[\"name\",\"parent\"],\"fieldVectors\":[[\"name/0\",[0,26.025]],[\"parent/0\",[]],[\"name/1\",[1,44.724]],[\"parent/1\",[0,2.516]],[\"name/2\",[2,29.87]],[\"parent/2\",[]],[\"name/3\",[3,44.724]],[\"parent/3\",[2,2.888]],[\"name/4\",[4,19.836]],[\"parent/4\",[5,4.324]],[\"name/5\",[6,21.938,7,21.938,8,21.938]],[\"parent/5\",[9,4.324]],[\"name/6\",[10,44.724]],[\"parent/6\",[2,2.888]],[\"name/7\",[4,19.836]],[\"parent/7\",[11,4.324]],[\"name/8\",[12,36.141]],[\"parent/8\",[13,3.824]],[\"name/9\",[4,19.836]],[\"parent/9\",[13,3.824]],[\"name/10\",[6,21.938,7,21.938,8,21.938]],[\"parent/10\",[14,4.324]],[\"name/11\",[15,44.724]],[\"parent/11\",[2,2.888]],[\"name/12\",[4,19.836]],[\"parent/12\",[16,4.324]],[\"name/13\",[17,36.141]],[\"parent/13\",[18,4.324]],[\"name/14\",[19,44.724]],[\"parent/14\",[2,2.888]],[\"name/15\",[20,44.724]],[\"parent/15\",[2,2.888]],[\"name/16\",[21,33.595]],[\"parent/16\",[]],[\"name/17\",[22,44.724]],[\"parent/17\",[21,3.248]],[\"name/18\",[23,44.724]],[\"parent/18\",[21,3.248]],[\"name/19\",[24,44.724]],[\"parent/19\",[21,3.248]],[\"name/20\",[25,31.562]],[\"parent/20\",[]],[\"name/21\",[26,44.724]],[\"parent/21\",[25,3.052]],[\"name/22\",[27,44.724]],[\"parent/22\",[25,3.052]],[\"name/23\",[28,44.724]],[\"parent/23\",[25,3.052]],[\"name/24\",[29,44.724]],[\"parent/24\",[25,3.052]],[\"name/25\",[30,21.741]],[\"parent/25\",[]],[\"name/26\",[31,44.724]],[\"parent/26\",[30,2.102]],[\"name/27\",[4,19.836]],[\"parent/27\",[32,3.824]],[\"name/28\",[4,19.836]],[\"parent/28\",[32,3.824]],[\"name/29\",[33,36.141]],[\"parent/29\",[30,2.102]],[\"name/30\",[34,39.549]],[\"parent/30\",[30,2.102]],[\"name/31\",[4,19.836]],[\"parent/31\",[35,4.324]],[\"name/32\",[36,44.724]],[\"parent/32\",[37,2.516]],[\"name/33\",[4,19.836]],[\"parent/33\",[37,2.516]],[\"name/34\",[17,36.141]],[\"parent/34\",[38,2.329]],[\"name/35\",[39,39.549]],[\"parent/35\",[37,2.516]],[\"name/36\",[4,19.836]],[\"parent/36\",[37,2.516]],[\"name/37\",[40,44.724]],[\"parent/37\",[38,2.329]],[\"name/38\",[41,39.549]],[\"parent/38\",[38,2.329]],[\"name/39\",[42,44.724]],[\"parent/39\",[38,2.329]],[\"name/40\",[43,44.724]],[\"parent/40\",[38,2.329]],[\"name/41\",[44,36.141]],[\"parent/41\",[38,2.329]],[\"name/42\",[45,44.724]],[\"parent/42\",[38,2.329]],[\"name/43\",[46,44.724]],[\"parent/43\",[38,2.329]],[\"name/44\",[47,44.724]],[\"parent/44\",[38,2.329]],[\"name/45\",[48,39.549]],[\"parent/45\",[37,2.516]],[\"name/46\",[44,36.141]],[\"parent/46\",[37,2.516]],[\"name/47\",[49,44.724]],[\"parent/47\",[37,2.516]],[\"name/48\",[4,19.836]],[\"parent/48\",[37,2.516]],[\"name/49\",[33,36.141]],[\"parent/49\",[38,2.329]],[\"name/50\",[12,36.141]],[\"parent/50\",[38,2.329]],[\"name/51\",[50,39.549]],[\"parent/51\",[37,2.516]],[\"name/52\",[51,44.724]],[\"parent/52\",[30,2.102]],[\"name/53\",[4,19.836]],[\"parent/53\",[52,4.324]],[\"name/54\",[53,44.724]],[\"parent/54\",[54,3.052]],[\"name/55\",[55,44.724]],[\"parent/55\",[54,3.052]],[\"name/56\",[56,44.724]],[\"parent/56\",[54,3.052]],[\"name/57\",[57,44.724]],[\"parent/57\",[54,3.052]],[\"name/58\",[58,44.724]],[\"parent/58\",[54,3.052]],[\"name/59\",[59,44.724]],[\"parent/59\",[30,2.102]],[\"name/60\",[4,19.836]],[\"parent/60\",[60,4.324]],[\"name/61\",[61,39.549]],[\"parent/61\",[62,3.248]],[\"name/62\",[63,44.724]],[\"parent/62\",[62,3.248]],[\"name/63\",[64,44.724]],[\"parent/63\",[62,3.248]],[\"name/64\",[65,39.549]],[\"parent/64\",[62,3.248]],[\"name/65\",[66,44.724]],[\"parent/65\",[30,2.102]],[\"name/66\",[67,44.724]],[\"parent/66\",[30,2.102]],[\"name/67\",[4,19.836]],[\"parent/67\",[68,4.324]],[\"name/68\",[61,39.549]],[\"parent/68\",[69,3.824]],[\"name/69\",[65,39.549]],[\"parent/69\",[69,3.824]],[\"name/70\",[70,44.724]],[\"parent/70\",[30,2.102]],[\"name/71\",[71,44.724]],[\"parent/71\",[30,2.102]],[\"name/72\",[4,19.836]],[\"parent/72\",[72,4.324]],[\"name/73\",[73,44.724]],[\"parent/73\",[74,3.824]],[\"name/74\",[75,44.724]],[\"parent/74\",[74,3.824]],[\"name/75\",[76,44.724]],[\"parent/75\",[30,2.102]],[\"name/76\",[4,19.836]],[\"parent/76\",[77,4.324]],[\"name/77\",[78,44.724]],[\"parent/77\",[79,3.494]],[\"name/78\",[80,44.724]],[\"parent/78\",[79,3.494]],[\"name/79\",[81,39.549]],[\"parent/79\",[79,3.494]],[\"name/80\",[82,39.549]],[\"parent/80\",[30,2.102]],[\"name/81\",[83,39.549]],[\"parent/81\",[30,2.102]],[\"name/82\",[84,39.549]],[\"parent/82\",[30,2.102]],[\"name/83\",[85,39.549]],[\"parent/83\",[]],[\"name/84\",[86,44.724]],[\"parent/84\",[85,3.824]],[\"name/85\",[87,44.724]],[\"parent/85\",[0,2.516]],[\"name/86\",[88,44.724]],[\"parent/86\",[89,1.342]],[\"name/87\",[39,39.549]],[\"parent/87\",[89,1.342]],[\"name/88\",[48,39.549]],[\"parent/88\",[89,1.342]],[\"name/89\",[44,36.141]],[\"parent/89\",[89,1.342]],[\"name/90\",[90,44.724]],[\"parent/90\",[89,1.342]],[\"name/91\",[91,44.724]],[\"parent/91\",[89,1.342]],[\"name/92\",[92,44.724]],[\"parent/92\",[89,1.342]],[\"name/93\",[93,44.724]],[\"parent/93\",[89,1.342]],[\"name/94\",[94,44.724]],[\"parent/94\",[89,1.342]],[\"name/95\",[41,39.549]],[\"parent/95\",[89,1.342]],[\"name/96\",[33,36.141]],[\"parent/96\",[89,1.342]],[\"name/97\",[4,19.836]],[\"parent/97\",[89,1.342]],[\"name/98\",[95,44.724]],[\"parent/98\",[89,1.342]],[\"name/99\",[50,39.549]],[\"parent/99\",[89,1.342]],[\"name/100\",[4,19.836]],[\"parent/100\",[89,1.342]],[\"name/101\",[12,36.141]],[\"parent/101\",[89,1.342]],[\"name/102\",[96,44.724]],[\"parent/102\",[89,1.342]],[\"name/103\",[97,44.724]],[\"parent/103\",[89,1.342]],[\"name/104\",[81,39.549]],[\"parent/104\",[89,1.342]],[\"name/105\",[98,44.724]],[\"parent/105\",[89,1.342]],[\"name/106\",[17,36.141]],[\"parent/106\",[89,1.342]],[\"name/107\",[99,44.724]],[\"parent/107\",[89,1.342]],[\"name/108\",[100,44.724]],[\"parent/108\",[89,1.342]],[\"name/109\",[101,44.724]],[\"parent/109\",[89,1.342]],[\"name/110\",[102,44.724]],[\"parent/110\",[89,1.342]],[\"name/111\",[103,44.724]],[\"parent/111\",[89,1.342]],[\"name/112\",[104,44.724]],[\"parent/112\",[89,1.342]],[\"name/113\",[105,44.724]],[\"parent/113\",[89,1.342]],[\"name/114\",[106,44.724]],[\"parent/114\",[89,1.342]],[\"name/115\",[107,44.724]],[\"parent/115\",[89,1.342]],[\"name/116\",[108,44.724]],[\"parent/116\",[89,1.342]],[\"name/117\",[34,39.549]],[\"parent/117\",[0,2.516]],[\"name/118\",[82,39.549]],[\"parent/118\",[0,2.516]],[\"name/119\",[83,39.549]],[\"parent/119\",[0,2.516]],[\"name/120\",[84,39.549]],[\"parent/120\",[0,2.516]],[\"name/121\",[109,44.724]],[\"parent/121\",[0,2.516]],[\"name/122\",[110,44.724]],[\"parent/122\",[0,2.516]]],\"invertedIndex\":[[\"__type\",{\"_index\":4,\"name\":{\"4\":{},\"7\":{},\"9\":{},\"12\":{},\"27\":{},\"28\":{},\"31\":{},\"33\":{},\"36\":{},\"48\":{},\"53\":{},\"60\":{},\"67\":{},\"72\":{},\"76\":{},\"97\":{},\"100\":{}},\"parent\":{}}],[\"_getaccesstoken\",{\"_index\":104,\"name\":{\"112\":{}},\"parent\":{}}],[\"_handletokenchanged\",{\"_index\":108,\"name\":{\"116\":{}},\"parent\":{}}],[\"_initrealtimeclient\",{\"_index\":106,\"name\":{\"114\":{}},\"parent\":{}}],[\"_initsupabaseauthclient\",{\"_index\":105,\"name\":{\"113\":{}},\"parent\":{}}],[\"_listenforauthevents\",{\"_index\":107,\"name\":{\"115\":{}},\"parent\":{}}],[\"accesstoken\",{\"_index\":50,\"name\":{\"51\":{},\"99\":{}},\"parent\":{}}],[\"applysettingdefaults\",{\"_index\":28,\"name\":{\"23\":{}},\"parent\":{}}],[\"args\",{\"_index\":73,\"name\":{\"73\":{}},\"parent\":{}}],[\"auth\",{\"_index\":39,\"name\":{\"35\":{},\"87\":{}},\"parent\":{}}],[\"authurl\",{\"_index\":91,\"name\":{\"91\":{}},\"parent\":{}}],[\"autorefreshtoken\",{\"_index\":40,\"name\":{\"37\":{}},\"parent\":{}}],[\"changedaccesstoken\",{\"_index\":95,\"name\":{\"98\":{}},\"parent\":{}}],[\"channel\",{\"_index\":100,\"name\":{\"108\":{}},\"parent\":{}}],[\"client\",{\"_index\":7,\"name\":{\"5\":{},\"10\":{}},\"parent\":{}}],[\"columns\",{\"_index\":55,\"name\":{\"55\":{}},\"parent\":{}}],[\"constructor\",{\"_index\":88,\"name\":{\"86\":{}},\"parent\":{}}],[\"createclient\",{\"_index\":1,\"name\":{\"1\":{}},\"parent\":{}}],[\"db\",{\"_index\":36,\"name\":{\"32\":{}},\"parent\":{}}],[\"debug\",{\"_index\":46,\"name\":{\"43\":{}},\"parent\":{}}],[\"default_auth_options\",{\"_index\":19,\"name\":{\"14\":{}},\"parent\":{}}],[\"default_db_options\",{\"_index\":15,\"name\":{\"11\":{}},\"parent\":{}}],[\"default_global_options\",{\"_index\":10,\"name\":{\"6\":{}},\"parent\":{}}],[\"default_headers\",{\"_index\":3,\"name\":{\"3\":{}},\"parent\":{}}],[\"default_realtime_options\",{\"_index\":20,\"name\":{\"15\":{}},\"parent\":{}}],[\"detectsessioninurl\",{\"_index\":43,\"name\":{\"40\":{}},\"parent\":{}}],[\"ensuretrailingslash\",{\"_index\":27,\"name\":{\"22\":{}},\"parent\":{}}],[\"fetch\",{\"_index\":33,\"name\":{\"29\":{},\"49\":{},\"96\":{}},\"parent\":{}}],[\"fetchwithauth\",{\"_index\":24,\"name\":{\"19\":{}},\"parent\":{}}],[\"flowtype\",{\"_index\":45,\"name\":{\"42\":{}},\"parent\":{}}],[\"foreignkeyname\",{\"_index\":53,\"name\":{\"54\":{}},\"parent\":{}}],[\"from\",{\"_index\":98,\"name\":{\"105\":{}},\"parent\":{}}],[\"functions\",{\"_index\":81,\"name\":{\"79\":{},\"104\":{}},\"parent\":{}}],[\"functionsurl\",{\"_index\":93,\"name\":{\"93\":{}},\"parent\":{}}],[\"genericfunction\",{\"_index\":71,\"name\":{\"71\":{}},\"parent\":{}}],[\"genericnonupdatableview\",{\"_index\":67,\"name\":{\"66\":{}},\"parent\":{}}],[\"genericrelationship\",{\"_index\":51,\"name\":{\"52\":{}},\"parent\":{}}],[\"genericschema\",{\"_index\":76,\"name\":{\"75\":{}},\"parent\":{}}],[\"generictable\",{\"_index\":59,\"name\":{\"59\":{}},\"parent\":{}}],[\"genericupdatableview\",{\"_index\":66,\"name\":{\"65\":{}},\"parent\":{}}],[\"genericview\",{\"_index\":70,\"name\":{\"70\":{}},\"parent\":{}}],[\"getchannels\",{\"_index\":101,\"name\":{\"109\":{}},\"parent\":{}}],[\"global\",{\"_index\":49,\"name\":{\"47\":{}},\"parent\":{}}],[\"headers\",{\"_index\":12,\"name\":{\"8\":{},\"50\":{},\"101\":{}},\"parent\":{}}],[\"index\",{\"_index\":0,\"name\":{\"0\":{}},\"parent\":{\"1\":{},\"85\":{},\"117\":{},\"118\":{},\"119\":{},\"120\":{},\"121\":{},\"122\":{}}}],[\"index.supabaseclient\",{\"_index\":89,\"name\":{},\"parent\":{\"86\":{},\"87\":{},\"88\":{},\"89\":{},\"90\":{},\"91\":{},\"92\":{},\"93\":{},\"94\":{},\"95\":{},\"96\":{},\"97\":{},\"98\":{},\"99\":{},\"100\":{},\"101\":{},\"102\":{},\"103\":{},\"104\":{},\"105\":{},\"106\":{},\"107\":{},\"108\":{},\"109\":{},\"110\":{},\"111\":{},\"112\":{},\"113\":{},\"114\":{},\"115\":{},\"116\":{}}}],[\"info\",{\"_index\":8,\"name\":{\"5\":{},\"10\":{}},\"parent\":{}}],[\"insert\",{\"_index\":63,\"name\":{\"62\":{}},\"parent\":{}}],[\"isbrowser\",{\"_index\":29,\"name\":{\"24\":{}},\"parent\":{}}],[\"isonetoone\",{\"_index\":56,\"name\":{\"56\":{}},\"parent\":{}}],[\"lib/constants\",{\"_index\":2,\"name\":{\"2\":{}},\"parent\":{\"3\":{},\"6\":{},\"11\":{},\"14\":{},\"15\":{}}}],[\"lib/constants.default_db_options\",{\"_index\":16,\"name\":{},\"parent\":{\"12\":{}}}],[\"lib/constants.default_db_options.__type\",{\"_index\":18,\"name\":{},\"parent\":{\"13\":{}}}],[\"lib/constants.default_global_options\",{\"_index\":11,\"name\":{},\"parent\":{\"7\":{}}}],[\"lib/constants.default_global_options.__type\",{\"_index\":13,\"name\":{},\"parent\":{\"8\":{},\"9\":{}}}],[\"lib/constants.default_global_options.__type.__type\",{\"_index\":14,\"name\":{},\"parent\":{\"10\":{}}}],[\"lib/constants.default_headers\",{\"_index\":5,\"name\":{},\"parent\":{\"4\":{}}}],[\"lib/constants.default_headers.__type\",{\"_index\":9,\"name\":{},\"parent\":{\"5\":{}}}],[\"lib/fetch\",{\"_index\":21,\"name\":{\"16\":{}},\"parent\":{\"17\":{},\"18\":{},\"19\":{}}}],[\"lib/helpers\",{\"_index\":25,\"name\":{\"20\":{}},\"parent\":{\"21\":{},\"22\":{},\"23\":{},\"24\":{}}}],[\"lib/types\",{\"_index\":30,\"name\":{\"25\":{}},\"parent\":{\"26\":{},\"29\":{},\"30\":{},\"52\":{},\"59\":{},\"65\":{},\"66\":{},\"70\":{},\"71\":{},\"75\":{},\"80\":{},\"81\":{},\"82\":{}}}],[\"lib/types.genericfunction\",{\"_index\":72,\"name\":{},\"parent\":{\"72\":{}}}],[\"lib/types.genericfunction.__type\",{\"_index\":74,\"name\":{},\"parent\":{\"73\":{},\"74\":{}}}],[\"lib/types.genericnonupdatableview\",{\"_index\":68,\"name\":{},\"parent\":{\"67\":{}}}],[\"lib/types.genericnonupdatableview.__type\",{\"_index\":69,\"name\":{},\"parent\":{\"68\":{},\"69\":{}}}],[\"lib/types.genericrelationship\",{\"_index\":52,\"name\":{},\"parent\":{\"53\":{}}}],[\"lib/types.genericrelationship.__type\",{\"_index\":54,\"name\":{},\"parent\":{\"54\":{},\"55\":{},\"56\":{},\"57\":{},\"58\":{}}}],[\"lib/types.genericschema\",{\"_index\":77,\"name\":{},\"parent\":{\"76\":{}}}],[\"lib/types.genericschema.__type\",{\"_index\":79,\"name\":{},\"parent\":{\"77\":{},\"78\":{},\"79\":{}}}],[\"lib/types.generictable\",{\"_index\":60,\"name\":{},\"parent\":{\"60\":{}}}],[\"lib/types.generictable.__type\",{\"_index\":62,\"name\":{},\"parent\":{\"61\":{},\"62\":{},\"63\":{},\"64\":{}}}],[\"lib/types.supabaseauthclientoptions\",{\"_index\":32,\"name\":{},\"parent\":{\"27\":{},\"28\":{}}}],[\"lib/types.supabaseclientoptions\",{\"_index\":35,\"name\":{},\"parent\":{\"31\":{}}}],[\"lib/types.supabaseclientoptions.__type\",{\"_index\":37,\"name\":{},\"parent\":{\"32\":{},\"33\":{},\"35\":{},\"36\":{},\"45\":{},\"46\":{},\"47\":{},\"48\":{},\"51\":{}}}],[\"lib/types.supabaseclientoptions.__type.__type\",{\"_index\":38,\"name\":{},\"parent\":{\"34\":{},\"37\":{},\"38\":{},\"39\":{},\"40\":{},\"41\":{},\"42\":{},\"43\":{},\"44\":{},\"49\":{},\"50\":{}}}],[\"lib/version\",{\"_index\":85,\"name\":{\"83\":{}},\"parent\":{\"84\":{}}}],[\"lock\",{\"_index\":47,\"name\":{\"44\":{}},\"parent\":{}}],[\"persistsession\",{\"_index\":42,\"name\":{\"39\":{}},\"parent\":{}}],[\"querydata\",{\"_index\":83,\"name\":{\"81\":{},\"119\":{}},\"parent\":{}}],[\"queryerror\",{\"_index\":84,\"name\":{\"82\":{},\"120\":{}},\"parent\":{}}],[\"queryresult\",{\"_index\":82,\"name\":{\"80\":{},\"118\":{}},\"parent\":{}}],[\"realtime\",{\"_index\":48,\"name\":{\"45\":{},\"88\":{}},\"parent\":{}}],[\"realtimeurl\",{\"_index\":90,\"name\":{\"90\":{}},\"parent\":{}}],[\"referencedcolumns\",{\"_index\":58,\"name\":{\"58\":{}},\"parent\":{}}],[\"referencedrelation\",{\"_index\":57,\"name\":{\"57\":{}},\"parent\":{}}],[\"relationships\",{\"_index\":65,\"name\":{\"64\":{},\"69\":{}},\"parent\":{}}],[\"removeallchannels\",{\"_index\":103,\"name\":{\"111\":{}},\"parent\":{}}],[\"removechannel\",{\"_index\":102,\"name\":{\"110\":{}},\"parent\":{}}],[\"resolvefetch\",{\"_index\":22,\"name\":{\"17\":{}},\"parent\":{}}],[\"resolveheadersconstructor\",{\"_index\":23,\"name\":{\"18\":{}},\"parent\":{}}],[\"rest\",{\"_index\":94,\"name\":{\"94\":{}},\"parent\":{}}],[\"returns\",{\"_index\":75,\"name\":{\"74\":{}},\"parent\":{}}],[\"row\",{\"_index\":61,\"name\":{\"61\":{},\"68\":{}},\"parent\":{}}],[\"rpc\",{\"_index\":99,\"name\":{\"107\":{}},\"parent\":{}}],[\"schema\",{\"_index\":17,\"name\":{\"13\":{},\"34\":{},\"106\":{}},\"parent\":{}}],[\"session\",{\"_index\":109,\"name\":{\"121\":{}},\"parent\":{}}],[\"storage\",{\"_index\":44,\"name\":{\"41\":{},\"46\":{},\"89\":{}},\"parent\":{}}],[\"storagekey\",{\"_index\":41,\"name\":{\"38\":{},\"95\":{}},\"parent\":{}}],[\"storageurl\",{\"_index\":92,\"name\":{\"92\":{}},\"parent\":{}}],[\"supabaseauthclientoptions\",{\"_index\":31,\"name\":{\"26\":{}},\"parent\":{}}],[\"supabaseclient\",{\"_index\":87,\"name\":{\"85\":{}},\"parent\":{}}],[\"supabaseclientoptions\",{\"_index\":34,\"name\":{\"30\":{},\"117\":{}},\"parent\":{}}],[\"supabasekey\",{\"_index\":97,\"name\":{\"103\":{}},\"parent\":{}}],[\"supabaseurl\",{\"_index\":96,\"name\":{\"102\":{}},\"parent\":{}}],[\"tables\",{\"_index\":78,\"name\":{\"77\":{}},\"parent\":{}}],[\"update\",{\"_index\":64,\"name\":{\"63\":{}},\"parent\":{}}],[\"user\",{\"_index\":110,\"name\":{\"122\":{}},\"parent\":{}}],[\"uuid\",{\"_index\":26,\"name\":{\"21\":{}},\"parent\":{}}],[\"version\",{\"_index\":86,\"name\":{\"84\":{}},\"parent\":{}}],[\"views\",{\"_index\":80,\"name\":{\"78\":{}},\"parent\":{}}],[\"x\",{\"_index\":6,\"name\":{\"5\":{},\"10\":{}},\"parent\":{}}]],\"pipeline\":[]}}");
\ No newline at end of file
diff --git a/v2/assets/style.css b/v2/assets/style.css
new file mode 100644
index 00000000..6127b27c
--- /dev/null
+++ b/v2/assets/style.css
@@ -0,0 +1,1414 @@
+@import url("./icons.css");
+
+:root {
+    /* Light */
+    --light-color-background: #fcfcfc;
+    --light-color-secondary-background: #fff;
+    --light-color-text: #222;
+    --light-color-text-aside: #707070;
+    --light-color-link: #4da6ff;
+    --light-color-menu-divider: #eee;
+    --light-color-menu-divider-focus: #000;
+    --light-color-menu-label: #707070;
+    --light-color-panel: var(--light-color-secondary-background);
+    --light-color-panel-divider: #eee;
+    --light-color-comment-tag: #707070;
+    --light-color-comment-tag-text: #fff;
+    --light-color-ts: #9600ff;
+    --light-color-ts-interface: #647f1b;
+    --light-color-ts-enum: #937210;
+    --light-color-ts-class: #0672de;
+    --light-color-ts-private: #707070;
+    --light-color-toolbar: #fff;
+    --light-color-toolbar-text: #333;
+    --light-icon-filter: invert(0);
+    --light-external-icon: url("data:image/svg+xml;utf8,");
+
+    /* Dark */
+    --dark-color-background: #36393f;
+    --dark-color-secondary-background: #2f3136;
+    --dark-color-text: #ffffff;
+    --dark-color-text-aside: #e6e4e4;
+    --dark-color-link: #00aff4;
+    --dark-color-menu-divider: #eee;
+    --dark-color-menu-divider-focus: #000;
+    --dark-color-menu-label: #707070;
+    --dark-color-panel: var(--dark-color-secondary-background);
+    --dark-color-panel-divider: #818181;
+    --dark-color-comment-tag: #dcddde;
+    --dark-color-comment-tag-text: #2f3136;
+    --dark-color-ts: #c97dff;
+    --dark-color-ts-interface: #9cbe3c;
+    --dark-color-ts-enum: #d6ab29;
+    --dark-color-ts-class: #3695f3;
+    --dark-color-ts-private: #e2e2e2;
+    --dark-color-toolbar: #34373c;
+    --dark-color-toolbar-text: #ffffff;
+    --dark-icon-filter: invert(1);
+    --dark-external-icon: url("data:image/svg+xml;utf8,");
+}
+
+@media (prefers-color-scheme: light) {
+    :root {
+        --color-background: var(--light-color-background);
+        --color-secondary-background: var(--light-color-secondary-background);
+        --color-text: var(--light-color-text);
+        --color-text-aside: var(--light-color-text-aside);
+        --color-link: var(--light-color-link);
+        --color-menu-divider: var(--light-color-menu-divider);
+        --color-menu-divider-focus: var(--light-color-menu-divider-focus);
+        --color-menu-label: var(--light-color-menu-label);
+        --color-panel: var(--light-color-panel);
+        --color-panel-divider: var(--light-color-panel-divider);
+        --color-comment-tag: var(--light-color-comment-tag);
+        --color-comment-tag-text: var(--light-color-comment-tag-text);
+        --color-ts: var(--light-color-ts);
+        --color-ts-interface: var(--light-color-ts-interface);
+        --color-ts-enum: var(--light-color-ts-enum);
+        --color-ts-class: var(--light-color-ts-class);
+        --color-ts-private: var(--light-color-ts-private);
+        --color-toolbar: var(--light-color-toolbar);
+        --color-toolbar-text: var(--light-color-toolbar-text);
+        --icon-filter: var(--light-icon-filter);
+        --external-icon: var(--light-external-icon);
+    }
+}
+
+@media (prefers-color-scheme: dark) {
+    :root {
+        --color-background: var(--dark-color-background);
+        --color-secondary-background: var(--dark-color-secondary-background);
+        --color-text: var(--dark-color-text);
+        --color-text-aside: var(--dark-color-text-aside);
+        --color-link: var(--dark-color-link);
+        --color-menu-divider: var(--dark-color-menu-divider);
+        --color-menu-divider-focus: var(--dark-color-menu-divider-focus);
+        --color-menu-label: var(--dark-color-menu-label);
+        --color-panel: var(--dark-color-panel);
+        --color-panel-divider: var(--dark-color-panel-divider);
+        --color-comment-tag: var(--dark-color-comment-tag);
+        --color-comment-tag-text: var(--dark-color-comment-tag-text);
+        --color-ts: var(--dark-color-ts);
+        --color-ts-interface: var(--dark-color-ts-interface);
+        --color-ts-enum: var(--dark-color-ts-enum);
+        --color-ts-class: var(--dark-color-ts-class);
+        --color-ts-private: var(--dark-color-ts-private);
+        --color-toolbar: var(--dark-color-toolbar);
+        --color-toolbar-text: var(--dark-color-toolbar-text);
+        --icon-filter: var(--dark-icon-filter);
+        --external-icon: var(--dark-external-icon);
+    }
+}
+
+body {
+    margin: 0;
+}
+
+body.light {
+    --color-background: var(--light-color-background);
+    --color-secondary-background: var(--light-color-secondary-background);
+    --color-text: var(--light-color-text);
+    --color-text-aside: var(--light-color-text-aside);
+    --color-link: var(--light-color-link);
+    --color-menu-divider: var(--light-color-menu-divider);
+    --color-menu-divider-focus: var(--light-color-menu-divider-focus);
+    --color-menu-label: var(--light-color-menu-label);
+    --color-panel: var(--light-color-panel);
+    --color-panel-divider: var(--light-color-panel-divider);
+    --color-comment-tag: var(--light-color-comment-tag);
+    --color-comment-tag-text: var(--light-color-comment-tag-text);
+    --color-ts: var(--light-color-ts);
+    --color-ts-interface: var(--light-color-ts-interface);
+    --color-ts-enum: var(--light-color-ts-enum);
+    --color-ts-class: var(--light-color-ts-class);
+    --color-ts-private: var(--light-color-ts-private);
+    --color-toolbar: var(--light-color-toolbar);
+    --color-toolbar-text: var(--light-color-toolbar-text);
+    --icon-filter: var(--light-icon-filter);
+    --external-icon: var(--light-external-icon);
+}
+
+body.dark {
+    --color-background: var(--dark-color-background);
+    --color-secondary-background: var(--dark-color-secondary-background);
+    --color-text: var(--dark-color-text);
+    --color-text-aside: var(--dark-color-text-aside);
+    --color-link: var(--dark-color-link);
+    --color-menu-divider: var(--dark-color-menu-divider);
+    --color-menu-divider-focus: var(--dark-color-menu-divider-focus);
+    --color-menu-label: var(--dark-color-menu-label);
+    --color-panel: var(--dark-color-panel);
+    --color-panel-divider: var(--dark-color-panel-divider);
+    --color-comment-tag: var(--dark-color-comment-tag);
+    --color-comment-tag-text: var(--dark-color-comment-tag-text);
+    --color-ts: var(--dark-color-ts);
+    --color-ts-interface: var(--dark-color-ts-interface);
+    --color-ts-enum: var(--dark-color-ts-enum);
+    --color-ts-class: var(--dark-color-ts-class);
+    --color-ts-private: var(--dark-color-ts-private);
+    --color-toolbar: var(--dark-color-toolbar);
+    --color-toolbar-text: var(--dark-color-toolbar-text);
+    --icon-filter: var(--dark-icon-filter);
+    --external-icon: var(--dark-external-icon);
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+    line-height: 1.2;
+}
+
+h1 {
+    font-size: 2em;
+    margin: 0.67em 0;
+}
+
+h2 {
+    font-size: 1.5em;
+    margin: 0.83em 0;
+}
+
+h3 {
+    font-size: 1.17em;
+    margin: 1em 0;
+}
+
+h4,
+.tsd-index-panel h3 {
+    font-size: 1em;
+    margin: 1.33em 0;
+}
+
+h5 {
+    font-size: 0.83em;
+    margin: 1.67em 0;
+}
+
+h6 {
+    font-size: 0.67em;
+    margin: 2.33em 0;
+}
+
+pre {
+    white-space: pre;
+    white-space: pre-wrap;
+    word-wrap: break-word;
+}
+
+dl,
+menu,
+ol,
+ul {
+    margin: 1em 0;
+}
+
+dd {
+    margin: 0 0 0 40px;
+}
+
+.container {
+    max-width: 1200px;
+    margin: 0 auto;
+    padding: 0 40px;
+}
+@media (max-width: 640px) {
+    .container {
+        padding: 0 20px;
+    }
+}
+
+.container-main {
+    padding-bottom: 200px;
+}
+
+.row {
+    display: flex;
+    position: relative;
+    margin: 0 -10px;
+}
+.row:after {
+    visibility: hidden;
+    display: block;
+    content: "";
+    clear: both;
+    height: 0;
+}
+
+.col-4,
+.col-8 {
+    box-sizing: border-box;
+    float: left;
+    padding: 0 10px;
+}
+
+.col-4 {
+    width: 33.3333333333%;
+}
+.col-8 {
+    width: 66.6666666667%;
+}
+
+ul.tsd-descriptions > li > :first-child,
+.tsd-panel > :first-child,
+.col-8 > :first-child,
+.col-4 > :first-child,
+ul.tsd-descriptions > li > :first-child > :first-child,
+.tsd-panel > :first-child > :first-child,
+.col-8 > :first-child > :first-child,
+.col-4 > :first-child > :first-child,
+ul.tsd-descriptions > li > :first-child > :first-child > :first-child,
+.tsd-panel > :first-child > :first-child > :first-child,
+.col-8 > :first-child > :first-child > :first-child,
+.col-4 > :first-child > :first-child > :first-child {
+    margin-top: 0;
+}
+ul.tsd-descriptions > li > :last-child,
+.tsd-panel > :last-child,
+.col-8 > :last-child,
+.col-4 > :last-child,
+ul.tsd-descriptions > li > :last-child > :last-child,
+.tsd-panel > :last-child > :last-child,
+.col-8 > :last-child > :last-child,
+.col-4 > :last-child > :last-child,
+ul.tsd-descriptions > li > :last-child > :last-child > :last-child,
+.tsd-panel > :last-child > :last-child > :last-child,
+.col-8 > :last-child > :last-child > :last-child,
+.col-4 > :last-child > :last-child > :last-child {
+    margin-bottom: 0;
+}
+
+@keyframes fade-in {
+    from {
+        opacity: 0;
+    }
+    to {
+        opacity: 1;
+    }
+}
+@keyframes fade-out {
+    from {
+        opacity: 1;
+        visibility: visible;
+    }
+    to {
+        opacity: 0;
+    }
+}
+@keyframes fade-in-delayed {
+    0% {
+        opacity: 0;
+    }
+    33% {
+        opacity: 0;
+    }
+    100% {
+        opacity: 1;
+    }
+}
+@keyframes fade-out-delayed {
+    0% {
+        opacity: 1;
+        visibility: visible;
+    }
+    66% {
+        opacity: 0;
+    }
+    100% {
+        opacity: 0;
+    }
+}
+@keyframes shift-to-left {
+    from {
+        transform: translate(0, 0);
+    }
+    to {
+        transform: translate(-25%, 0);
+    }
+}
+@keyframes unshift-to-left {
+    from {
+        transform: translate(-25%, 0);
+    }
+    to {
+        transform: translate(0, 0);
+    }
+}
+@keyframes pop-in-from-right {
+    from {
+        transform: translate(100%, 0);
+    }
+    to {
+        transform: translate(0, 0);
+    }
+}
+@keyframes pop-out-to-right {
+    from {
+        transform: translate(0, 0);
+        visibility: visible;
+    }
+    to {
+        transform: translate(100%, 0);
+    }
+}
+body {
+    background: var(--color-background);
+    font-family: "Segoe UI", sans-serif;
+    font-size: 16px;
+    color: var(--color-text);
+}
+
+a {
+    color: var(--color-link);
+    text-decoration: none;
+}
+a:hover {
+    text-decoration: underline;
+}
+a.external[target="_blank"] {
+    background-image: var(--external-icon);
+    background-position: top 3px right;
+    background-repeat: no-repeat;
+    padding-right: 13px;
+}
+
+code,
+pre {
+    font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
+    padding: 0.2em;
+    margin: 0;
+    font-size: 14px;
+}
+
+pre {
+    padding: 10px;
+}
+pre code {
+    padding: 0;
+    font-size: 100%;
+}
+
+blockquote {
+    margin: 1em 0;
+    padding-left: 1em;
+    border-left: 4px solid gray;
+}
+
+.tsd-typography {
+    line-height: 1.333em;
+}
+.tsd-typography ul {
+    list-style: square;
+    padding: 0 0 0 20px;
+    margin: 0;
+}
+.tsd-typography h4,
+.tsd-typography .tsd-index-panel h3,
+.tsd-index-panel .tsd-typography h3,
+.tsd-typography h5,
+.tsd-typography h6 {
+    font-size: 1em;
+    margin: 0;
+}
+.tsd-typography h5,
+.tsd-typography h6 {
+    font-weight: normal;
+}
+.tsd-typography p,
+.tsd-typography ul,
+.tsd-typography ol {
+    margin: 1em 0;
+}
+
+@media (min-width: 901px) and (max-width: 1024px) {
+    html .col-content {
+        width: 72%;
+    }
+    html .col-menu {
+        width: 28%;
+    }
+    html .tsd-navigation {
+        padding-left: 10px;
+    }
+}
+@media (max-width: 900px) {
+    html .col-content {
+        float: none;
+        width: 100%;
+    }
+    html .col-menu {
+        position: fixed !important;
+        overflow: auto;
+        -webkit-overflow-scrolling: touch;
+        z-index: 1024;
+        top: 0 !important;
+        bottom: 0 !important;
+        left: auto !important;
+        right: 0 !important;
+        width: 100%;
+        padding: 20px 20px 0 0;
+        max-width: 450px;
+        visibility: hidden;
+        background-color: var(--color-panel);
+        transform: translate(100%, 0);
+    }
+    html .col-menu > *:last-child {
+        padding-bottom: 20px;
+    }
+    html .overlay {
+        content: "";
+        display: block;
+        position: fixed;
+        z-index: 1023;
+        top: 0;
+        left: 0;
+        right: 0;
+        bottom: 0;
+        background-color: rgba(0, 0, 0, 0.75);
+        visibility: hidden;
+    }
+
+    .to-has-menu .overlay {
+        animation: fade-in 0.4s;
+    }
+
+    .to-has-menu :is(header, footer, .col-content) {
+        animation: shift-to-left 0.4s;
+    }
+
+    .to-has-menu .col-menu {
+        animation: pop-in-from-right 0.4s;
+    }
+
+    .from-has-menu .overlay {
+        animation: fade-out 0.4s;
+    }
+
+    .from-has-menu :is(header, footer, .col-content) {
+        animation: unshift-to-left 0.4s;
+    }
+
+    .from-has-menu .col-menu {
+        animation: pop-out-to-right 0.4s;
+    }
+
+    .has-menu body {
+        overflow: hidden;
+    }
+    .has-menu .overlay {
+        visibility: visible;
+    }
+    .has-menu :is(header, footer, .col-content) {
+        transform: translate(-25%, 0);
+    }
+    .has-menu .col-menu {
+        visibility: visible;
+        transform: translate(0, 0);
+        display: grid;
+        grid-template-rows: auto 1fr;
+        max-height: 100vh;
+    }
+    .has-menu .tsd-navigation {
+        max-height: 100%;
+    }
+}
+
+.tsd-page-title {
+    padding: 70px 0 20px 0;
+    margin: 0 0 40px 0;
+    background: var(--color-panel);
+    box-shadow: 0 0 5px rgba(0, 0, 0, 0.35);
+}
+.tsd-page-title h1 {
+    margin: 0;
+}
+
+.tsd-breadcrumb {
+    margin: 0;
+    padding: 0;
+    color: var(--color-text-aside);
+}
+.tsd-breadcrumb a {
+    color: var(--color-text-aside);
+    text-decoration: none;
+}
+.tsd-breadcrumb a:hover {
+    text-decoration: underline;
+}
+.tsd-breadcrumb li {
+    display: inline;
+}
+.tsd-breadcrumb li:after {
+    content: " / ";
+}
+
+dl.tsd-comment-tags {
+    overflow: hidden;
+}
+dl.tsd-comment-tags dt {
+    float: left;
+    padding: 1px 5px;
+    margin: 0 10px 0 0;
+    border-radius: 4px;
+    border: 1px solid var(--color-comment-tag);
+    color: var(--color-comment-tag);
+    font-size: 0.8em;
+    font-weight: normal;
+}
+dl.tsd-comment-tags dd {
+    margin: 0 0 10px 0;
+}
+dl.tsd-comment-tags dd:before,
+dl.tsd-comment-tags dd:after {
+    display: table;
+    content: " ";
+}
+dl.tsd-comment-tags dd pre,
+dl.tsd-comment-tags dd:after {
+    clear: both;
+}
+dl.tsd-comment-tags p {
+    margin: 0;
+}
+
+.tsd-panel.tsd-comment .lead {
+    font-size: 1.1em;
+    line-height: 1.333em;
+    margin-bottom: 2em;
+}
+.tsd-panel.tsd-comment .lead:last-child {
+    margin-bottom: 0;
+}
+
+.toggle-protected .tsd-is-private {
+    display: none;
+}
+
+.toggle-public .tsd-is-private,
+.toggle-public .tsd-is-protected,
+.toggle-public .tsd-is-private-protected {
+    display: none;
+}
+
+.toggle-inherited .tsd-is-inherited {
+    display: none;
+}
+
+.toggle-externals .tsd-is-external {
+    display: none;
+}
+
+#tsd-filter {
+    position: relative;
+    display: inline-block;
+    height: 40px;
+    vertical-align: bottom;
+}
+.no-filter #tsd-filter {
+    display: none;
+}
+#tsd-filter .tsd-filter-group {
+    display: inline-block;
+    height: 40px;
+    vertical-align: bottom;
+    white-space: nowrap;
+}
+#tsd-filter input {
+    display: none;
+}
+@media (max-width: 900px) {
+    #tsd-filter .tsd-filter-group {
+        display: block;
+        position: absolute;
+        top: 40px;
+        right: 20px;
+        height: auto;
+        background-color: var(--color-panel);
+        visibility: hidden;
+        transform: translate(50%, 0);
+        box-shadow: 0 0 4px rgba(0, 0, 0, 0.25);
+    }
+    .has-options #tsd-filter .tsd-filter-group {
+        visibility: visible;
+    }
+    .to-has-options #tsd-filter .tsd-filter-group {
+        animation: fade-in 0.2s;
+    }
+    .from-has-options #tsd-filter .tsd-filter-group {
+        animation: fade-out 0.2s;
+    }
+    #tsd-filter label,
+    #tsd-filter .tsd-select {
+        display: block;
+        padding-right: 20px;
+    }
+}
+
+footer {
+    border-top: 1px solid var(--color-panel-divider);
+    background-color: var(--color-panel);
+}
+footer:after {
+    content: "";
+    display: table;
+}
+footer.with-border-bottom {
+    border-bottom: 1px solid var(--color-panel-divider);
+}
+footer .tsd-legend-group {
+    font-size: 0;
+}
+footer .tsd-legend {
+    display: inline-block;
+    width: 25%;
+    padding: 0;
+    font-size: 16px;
+    list-style: none;
+    line-height: 1.333em;
+    vertical-align: top;
+}
+@media (max-width: 900px) {
+    footer .tsd-legend {
+        width: 50%;
+    }
+}
+
+.tsd-hierarchy {
+    list-style: square;
+    padding: 0 0 0 20px;
+    margin: 0;
+}
+.tsd-hierarchy .target {
+    font-weight: bold;
+}
+
+.tsd-index-panel .tsd-index-content {
+    margin-bottom: -30px !important;
+}
+.tsd-index-panel .tsd-index-section {
+    margin-bottom: 30px !important;
+}
+.tsd-index-panel h3 {
+    margin: 0 -20px 10px -20px;
+    padding: 0 20px 10px 20px;
+    border-bottom: 1px solid var(--color-panel-divider);
+}
+.tsd-index-panel ul.tsd-index-list {
+    -webkit-column-count: 3;
+    -moz-column-count: 3;
+    -ms-column-count: 3;
+    -o-column-count: 3;
+    column-count: 3;
+    -webkit-column-gap: 20px;
+    -moz-column-gap: 20px;
+    -ms-column-gap: 20px;
+    -o-column-gap: 20px;
+    column-gap: 20px;
+    padding: 0;
+    list-style: none;
+    line-height: 1.333em;
+}
+@media (max-width: 900px) {
+    .tsd-index-panel ul.tsd-index-list {
+        -webkit-column-count: 1;
+        -moz-column-count: 1;
+        -ms-column-count: 1;
+        -o-column-count: 1;
+        column-count: 1;
+    }
+}
+@media (min-width: 901px) and (max-width: 1024px) {
+    .tsd-index-panel ul.tsd-index-list {
+        -webkit-column-count: 2;
+        -moz-column-count: 2;
+        -ms-column-count: 2;
+        -o-column-count: 2;
+        column-count: 2;
+    }
+}
+.tsd-index-panel ul.tsd-index-list li {
+    -webkit-page-break-inside: avoid;
+    -moz-page-break-inside: avoid;
+    -ms-page-break-inside: avoid;
+    -o-page-break-inside: avoid;
+    page-break-inside: avoid;
+}
+.tsd-index-panel a,
+.tsd-index-panel .tsd-parent-kind-module a {
+    color: var(--color-ts);
+}
+.tsd-index-panel .tsd-parent-kind-interface a {
+    color: var(--color-ts-interface);
+}
+.tsd-index-panel .tsd-parent-kind-enum a {
+    color: var(--color-ts-enum);
+}
+.tsd-index-panel .tsd-parent-kind-class a {
+    color: var(--color-ts-class);
+}
+.tsd-index-panel .tsd-kind-module a {
+    color: var(--color-ts);
+}
+.tsd-index-panel .tsd-kind-interface a {
+    color: var(--color-ts-interface);
+}
+.tsd-index-panel .tsd-kind-enum a {
+    color: var(--color-ts-enum);
+}
+.tsd-index-panel .tsd-kind-class a {
+    color: var(--color-ts-class);
+}
+.tsd-index-panel .tsd-is-private a {
+    color: var(--color-ts-private);
+}
+
+.tsd-flag {
+    display: inline-block;
+    padding: 0.25em 0.4em;
+    border-radius: 4px;
+    color: var(--color-comment-tag-text);
+    background-color: var(--color-comment-tag);
+    text-indent: 0;
+    font-size: 75%;
+    line-height: 1;
+    font-weight: normal;
+}
+
+.tsd-anchor {
+    position: absolute;
+    top: -100px;
+}
+
+.tsd-member {
+    position: relative;
+}
+.tsd-member .tsd-anchor + h3 {
+    margin-top: 0;
+    margin-bottom: 0;
+    border-bottom: none;
+}
+.tsd-member [data-tsd-kind] {
+    color: var(--color-ts);
+}
+.tsd-member [data-tsd-kind="Interface"] {
+    color: var(--color-ts-interface);
+}
+.tsd-member [data-tsd-kind="Enum"] {
+    color: var(--color-ts-enum);
+}
+.tsd-member [data-tsd-kind="Class"] {
+    color: var(--color-ts-class);
+}
+.tsd-member [data-tsd-kind="Private"] {
+    color: var(--color-ts-private);
+}
+
+.tsd-navigation {
+    margin: 0 0 0 40px;
+}
+.tsd-navigation a {
+    display: block;
+    padding-top: 2px;
+    padding-bottom: 2px;
+    border-left: 2px solid transparent;
+    color: var(--color-text);
+    text-decoration: none;
+    transition: border-left-color 0.1s;
+}
+.tsd-navigation a:hover {
+    text-decoration: underline;
+}
+.tsd-navigation ul {
+    margin: 0;
+    padding: 0;
+    list-style: none;
+}
+.tsd-navigation li {
+    padding: 0;
+}
+
+.tsd-navigation.primary {
+    padding-bottom: 40px;
+}
+.tsd-navigation.primary a {
+    display: block;
+    padding-top: 6px;
+    padding-bottom: 6px;
+}
+.tsd-navigation.primary ul li a {
+    padding-left: 5px;
+}
+.tsd-navigation.primary ul li li a {
+    padding-left: 25px;
+}
+.tsd-navigation.primary ul li li li a {
+    padding-left: 45px;
+}
+.tsd-navigation.primary ul li li li li a {
+    padding-left: 65px;
+}
+.tsd-navigation.primary ul li li li li li a {
+    padding-left: 85px;
+}
+.tsd-navigation.primary ul li li li li li li a {
+    padding-left: 105px;
+}
+.tsd-navigation.primary > ul {
+    border-bottom: 1px solid var(--color-panel-divider);
+}
+.tsd-navigation.primary li {
+    border-top: 1px solid var(--color-panel-divider);
+}
+.tsd-navigation.primary li.current > a {
+    font-weight: bold;
+}
+.tsd-navigation.primary li.label span {
+    display: block;
+    padding: 20px 0 6px 5px;
+    color: var(--color-menu-label);
+}
+.tsd-navigation.primary li.globals + li > span,
+.tsd-navigation.primary li.globals + li > a {
+    padding-top: 20px;
+}
+
+.tsd-navigation.secondary {
+    max-height: calc(100vh - 1rem - 40px);
+    overflow: auto;
+    position: sticky;
+    top: calc(0.5rem + 40px);
+    transition: 0.3s;
+}
+.tsd-navigation.secondary.tsd-navigation--toolbar-hide {
+    max-height: calc(100vh - 1rem);
+    top: 0.5rem;
+}
+.tsd-navigation.secondary ul {
+    transition: opacity 0.2s;
+}
+.tsd-navigation.secondary ul li a {
+    padding-left: 25px;
+}
+.tsd-navigation.secondary ul li li a {
+    padding-left: 45px;
+}
+.tsd-navigation.secondary ul li li li a {
+    padding-left: 65px;
+}
+.tsd-navigation.secondary ul li li li li a {
+    padding-left: 85px;
+}
+.tsd-navigation.secondary ul li li li li li a {
+    padding-left: 105px;
+}
+.tsd-navigation.secondary ul li li li li li li a {
+    padding-left: 125px;
+}
+.tsd-navigation.secondary ul.current a {
+    border-left-color: var(--color-panel-divider);
+}
+.tsd-navigation.secondary li.focus > a,
+.tsd-navigation.secondary ul.current li.focus > a {
+    border-left-color: var(--color-menu-divider-focus);
+}
+.tsd-navigation.secondary li.current {
+    margin-top: 20px;
+    margin-bottom: 20px;
+    border-left-color: var(--color-panel-divider);
+}
+.tsd-navigation.secondary li.current > a {
+    font-weight: bold;
+}
+
+@media (min-width: 901px) {
+    .menu-sticky-wrap {
+        position: static;
+    }
+}
+
+.tsd-panel {
+    margin: 20px 0;
+    padding: 20px;
+    background-color: var(--color-panel);
+    box-shadow: 0 0 4px rgba(0, 0, 0, 0.25);
+}
+.tsd-panel:empty {
+    display: none;
+}
+.tsd-panel > h1,
+.tsd-panel > h2,
+.tsd-panel > h3 {
+    margin: 1.5em -20px 10px -20px;
+    padding: 0 20px 10px 20px;
+    border-bottom: 1px solid var(--color-panel-divider);
+}
+.tsd-panel > h1.tsd-before-signature,
+.tsd-panel > h2.tsd-before-signature,
+.tsd-panel > h3.tsd-before-signature {
+    margin-bottom: 0;
+    border-bottom: 0;
+}
+.tsd-panel table {
+    display: block;
+    width: 100%;
+    overflow: auto;
+    margin-top: 10px;
+    word-break: normal;
+    word-break: keep-all;
+    border-collapse: collapse;
+}
+.tsd-panel table th {
+    font-weight: bold;
+}
+.tsd-panel table th,
+.tsd-panel table td {
+    padding: 6px 13px;
+    border: 1px solid var(--color-panel-divider);
+}
+.tsd-panel table tr {
+    background: var(--color-background);
+}
+.tsd-panel table tr:nth-child(even) {
+    background: var(--color-secondary-background);
+}
+
+.tsd-panel-group {
+    margin: 60px 0;
+}
+.tsd-panel-group > h1,
+.tsd-panel-group > h2,
+.tsd-panel-group > h3 {
+    padding-left: 20px;
+    padding-right: 20px;
+}
+
+#tsd-search {
+    transition: background-color 0.2s;
+}
+#tsd-search .title {
+    position: relative;
+    z-index: 2;
+}
+#tsd-search .field {
+    position: absolute;
+    left: 0;
+    top: 0;
+    right: 40px;
+    height: 40px;
+}
+#tsd-search .field input {
+    box-sizing: border-box;
+    position: relative;
+    top: -50px;
+    z-index: 1;
+    width: 100%;
+    padding: 0 10px;
+    opacity: 0;
+    outline: 0;
+    border: 0;
+    background: transparent;
+    color: var(--color-text);
+}
+#tsd-search .field label {
+    position: absolute;
+    overflow: hidden;
+    right: -40px;
+}
+#tsd-search .field input,
+#tsd-search .title {
+    transition: opacity 0.2s;
+}
+#tsd-search .results {
+    position: absolute;
+    visibility: hidden;
+    top: 40px;
+    width: 100%;
+    margin: 0;
+    padding: 0;
+    list-style: none;
+    box-shadow: 0 0 4px rgba(0, 0, 0, 0.25);
+}
+#tsd-search .results li {
+    padding: 0 10px;
+    background-color: var(--color-background);
+}
+#tsd-search .results li:nth-child(even) {
+    background-color: var(--color-panel);
+}
+#tsd-search .results li.state {
+    display: none;
+}
+#tsd-search .results li.current,
+#tsd-search .results li:hover {
+    background-color: var(--color-panel-divider);
+}
+#tsd-search .results a {
+    display: block;
+}
+#tsd-search .results a:before {
+    top: 10px;
+}
+#tsd-search .results span.parent {
+    color: var(--color-text-aside);
+    font-weight: normal;
+}
+#tsd-search.has-focus {
+    background-color: var(--color-panel-divider);
+}
+#tsd-search.has-focus .field input {
+    top: 0;
+    opacity: 1;
+}
+#tsd-search.has-focus .title {
+    z-index: 0;
+    opacity: 0;
+}
+#tsd-search.has-focus .results {
+    visibility: visible;
+}
+#tsd-search.loading .results li.state.loading {
+    display: block;
+}
+#tsd-search.failure .results li.state.failure {
+    display: block;
+}
+
+.tsd-signature {
+    margin: 0 0 1em 0;
+    padding: 10px;
+    border: 1px solid var(--color-panel-divider);
+    font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
+    font-size: 14px;
+    overflow-x: auto;
+}
+.tsd-signature.tsd-kind-icon {
+    padding-left: 30px;
+}
+.tsd-signature.tsd-kind-icon:before {
+    top: 10px;
+    left: 10px;
+}
+.tsd-panel > .tsd-signature {
+    margin-left: -20px;
+    margin-right: -20px;
+    border-width: 1px 0;
+}
+.tsd-panel > .tsd-signature.tsd-kind-icon {
+    padding-left: 40px;
+}
+.tsd-panel > .tsd-signature.tsd-kind-icon:before {
+    left: 20px;
+}
+
+.tsd-signature-symbol {
+    color: var(--color-text-aside);
+    font-weight: normal;
+}
+
+.tsd-signature-type {
+    font-style: italic;
+    font-weight: normal;
+}
+
+.tsd-signatures {
+    padding: 0;
+    margin: 0 0 1em 0;
+    border: 1px solid var(--color-panel-divider);
+}
+.tsd-signatures .tsd-signature {
+    margin: 0;
+    border-width: 1px 0 0 0;
+    transition: background-color 0.1s;
+}
+.tsd-signatures .tsd-signature:first-child {
+    border-top-width: 0;
+}
+.tsd-signatures .tsd-signature.current {
+    background-color: var(--color-panel-divider);
+}
+.tsd-signatures.active > .tsd-signature {
+    cursor: pointer;
+}
+.tsd-panel > .tsd-signatures {
+    margin-left: -20px;
+    margin-right: -20px;
+    border-width: 1px 0;
+}
+.tsd-panel > .tsd-signatures .tsd-signature.tsd-kind-icon {
+    padding-left: 40px;
+}
+.tsd-panel > .tsd-signatures .tsd-signature.tsd-kind-icon:before {
+    left: 20px;
+}
+.tsd-panel > a.anchor + .tsd-signatures {
+    border-top-width: 0;
+    margin-top: -20px;
+}
+
+ul.tsd-descriptions {
+    position: relative;
+    overflow: hidden;
+    padding: 0;
+    list-style: none;
+}
+ul.tsd-descriptions.active > .tsd-description {
+    display: none;
+}
+ul.tsd-descriptions.active > .tsd-description.current {
+    display: block;
+}
+ul.tsd-descriptions.active > .tsd-description.fade-in {
+    animation: fade-in-delayed 0.3s;
+}
+ul.tsd-descriptions.active > .tsd-description.fade-out {
+    animation: fade-out-delayed 0.3s;
+    position: absolute;
+    display: block;
+    top: 0;
+    left: 0;
+    right: 0;
+    opacity: 0;
+    visibility: hidden;
+}
+ul.tsd-descriptions h4,
+ul.tsd-descriptions .tsd-index-panel h3,
+.tsd-index-panel ul.tsd-descriptions h3 {
+    font-size: 16px;
+    margin: 1em 0 0.5em 0;
+}
+
+ul.tsd-parameters,
+ul.tsd-type-parameters {
+    list-style: square;
+    margin: 0;
+    padding-left: 20px;
+}
+ul.tsd-parameters > li.tsd-parameter-signature,
+ul.tsd-type-parameters > li.tsd-parameter-signature {
+    list-style: none;
+    margin-left: -20px;
+}
+ul.tsd-parameters h5,
+ul.tsd-type-parameters h5 {
+    font-size: 16px;
+    margin: 1em 0 0.5em 0;
+}
+ul.tsd-parameters .tsd-comment,
+ul.tsd-type-parameters .tsd-comment {
+    margin-top: -0.5em;
+}
+
+.tsd-sources {
+    font-size: 14px;
+    color: var(--color-text-aside);
+    margin: 0 0 1em 0;
+}
+.tsd-sources a {
+    color: var(--color-text-aside);
+    text-decoration: underline;
+}
+.tsd-sources ul,
+.tsd-sources p {
+    margin: 0 !important;
+}
+.tsd-sources ul {
+    list-style: none;
+    padding: 0;
+}
+
+.tsd-page-toolbar {
+    position: fixed;
+    z-index: 1;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 40px;
+    color: var(--color-toolbar-text);
+    background: var(--color-toolbar);
+    border-bottom: 1px solid var(--color-panel-divider);
+    transition: transform 0.3s linear;
+}
+.tsd-page-toolbar a {
+    color: var(--color-toolbar-text);
+    text-decoration: none;
+}
+.tsd-page-toolbar a.title {
+    font-weight: bold;
+}
+.tsd-page-toolbar a.title:hover {
+    text-decoration: underline;
+}
+.tsd-page-toolbar .table-wrap {
+    display: table;
+    width: 100%;
+    height: 40px;
+}
+.tsd-page-toolbar .table-cell {
+    display: table-cell;
+    position: relative;
+    white-space: nowrap;
+    line-height: 40px;
+}
+.tsd-page-toolbar .table-cell:first-child {
+    width: 100%;
+}
+
+.tsd-page-toolbar--hide {
+    transform: translateY(-100%);
+}
+
+.tsd-select .tsd-select-list li:before,
+.tsd-select .tsd-select-label:before,
+.tsd-widget:before {
+    content: "";
+    display: inline-block;
+    width: 40px;
+    height: 40px;
+    margin: 0 -8px 0 0;
+    background-image: url(./widgets.png);
+    background-repeat: no-repeat;
+    text-indent: -1024px;
+    vertical-align: bottom;
+    filter: var(--icon-filter);
+}
+@media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi) {
+    .tsd-select .tsd-select-list li:before,
+    .tsd-select .tsd-select-label:before,
+    .tsd-widget:before {
+        background-image: url(./widgets@2x.png);
+        background-size: 320px 40px;
+    }
+}
+
+.tsd-widget {
+    display: inline-block;
+    overflow: hidden;
+    opacity: 0.8;
+    height: 40px;
+    transition: opacity 0.1s, background-color 0.2s;
+    vertical-align: bottom;
+    cursor: pointer;
+}
+.tsd-widget:hover {
+    opacity: 0.9;
+}
+.tsd-widget.active {
+    opacity: 1;
+    background-color: var(--color-panel-divider);
+}
+.tsd-widget.no-caption {
+    width: 40px;
+}
+.tsd-widget.no-caption:before {
+    margin: 0;
+}
+.tsd-widget.search:before {
+    background-position: 0 0;
+}
+.tsd-widget.menu:before {
+    background-position: -40px 0;
+}
+.tsd-widget.options:before {
+    background-position: -80px 0;
+}
+.tsd-widget.options,
+.tsd-widget.menu {
+    display: none;
+}
+@media (max-width: 900px) {
+    .tsd-widget.options,
+    .tsd-widget.menu {
+        display: inline-block;
+    }
+}
+input[type="checkbox"] + .tsd-widget:before {
+    background-position: -120px 0;
+}
+input[type="checkbox"]:checked + .tsd-widget:before {
+    background-position: -160px 0;
+}
+
+.tsd-select {
+    position: relative;
+    display: inline-block;
+    height: 40px;
+    transition: opacity 0.1s, background-color 0.2s;
+    vertical-align: bottom;
+    cursor: pointer;
+}
+.tsd-select .tsd-select-label {
+    opacity: 0.6;
+    transition: opacity 0.2s;
+}
+.tsd-select .tsd-select-label:before {
+    background-position: -240px 0;
+}
+.tsd-select.active .tsd-select-label {
+    opacity: 0.8;
+}
+.tsd-select.active .tsd-select-list {
+    visibility: visible;
+    opacity: 1;
+    transition-delay: 0s;
+}
+.tsd-select .tsd-select-list {
+    position: absolute;
+    visibility: hidden;
+    top: 40px;
+    left: 0;
+    margin: 0;
+    padding: 0;
+    opacity: 0;
+    list-style: none;
+    box-shadow: 0 0 4px rgba(0, 0, 0, 0.25);
+    transition: visibility 0s 0.2s, opacity 0.2s;
+}
+.tsd-select .tsd-select-list li {
+    padding: 0 20px 0 0;
+    background-color: var(--color-background);
+}
+.tsd-select .tsd-select-list li:before {
+    background-position: 40px 0;
+}
+.tsd-select .tsd-select-list li:nth-child(even) {
+    background-color: var(--color-panel);
+}
+.tsd-select .tsd-select-list li:hover {
+    background-color: var(--color-panel-divider);
+}
+.tsd-select .tsd-select-list li.selected:before {
+    background-position: -200px 0;
+}
+@media (max-width: 900px) {
+    .tsd-select .tsd-select-list {
+        top: 0;
+        left: auto;
+        right: 100%;
+        margin-right: -5px;
+    }
+    .tsd-select .tsd-select-label:before {
+        background-position: -280px 0;
+    }
+}
+
+img {
+    max-width: 100%;
+}
+
+.tsd-anchor-icon {
+    margin-left: 10px;
+    vertical-align: middle;
+    color: var(--color-text);
+}
+
+.tsd-anchor-icon svg {
+    width: 1em;
+    height: 1em;
+    visibility: hidden;
+}
+
+.tsd-anchor-link:hover > .tsd-anchor-icon svg {
+    visibility: visible;
+}
diff --git a/v2/assets/widgets.png b/v2/assets/widgets.png
new file mode 100644
index 00000000..c7380532
Binary files /dev/null and b/v2/assets/widgets.png differ
diff --git a/v2/assets/widgets@2x.png b/v2/assets/widgets@2x.png
new file mode 100644
index 00000000..4bbbd572
Binary files /dev/null and b/v2/assets/widgets@2x.png differ
diff --git a/v2/classes/index.AuthApiError.html b/v2/classes/index.AuthApiError.html
new file mode 100644
index 00000000..10e056f2
--- /dev/null
+++ b/v2/classes/index.AuthApiError.html
@@ -0,0 +1,13 @@
+AuthApiError | @supabase/supabase-js
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

Index

Constructors

  • new AuthApiError(message: string, status: number, code: undefined | string): AuthApiError
  • Parameters

    • message: string
    • status: number
    • code: undefined | string

    Returns AuthApiError

Properties

__isAuthError: boolean
code: undefined | ErrorCode | string & {}
+

Error code associated with the error. Most errors coming from +HTTP responses will have a code, though some errors that occur +before a response is received will not have one present. In that +case {@link #status} will also be undefined.

+
message: string
name: string
stack?: string
status: number
+

HTTP status code that caused the error.

+
prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

Type declaration

stackTraceLimit: number

Methods

  • captureStackTrace(targetObject: object, constructorOpt?: Function): void
  • +

    Create .stack property on a target object

    +

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

Legend

  • Variable
  • Function
  • Function with type parameter
  • Type alias
  • Type alias with type parameter
  • Interface
  • Class with type parameter

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/v2/classes/index.AuthError.html b/v2/classes/index.AuthError.html new file mode 100644 index 00000000..3978b5a2 --- /dev/null +++ b/v2/classes/index.AuthError.html @@ -0,0 +1,13 @@ +AuthError | @supabase/supabase-js
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

Index

Constructors

  • new AuthError(message: string, status?: number, code?: string): AuthError
  • Parameters

    • message: string
    • Optional status: number
    • Optional code: string

    Returns AuthError

Properties

__isAuthError: boolean
code: undefined | ErrorCode | string & {}
+

Error code associated with the error. Most errors coming from +HTTP responses will have a code, though some errors that occur +before a response is received will not have one present. In that +case {@link #status} will also be undefined.

+
message: string
name: string
stack?: string
status: undefined | number
+

HTTP status code that caused the error.

+
prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

Type declaration

stackTraceLimit: number

Methods

  • captureStackTrace(targetObject: object, constructorOpt?: Function): void
  • +

    Create .stack property on a target object

    +

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

Legend

  • Variable
  • Function
  • Function with type parameter
  • Type alias
  • Type alias with type parameter
  • Interface
  • Class with type parameter

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/v2/classes/index.AuthImplicitGrantRedirectError.html b/v2/classes/index.AuthImplicitGrantRedirectError.html new file mode 100644 index 00000000..a89a687c --- /dev/null +++ b/v2/classes/index.AuthImplicitGrantRedirectError.html @@ -0,0 +1,13 @@ +AuthImplicitGrantRedirectError | @supabase/supabase-js
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

Index

Constructors

Properties

__isAuthError: boolean
code: undefined | ErrorCode | string & {}
+

Error code associated with the error. Most errors coming from +HTTP responses will have a code, though some errors that occur +before a response is received will not have one present. In that +case {@link #status} will also be undefined.

+
details: null | { code: string; error: string }
message: string
name: string
stack?: string
status: number
+

HTTP status code that caused the error.

+
prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

Type declaration

stackTraceLimit: number

Methods

  • toJSON(): { details: null | { code: string; error: string }; message: string; name: string; status: number }
  • Returns { details: null | { code: string; error: string }; message: string; name: string; status: number }

    • details: null | { code: string; error: string }
    • message: string
    • name: string
    • status: number
  • captureStackTrace(targetObject: object, constructorOpt?: Function): void
  • +

    Create .stack property on a target object

    +

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

Legend

  • Variable
  • Function
  • Function with type parameter
  • Type alias
  • Type alias with type parameter
  • Interface
  • Class with type parameter

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/v2/classes/index.AuthInvalidCredentialsError.html b/v2/classes/index.AuthInvalidCredentialsError.html new file mode 100644 index 00000000..a05a1dc1 --- /dev/null +++ b/v2/classes/index.AuthInvalidCredentialsError.html @@ -0,0 +1,13 @@ +AuthInvalidCredentialsError | @supabase/supabase-js
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

Index

Constructors

Properties

__isAuthError: boolean
code: undefined | ErrorCode | string & {}
+

Error code associated with the error. Most errors coming from +HTTP responses will have a code, though some errors that occur +before a response is received will not have one present. In that +case {@link #status} will also be undefined.

+
message: string
name: string
stack?: string
status: number
+

HTTP status code that caused the error.

+
prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

Type declaration

stackTraceLimit: number

Methods

  • captureStackTrace(targetObject: object, constructorOpt?: Function): void
  • +

    Create .stack property on a target object

    +

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

Legend

  • Variable
  • Function
  • Function with type parameter
  • Type alias
  • Type alias with type parameter
  • Interface
  • Class with type parameter

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/v2/classes/index.AuthInvalidJwtError.html b/v2/classes/index.AuthInvalidJwtError.html new file mode 100644 index 00000000..2fa525b5 --- /dev/null +++ b/v2/classes/index.AuthInvalidJwtError.html @@ -0,0 +1,13 @@ +AuthInvalidJwtError | @supabase/supabase-js
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

Index

Constructors

Properties

__isAuthError: boolean
code: undefined | ErrorCode | string & {}
+

Error code associated with the error. Most errors coming from +HTTP responses will have a code, though some errors that occur +before a response is received will not have one present. In that +case {@link #status} will also be undefined.

+
message: string
name: string
stack?: string
status: number
+

HTTP status code that caused the error.

+
prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

Type declaration

stackTraceLimit: number

Methods

  • captureStackTrace(targetObject: object, constructorOpt?: Function): void
  • +

    Create .stack property on a target object

    +

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

Legend

  • Variable
  • Function
  • Function with type parameter
  • Type alias
  • Type alias with type parameter
  • Interface
  • Class with type parameter

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/v2/classes/index.AuthInvalidTokenResponseError.html b/v2/classes/index.AuthInvalidTokenResponseError.html new file mode 100644 index 00000000..c01838ea --- /dev/null +++ b/v2/classes/index.AuthInvalidTokenResponseError.html @@ -0,0 +1,13 @@ +AuthInvalidTokenResponseError | @supabase/supabase-js
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

Index

Constructors

Properties

__isAuthError: boolean
code: undefined | ErrorCode | string & {}
+

Error code associated with the error. Most errors coming from +HTTP responses will have a code, though some errors that occur +before a response is received will not have one present. In that +case {@link #status} will also be undefined.

+
message: string
name: string
stack?: string
status: number
+

HTTP status code that caused the error.

+
prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

Type declaration

stackTraceLimit: number

Methods

  • captureStackTrace(targetObject: object, constructorOpt?: Function): void
  • +

    Create .stack property on a target object

    +

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

Legend

  • Variable
  • Function
  • Function with type parameter
  • Type alias
  • Type alias with type parameter
  • Interface
  • Class with type parameter

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/v2/classes/index.AuthPKCEGrantCodeExchangeError.html b/v2/classes/index.AuthPKCEGrantCodeExchangeError.html new file mode 100644 index 00000000..74480f83 --- /dev/null +++ b/v2/classes/index.AuthPKCEGrantCodeExchangeError.html @@ -0,0 +1,13 @@ +AuthPKCEGrantCodeExchangeError | @supabase/supabase-js
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

Index

Constructors

Properties

__isAuthError: boolean
code: undefined | ErrorCode | string & {}
+

Error code associated with the error. Most errors coming from +HTTP responses will have a code, though some errors that occur +before a response is received will not have one present. In that +case {@link #status} will also be undefined.

+
details: null | { code: string; error: string }
message: string
name: string
stack?: string
status: number
+

HTTP status code that caused the error.

+
prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

Type declaration

stackTraceLimit: number

Methods

  • toJSON(): { details: null | { code: string; error: string }; message: string; name: string; status: number }
  • Returns { details: null | { code: string; error: string }; message: string; name: string; status: number }

    • details: null | { code: string; error: string }
    • message: string
    • name: string
    • status: number
  • captureStackTrace(targetObject: object, constructorOpt?: Function): void
  • +

    Create .stack property on a target object

    +

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

Legend

  • Variable
  • Function
  • Function with type parameter
  • Type alias
  • Type alias with type parameter
  • Interface
  • Class with type parameter

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/v2/classes/index.AuthRetryableFetchError.html b/v2/classes/index.AuthRetryableFetchError.html new file mode 100644 index 00000000..8b4817e2 --- /dev/null +++ b/v2/classes/index.AuthRetryableFetchError.html @@ -0,0 +1,13 @@ +AuthRetryableFetchError | @supabase/supabase-js
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

Index

Constructors

Properties

__isAuthError: boolean
code: undefined | ErrorCode | string & {}
+

Error code associated with the error. Most errors coming from +HTTP responses will have a code, though some errors that occur +before a response is received will not have one present. In that +case {@link #status} will also be undefined.

+
message: string
name: string
stack?: string
status: number
+

HTTP status code that caused the error.

+
prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

Type declaration

stackTraceLimit: number

Methods

  • captureStackTrace(targetObject: object, constructorOpt?: Function): void
  • +

    Create .stack property on a target object

    +

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

Legend

  • Variable
  • Function
  • Function with type parameter
  • Type alias
  • Type alias with type parameter
  • Interface
  • Class with type parameter

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/v2/classes/index.AuthSessionMissingError.html b/v2/classes/index.AuthSessionMissingError.html new file mode 100644 index 00000000..7aeb5dbd --- /dev/null +++ b/v2/classes/index.AuthSessionMissingError.html @@ -0,0 +1,13 @@ +AuthSessionMissingError | @supabase/supabase-js
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

Index

Constructors

Properties

__isAuthError: boolean
code: undefined | ErrorCode | string & {}
+

Error code associated with the error. Most errors coming from +HTTP responses will have a code, though some errors that occur +before a response is received will not have one present. In that +case {@link #status} will also be undefined.

+
message: string
name: string
stack?: string
status: number
+

HTTP status code that caused the error.

+
prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

Type declaration

stackTraceLimit: number

Methods

  • captureStackTrace(targetObject: object, constructorOpt?: Function): void
  • +

    Create .stack property on a target object

    +

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

Legend

  • Variable
  • Function
  • Function with type parameter
  • Type alias
  • Type alias with type parameter
  • Interface
  • Class with type parameter

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/v2/classes/index.AuthUnknownError.html b/v2/classes/index.AuthUnknownError.html new file mode 100644 index 00000000..df31e155 --- /dev/null +++ b/v2/classes/index.AuthUnknownError.html @@ -0,0 +1,13 @@ +AuthUnknownError | @supabase/supabase-js
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

Index

Constructors

Properties

__isAuthError: boolean
code: undefined | ErrorCode | string & {}
+

Error code associated with the error. Most errors coming from +HTTP responses will have a code, though some errors that occur +before a response is received will not have one present. In that +case {@link #status} will also be undefined.

+
message: string
name: string
originalError: unknown
stack?: string
status: undefined | number
+

HTTP status code that caused the error.

+
prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

Type declaration

stackTraceLimit: number

Methods

  • captureStackTrace(targetObject: object, constructorOpt?: Function): void
  • +

    Create .stack property on a target object

    +

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

Legend

  • Variable
  • Function
  • Function with type parameter
  • Type alias
  • Type alias with type parameter
  • Interface
  • Class with type parameter

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/v2/classes/index.AuthWeakPasswordError.html b/v2/classes/index.AuthWeakPasswordError.html new file mode 100644 index 00000000..9f9c96ba --- /dev/null +++ b/v2/classes/index.AuthWeakPasswordError.html @@ -0,0 +1,19 @@ +AuthWeakPasswordError | @supabase/supabase-js
Options
All
  • Public
  • Public/Protected
  • All
Menu
+

This error is thrown on certain methods when the password used is deemed +weak. Inspect the reasons to identify what password strength rules are +inadequate.

+

Hierarchy

Index

Constructors

Properties

__isAuthError: boolean
code: undefined | ErrorCode | string & {}
+

Error code associated with the error. Most errors coming from +HTTP responses will have a code, though some errors that occur +before a response is received will not have one present. In that +case {@link #status} will also be undefined.

+
message: string
name: string
+

Reasons why the password is deemed weak.

+
stack?: string
status: number
+

HTTP status code that caused the error.

+
prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

Type declaration

stackTraceLimit: number

Methods

  • captureStackTrace(targetObject: object, constructorOpt?: Function): void
  • +

    Create .stack property on a target object

    +

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

Legend

  • Variable
  • Function
  • Function with type parameter
  • Type alias
  • Type alias with type parameter
  • Interface
  • Class with type parameter

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/v2/classes/index.CustomAuthError.html b/v2/classes/index.CustomAuthError.html new file mode 100644 index 00000000..8ac1ff76 --- /dev/null +++ b/v2/classes/index.CustomAuthError.html @@ -0,0 +1,13 @@ +CustomAuthError | @supabase/supabase-js
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

Index

Constructors

  • new CustomAuthError(message: string, name: string, status: number, code: undefined | string): CustomAuthError
  • Parameters

    • message: string
    • name: string
    • status: number
    • code: undefined | string

    Returns CustomAuthError

Properties

__isAuthError: boolean
code: undefined | ErrorCode | string & {}
+

Error code associated with the error. Most errors coming from +HTTP responses will have a code, though some errors that occur +before a response is received will not have one present. In that +case {@link #status} will also be undefined.

+
message: string
name: string
stack?: string
status: number
+

HTTP status code that caused the error.

+
prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

Type declaration

stackTraceLimit: number

Methods

  • captureStackTrace(targetObject: object, constructorOpt?: Function): void
  • +

    Create .stack property on a target object

    +

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

Legend

  • Variable
  • Function
  • Function with type parameter
  • Type alias
  • Type alias with type parameter
  • Interface
  • Class with type parameter

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/v2/classes/index.FunctionsError.html b/v2/classes/index.FunctionsError.html new file mode 100644 index 00000000..a4193dc0 --- /dev/null +++ b/v2/classes/index.FunctionsError.html @@ -0,0 +1,6 @@ +FunctionsError | @supabase/supabase-js
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

Index

Constructors

  • new FunctionsError(message: string, name?: string, context?: any): FunctionsError
  • Parameters

    • message: string
    • Optional name: string
    • Optional context: any

    Returns FunctionsError

Properties

context: any
message: string
name: string
stack?: string
prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

Type declaration

stackTraceLimit: number

Methods

  • captureStackTrace(targetObject: object, constructorOpt?: Function): void
  • +

    Create .stack property on a target object

    +

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

Legend

  • Variable
  • Function
  • Function with type parameter
  • Type alias
  • Type alias with type parameter
  • Interface
  • Class with type parameter

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/v2/classes/index.FunctionsFetchError.html b/v2/classes/index.FunctionsFetchError.html new file mode 100644 index 00000000..ffd53f24 --- /dev/null +++ b/v2/classes/index.FunctionsFetchError.html @@ -0,0 +1,8 @@ +FunctionsFetchError | @supabase/supabase-js
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

Index

Constructors

Properties

context: any
message: string
name: string
stack?: string
prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)
+

Optional override for formatting stack traces

+

Type declaration

stackTraceLimit: number

Methods

  • captureStackTrace(targetObject: object, constructorOpt?: Function): void
  • +

    Create .stack property on a target object

    +

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

Legend

  • Variable
  • Function
  • Function with type parameter
  • Type alias
  • Type alias with type parameter
  • Interface
  • Class with type parameter

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/v2/classes/index.FunctionsHttpError.html b/v2/classes/index.FunctionsHttpError.html new file mode 100644 index 00000000..2b4a9752 --- /dev/null +++ b/v2/classes/index.FunctionsHttpError.html @@ -0,0 +1,8 @@ +FunctionsHttpError | @supabase/supabase-js
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

Index

Constructors

Properties

context: any
message: string
name: string
stack?: string
prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)
+

Optional override for formatting stack traces

+

Type declaration

stackTraceLimit: number

Methods

  • captureStackTrace(targetObject: object, constructorOpt?: Function): void
  • +

    Create .stack property on a target object

    +

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

Legend

  • Variable
  • Function
  • Function with type parameter
  • Type alias
  • Type alias with type parameter
  • Interface
  • Class with type parameter

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/v2/classes/index.FunctionsRelayError.html b/v2/classes/index.FunctionsRelayError.html new file mode 100644 index 00000000..50a0675f --- /dev/null +++ b/v2/classes/index.FunctionsRelayError.html @@ -0,0 +1,8 @@ +FunctionsRelayError | @supabase/supabase-js
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

Index

Constructors

Properties

context: any
message: string
name: string
stack?: string
prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)
+

Optional override for formatting stack traces

+

Type declaration

stackTraceLimit: number

Methods

  • captureStackTrace(targetObject: object, constructorOpt?: Function): void
  • +

    Create .stack property on a target object

    +

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

Legend

  • Variable
  • Function
  • Function with type parameter
  • Type alias
  • Type alias with type parameter
  • Interface
  • Class with type parameter

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/v2/classes/index.GoTrueAdminApi.html b/v2/classes/index.GoTrueAdminApi.html new file mode 100644 index 00000000..dcb62f7b --- /dev/null +++ b/v2/classes/index.GoTrueAdminApi.html @@ -0,0 +1,47 @@ +GoTrueAdminApi | @supabase/supabase-js
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • GoTrueAdminApi

Index

Constructors

  • new GoTrueAdminApi(__namedParameters: { fetch?: ((input: RequestInfo | URL, init?: RequestInit) => Promise<Response>); headers?: {}; url: string }): GoTrueAdminApi
  • Parameters

    • __namedParameters: { fetch?: ((input: RequestInfo | URL, init?: RequestInit) => Promise<Response>); headers?: {}; url: string }
      • Optional fetch?: ((input: RequestInfo | URL, init?: RequestInit) => Promise<Response>)
          • (input: RequestInfo | URL, init?: RequestInit): Promise<Response>
          • Parameters

            • input: RequestInfo | URL
            • Optional init: RequestInit

            Returns Promise<Response>

      • Optional headers?: {}
        • [key: string]: string
      • url: string

    Returns GoTrueAdminApi

Properties

_deleteFactor: any
_listFactors: any
fetch: ((input: RequestInfo | URL, init?: RequestInit) => Promise<Response>)

Type declaration

    • (input: RequestInfo | URL, init?: RequestInit): Promise<Response>
    • Parameters

      • input: RequestInfo | URL
      • Optional init: RequestInit

      Returns Promise<Response>

headers: {}

Type declaration

  • [key: string]: string
+

Contains all MFA administration methods.

+
url: string

Methods

  • +

    Creates a new user. +This function should only be called on a server. Never expose your service_role key in the browser.

    +

    Parameters

    Returns Promise<UserResponse>

  • deleteUser(id: string, shouldSoftDelete?: boolean): Promise<UserResponse>
  • +

    Delete a user. Requires a service_role key.

    +

    Parameters

    • id: string
      +

      The user id you want to remove.

      +
    • Optional shouldSoftDelete: boolean
      +

      If true, then the user will be soft-deleted from the auth schema. Soft deletion allows user identification from the hashed user ID but is not reversible. +Defaults to false for backward compatibility.

      +

      This function should only be called on a server. Never expose your service_role key in the browser.

      +

    Returns Promise<UserResponse>

  • +

    Generates email links and OTPs to be sent via a custom email provider.

    +

    Parameters

    Returns Promise<GenerateLinkResponse>

  • +

    Get user by id.

    +

    Parameters

    • uid: string
      +

      The user's unique identifier

      +

      This function should only be called on a server. Never expose your service_role key in the browser.

      +

    Returns Promise<UserResponse>

  • inviteUserByEmail(email: string, options?: { data?: object; redirectTo?: string }): Promise<UserResponse>
  • +

    Sends an invite link to an email address.

    +

    Parameters

    • email: string
      +

      The email address of the user.

      +
    • Optional options: { data?: object; redirectTo?: string }
      +

      Additional options to be included when inviting.

      +
      • Optional data?: object
        +

        A custom data object to store additional metadata about the user. This maps to the auth.users.user_metadata column.

        +
      • Optional redirectTo?: string
        +

        The URL which will be appended to the email link sent to the user's email address. Once clicked the user will end up on this URL.

        +

    Returns Promise<UserResponse>

  • +

    Get a list of users.

    +

    This function should only be called on a server. Never expose your service_role key in the browser.

    +

    Parameters

    • Optional params: PageParams
      +

      An object which supports page and perPage as numbers, to alter the paginated results.

      +

    Returns Promise<{ data: { aud: string; users: AuthUser[] } & Pagination; error: null } | { data: { users: [] }; error: AuthError }>

  • signOut(jwt: string, scope?: "global" | "local" | "others"): Promise<{ data: null; error: null | AuthError }>
  • +

    Removes a logged-in session.

    +

    Parameters

    • jwt: string
      +

      A valid, logged-in JWT.

      +
    • Optional scope: "global" | "local" | "others"
      +

      The logout sope.

      +

    Returns Promise<{ data: null; error: null | AuthError }>

  • +

    Updates the user data.

    +

    Parameters

    • uid: string
    • attributes: AdminUserAttributes
      +

      The data you want to update.

      +

      This function should only be called on a server. Never expose your service_role key in the browser.

      +

    Returns Promise<UserResponse>

Legend

  • Variable
  • Function
  • Function with type parameter
  • Type alias
  • Type alias with type parameter
  • Interface
  • Class with type parameter

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/v2/classes/index.GoTrueClient.html b/v2/classes/index.GoTrueClient.html new file mode 100644 index 00000000..52e2fb85 --- /dev/null +++ b/v2/classes/index.GoTrueClient.html @@ -0,0 +1,242 @@ +GoTrueClient | @supabase/supabase-js
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • GoTrueClient

Index

Constructors

  • +

    Create a new client for use in the browser.

    +

    Parameters

    Returns GoTrueClient

Properties

__loadSession: any
+

NEVER USE DIRECTLY!

+

Always use {@link #_useSession}.

+
_acquireLock: any
+

Acquires a global lock based on the storage key.

+
_autoRefreshTokenTick: any
+

Runs the auto refresh token tick.

+
_callRefreshToken: any
_challenge: any
+

{@see GoTrueMFAApi#challenge}

+
_challengeAndVerify: any
+

{@see GoTrueMFAApi#challengeAndVerify}

+
_debug: any
_emitInitialSession: any
_enroll: any
+

{@see GoTrueMFAApi#enroll}

+
_exchangeCodeForSession: any
_getAuthenticatorAssuranceLevel: any
+

{@see GoTrueMFAApi#getAuthenticatorAssuranceLevel}

+
_getSessionFromURL: any
+

Gets the session data from a URL string

+
_getUrlForProvider: any
+

Generates the relevant login URL for a third-party provider.

+
param options.redirectTo

A URL or mobile address to send the user to after they are confirmed.

+
param options.scopes

A space-separated list of scopes granted to the OAuth application.

+
param options.queryParams

An object of key-value pairs containing query parameters granted to the OAuth application.

+
_getUser: any
_handleProviderSignIn: any
_handleVisibilityChange: any
+

Registers callbacks on the browser / platform, which in-turn run +algorithms when the browser window/tab are in foreground. On non-browser +platforms it assumes always foreground.

+
_initialize: any
+

IMPORTANT:

+
    +
  1. Never throw in this method, as it is called from the constructor
  2. +
  3. Never return a session from this method as it would be cached over +the whole lifetime of the client
  4. +
+
_isImplicitGrantCallback: any
+

Checks if the current URL contains parameters given by an implicit oauth grant flow (https://www.rfc-editor.org/rfc/rfc6749.html#section-4.2)

+
_isPKCECallback: any
+

Checks if the current URL and backing storage contain parameters given by a PKCE flow

+
_isValidSession: any
_listFactors: any
+

{@see GoTrueMFAApi#listFactors}

+
_notifyAllSubscribers: any
_onVisibilityChanged: any
+

Callback registered with window.addEventListener('visibilitychange').

+
_reauthenticate: any
_recoverAndRefresh: any
+

Recovers the session from LocalStorage and refreshes the token +Note: this method is async to accommodate for AsyncStorage e.g. in React native.

+
_refreshAccessToken: any
+

Generates a new JWT.

+
param refreshToken

A valid refresh token that was returned on login.

+
_removeSession: any
_removeVisibilityChangedCallback: any
+

Removes any registered visibilitychange callback.

+

{@see #startAutoRefresh} +{@see #stopAutoRefresh}

+
_saveSession: any
+

set currentSession and currentUser +process to _startAutoRefreshToken if possible

+
_startAutoRefresh: any
+

This is the private implementation of {@link #startAutoRefresh}. Use this +within the library.

+
_stopAutoRefresh: any
+

This is the private implementation of {@link #stopAutoRefresh}. Use this +within the library.

+
_unenroll: any
_useSession: any
+

Use instead of {@link #getSession} inside the library. It is +semantically usually what you want, as getting a session involves some +processing afterwards that requires only one client operating on the +session at once across multiple tabs or processes.

+
_verify: any
+

{@see GoTrueMFAApi#verify}

+
+

Namespace for the GoTrue admin methods. +These methods should only be used in a trusted server-side environment.

+
autoRefreshTicker: null | Timer
autoRefreshToken: boolean
broadcastChannel: null | BroadcastChannel
+

Used to broadcast state change events to other tabs listening.

+
detectSessionInUrl: boolean
fetch: ((input: RequestInfo | URL, init?: RequestInit) => Promise<Response>)

Type declaration

    • (input: RequestInfo | URL, init?: RequestInit): Promise<Response>
    • Parameters

      • input: RequestInfo | URL
      • Optional init: RequestInit

      Returns Promise<Response>

fetchJwk: any
flowType: AuthFlowType
hasCustomAuthorizationHeader: boolean
headers: {}

Type declaration

  • [key: string]: string
initializePromise: null | Promise<InitializeResult>
+

Keeps track of the async client initialization. +When null or not yet resolved the auth state is unknown +Once resolved the the auth state is known and it's save to call any further client methods. +Keep extra care to never reject or throw uncaught errors

+
instanceID: any
lock: LockFunc
lockAcquired: boolean
logDebugMessages: boolean
logger: ((message: string, ...args: any[]) => void)

Type declaration

    • (message: string, ...args: any[]): void
    • Parameters

      • message: string
      • Rest ...args: any[]

      Returns void

memoryStorage: null | {}
+

Namespace for the MFA methods.

+
pendingInLock: Promise<any>[]
persistSession: boolean
refreshingDeferred: null | Deferred<CallRefreshTokenResult>
signInWithSolana: any
stateChangeEmitters: Map<string, Subscription>
storageKey: string
+

The storage key used to identify the values saved in localStorage

+
suppressGetSessionWarning: boolean
url: string
userStorage: null | SupportedStorage
experimental
visibilityChangedCallback: null | (() => Promise<any>)
nextInstanceID: any

Accessors

  • get jwks(): { keys: JWK[] }
  • set jwks(value: { keys: JWK[] }): void
  • +

    The JWKS used for verifying asymmetric JWTs

    +

    Returns { keys: JWK[] }

  • +

    The JWKS used for verifying asymmetric JWTs

    +

    Parameters

    • value: { keys: JWK[] }

    Returns void

  • get jwks_cached_at(): number
  • set jwks_cached_at(value: number): void
  • Returns number

  • Parameters

    • value: number

    Returns void

Methods

  • _refreshSession(currentSession?: { refresh_token: string }): Promise<AuthResponse>
  • Parameters

    • Optional currentSession: { refresh_token: string }
      • refresh_token: string

    Returns Promise<AuthResponse>

  • _setSession(currentSession: { access_token: string; refresh_token: string }): Promise<AuthResponse>
  • Parameters

    • currentSession: { access_token: string; refresh_token: string }
      • access_token: string
      • refresh_token: string

    Returns Promise<AuthResponse>

  • Parameters

    • Optional __namedParameters: SignOut

    Returns Promise<{ error: null | AuthError }>

  • Parameters

    • attributes: UserAttributes
    • Optional options: { emailRedirectTo?: string }
      • Optional emailRedirectTo?: string

    Returns Promise<UserResponse>

  • +

    Log in an existing user by exchanging an Auth Code issued during the PKCE flow.

    +

    Parameters

    • authCode: string

    Returns Promise<AuthTokenResponse>

  • getClaims(jwt?: string, options?: { allowExpired?: boolean; jwks?: { keys: JWK[] }; keys?: JWK[] }): Promise<{ data: { claims: JwtPayload; header: JwtHeader; signature: Uint8Array }; error: null } | { data: null; error: AuthError } | { data: null; error: null }>
  • +

    Extracts the JWT claims present in the access token by first verifying the +JWT against the server's JSON Web Key Set endpoint +/.well-known/jwks.json which is often cached, resulting in significantly +faster responses. Prefer this method over {@link #getUser} which always +sends a request to the Auth server for each JWT.

    +

    If the project is not using an asymmetric JWT signing key (like ECC or +RSA) it always sends a request to the Auth server (similar to {@link +#getUser}) to verify the JWT.

    +

    Parameters

    • Optional jwt: string
      +

      An optional specific JWT you wish to verify, not the one you + can obtain from {@link #getSession}.

      +
    • Optional options: { allowExpired?: boolean; jwks?: { keys: JWK[] }; keys?: JWK[] }
      +

      Various additional options that allow you to customize the + behavior of this method.

      +
      • Optional allowExpired?: boolean
        +

        If set to true the exp claim will not be validated against the current time.

        +
      • Optional jwks?: { keys: JWK[] }
        +

        If set, this JSON Web Key Set is going to have precedence over the cached value available on the server.

        +
      • Optional keys?: JWK[]
        deprecated

        Please use options.jwks instead.

        +

    Returns Promise<{ data: { claims: JwtPayload; header: JwtHeader; signature: Uint8Array }; error: null } | { data: null; error: AuthError } | { data: null; error: null }>

  • getSession(): Promise<{ data: { session: AuthSession }; error: null } | { data: { session: null }; error: AuthError } | { data: { session: null }; error: null }>
  • +

    Returns the session, refreshing it if necessary.

    +

    The session returned can be null if the session is not detected which can happen in the event a user is not signed-in or has logged out.

    +

    IMPORTANT: This method loads values directly from the storage attached +to the client. If that storage is based on request cookies for example, +the values in it may not be authentic and therefore it's strongly advised +against using this method and its results in such circumstances. A warning +will be emitted if this is detected. Use {@link #getUser()} instead.

    +

    Returns Promise<{ data: { session: AuthSession }; error: null } | { data: { session: null }; error: AuthError } | { data: { session: null }; error: null }>

  • +

    Gets the current user details if there is an existing session. This method +performs a network request to the Supabase Auth server, so the returned +value is authentic and can be used to base authorization rules on.

    +

    Parameters

    • Optional jwt: string
      +

      Takes in an optional access token JWT. If no JWT is provided, the JWT from the current session is used.

      +

    Returns Promise<UserResponse>

  • getUserIdentities(): Promise<{ data: { identities: UserIdentity[] }; error: null } | { data: null; error: AuthError }>
  • +

    Gets all the identities linked to a user.

    +

    Returns Promise<{ data: { identities: UserIdentity[] }; error: null } | { data: null; error: AuthError }>

  • +

    Initializes the client session either from the url or from storage. +This method is automatically called when instantiating the client, but should also be called +manually when checking for an error from an auth redirect (oauth, magiclink, password recovery, etc).

    +

    Returns Promise<InitializeResult>

  • +

    Links an oauth identity to an existing user. +This method supports the PKCE flow.

    +

    Parameters

    Returns Promise<OAuthResponse>

  • +

    Receive a notification every time an auth event happens.

    +

    Parameters

    Returns { data: { subscription: Subscription } }

  • +

    Sends a reauthentication OTP to the user's email or phone number. +Requires the user to be signed-in.

    +

    Returns Promise<AuthResponse>

  • refreshSession(currentSession?: { refresh_token: string }): Promise<AuthResponse>
  • +

    Returns a new session, regardless of expiry status. +Takes in an optional current session. If not passed in, then refreshSession() will attempt to retrieve it from getSession(). +If the current session's refresh token is invalid, an error will be thrown.

    +

    Parameters

    • Optional currentSession: { refresh_token: string }
      +

      The current session. If passed in, it must contain a refresh token.

      +
      • refresh_token: string

    Returns Promise<AuthResponse>

  • +

    Resends an existing signup confirmation email, email change email, SMS OTP or phone change OTP.

    +

    Parameters

    Returns Promise<AuthOtpResponse>

  • resetPasswordForEmail(email: string, options?: { captchaToken?: string; redirectTo?: string }): Promise<{ data: {}; error: null } | { data: null; error: AuthError }>
  • +

    Sends a password reset request to an email address. This method supports the PKCE flow.

    +

    Parameters

    • email: string
      +

      The email address of the user.

      +
    • Optional options: { captchaToken?: string; redirectTo?: string }
      • Optional captchaToken?: string
        +

        Verification token received when the user completes the captcha on the site.

        +
      • Optional redirectTo?: string
        +

        The URL to send the user to after they click the password reset link.

        +

    Returns Promise<{ data: {}; error: null } | { data: null; error: AuthError }>

  • setSession(currentSession: { access_token: string; refresh_token: string }): Promise<AuthResponse>
  • +

    Sets the session data from the current session. If the current session is expired, setSession will take care of refreshing it to obtain a new session. +If the refresh token or access token in the current session is invalid, an error will be thrown.

    +

    Parameters

    • currentSession: { access_token: string; refresh_token: string }
      +

      The current session that minimally contains an access token and refresh token.

      +
      • access_token: string
      • refresh_token: string

    Returns Promise<AuthResponse>

  • +

    Creates a new anonymous user.

    +

    Parameters

    Returns Promise<AuthResponse>

    A session where the is_anonymous claim in the access token JWT set to true

    +
  • +

    Allows signing in with an OIDC ID token. The authentication provider used +should be enabled and configured.

    +

    Parameters

    Returns Promise<AuthTokenResponse>

  • +

    Log in an existing user via a third-party provider. +This method supports the PKCE flow.

    +

    Parameters

    Returns Promise<OAuthResponse>

  • +

    Log in a user using magiclink or a one-time password (OTP).

    +

    If the {{ .ConfirmationURL }} variable is specified in the email template, a magiclink will be sent. +If the {{ .Token }} variable is specified in the email template, an OTP will be sent. +If you're using phone sign-ins, only an OTP will be sent. You won't be able to send a magiclink for phone sign-ins.

    +

    Be aware that you may get back an error message that will not distinguish +between the cases where the account does not exist or, that the account +can only be accessed via social login.

    +

    Do note that you will need to configure a Whatsapp sender on Twilio +if you are using phone sign in with the 'whatsapp' channel. The whatsapp +channel is not supported on other providers +at this time. +This method supports PKCE when an email is passed.

    +

    Parameters

    Returns Promise<AuthOtpResponse>

  • +

    Log in an existing user with an email and password or phone and password.

    +

    Be aware that you may get back an error message that will not distinguish +between the cases where the account does not exist or that the +email/phone and password combination is wrong or that the account can only +be accessed via social login.

    +

    Parameters

    Returns Promise<AuthTokenResponsePassword>

  • +

    Attempts a single-sign on using an enterprise Identity Provider. A +successful SSO attempt will redirect the current page to the identity +provider authorization page. The redirect URL is implementation and SSO +protocol specific.

    +

    You can use it by providing a SSO domain. Typically you can extract this +domain by asking users for their email address. If this domain is +registered on the Auth instance the redirect will use that organization's +currently active SSO Identity Provider for the login.

    +

    If you have built an organization-specific login page, you can use the +organization's SSO Identity Provider UUID directly instead.

    +

    Parameters

    Returns Promise<SSOResponse>

  • +

    Signs in a user by verifying a message signed by the user's private key. +Only Solana supported at this time, using the Sign in with Solana standard.

    +

    Parameters

    Returns Promise<{ data: { session: AuthSession; user: AuthUser }; error: null } | { data: { session: null; user: null }; error: AuthError }>

  • +

    Inside a browser context, signOut() will remove the logged in user from the browser session and log them out - removing all items from localstorage and then trigger a "SIGNED_OUT" event.

    +

    For server-side management, you can revoke all refresh tokens for a user by passing a user's JWT through to auth.api.signOut(JWT: string). +There is no way to revoke a user's access token jwt until it expires. It is recommended to set a shorter expiry on the jwt for this reason.

    +

    If using others scope, no SIGNED_OUT event is fired!

    +

    Parameters

    Returns Promise<{ error: null | AuthError }>

  • +

    Creates a new user.

    +

    Be aware that if a user account exists in the system you may get back an +error message that attempts to hide this information from the user. +This method has support for PKCE via email signups. The PKCE flow cannot be used when autoconfirm is enabled.

    +

    Parameters

    Returns Promise<AuthResponse>

    A logged-in session if the server has "autoconfirm" ON

    +
  • startAutoRefresh(): Promise<void>
  • +

    Starts an auto-refresh process in the background. The session is checked +every few seconds. Close to the time of expiration a process is started to +refresh the session. If refreshing fails it will be retried for as long as +necessary.

    +

    If you set the {@link GoTrueClientOptions#autoRefreshToken} you don't need +to call this function, it will be called for you.

    +

    On browsers the refresh process works only when the tab/window is in the +foreground to conserve resources as well as prevent race conditions and +flooding auth with requests. If you call this method any managed +visibility change callback will be removed and you must manage visibility +changes on your own.

    +

    On non-browser platforms the refresh process works continuously in the +background, which may not be desirable. You should hook into your +platform's foreground indication mechanism and call these methods +appropriately to conserve resources.

    +

    {@see #stopAutoRefresh}

    +

    Returns Promise<void>

  • stopAutoRefresh(): Promise<void>
  • +

    Stops an active auto refresh process running in the background (if any).

    +

    If you call this method any managed visibility change callback will be +removed and you must manage visibility changes on your own.

    +

    See {@link #startAutoRefresh} for more details.

    +

    Returns Promise<void>

  • unlinkIdentity(identity: UserIdentity): Promise<{ data: {}; error: null } | { data: null; error: AuthError }>
  • +

    Unlinks an identity from a user by deleting it. The user will no longer be able to sign in with that identity once it's unlinked.

    +

    Parameters

    Returns Promise<{ data: {}; error: null } | { data: null; error: AuthError }>

  • +

    Updates user data for a logged in user.

    +

    Parameters

    • attributes: UserAttributes
    • Optional options: { emailRedirectTo?: string }
      • Optional emailRedirectTo?: string

    Returns Promise<UserResponse>

  • +

    Log in a user given a User supplied OTP or TokenHash received through mobile or email.

    +

    Parameters

    Returns Promise<AuthResponse>

Legend

  • Variable
  • Function
  • Function with type parameter
  • Type alias
  • Type alias with type parameter
  • Interface
  • Class with type parameter

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/v2/classes/index.NavigatorLockAcquireTimeoutError.html b/v2/classes/index.NavigatorLockAcquireTimeoutError.html new file mode 100644 index 00000000..ed694d2a --- /dev/null +++ b/v2/classes/index.NavigatorLockAcquireTimeoutError.html @@ -0,0 +1,6 @@ +NavigatorLockAcquireTimeoutError | @supabase/supabase-js
Options
All
  • Public
  • Public/Protected
  • All
Menu

Class NavigatorLockAcquireTimeoutError

Hierarchy

  • LockAcquireTimeoutError
    • NavigatorLockAcquireTimeoutError

Index

Constructors

  • Parameters

    • message: string

    Returns NavigatorLockAcquireTimeoutError

Properties

isAcquireTimeout: true = true
message: string
name: string
stack?: string
prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

Type declaration

stackTraceLimit: number

Methods

  • captureStackTrace(targetObject: object, constructorOpt?: Function): void
  • +

    Create .stack property on a target object

    +

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

Legend

  • Variable
  • Function
  • Function with type parameter
  • Type alias
  • Type alias with type parameter
  • Interface
  • Class with type parameter

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/v2/classes/index.PostgrestError.html b/v2/classes/index.PostgrestError.html new file mode 100644 index 00000000..9f29ff2f --- /dev/null +++ b/v2/classes/index.PostgrestError.html @@ -0,0 +1,9 @@ +PostgrestError | @supabase/supabase-js
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • Error
    • PostgrestError

Index

Constructors

  • new PostgrestError(context: { code: string; details: string; hint: string; message: string }): PostgrestError
  • Parameters

    • context: { code: string; details: string; hint: string; message: string }
      • code: string
      • details: string
      • hint: string
      • message: string

    Returns PostgrestError

Properties

code: string
details: string
hint: string
message: string
name: string
stack?: string
prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

Type declaration

stackTraceLimit: number

Methods

  • captureStackTrace(targetObject: object, constructorOpt?: Function): void
  • +

    Create .stack property on a target object

    +

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

Legend

  • Variable
  • Function
  • Function with type parameter
  • Type alias
  • Type alias with type parameter
  • Interface
  • Class with type parameter

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/v2/classes/index.RealtimeChannel.html b/v2/classes/index.RealtimeChannel.html new file mode 100644 index 00000000..6572b8cf --- /dev/null +++ b/v2/classes/index.RealtimeChannel.html @@ -0,0 +1,41 @@ +RealtimeChannel | @supabase/supabase-js
Options
All
  • Public
  • Public/Protected
  • All
Menu
+

A channel is the basic building block of Realtime +and narrows the scope of data flow to subscribed clients. +You can think of a channel as a chatroom where participants are able to see who's online +and send and receive messages.

+

Hierarchy

  • RealtimeChannel

Index

Constructors

Properties

bindings: {}

Type declaration

  • [key: string]: { callback: Function; filter: {}; id?: string; type: string }[]
broadcastEndpointURL: string
joinPush: default
joinedOnce: boolean
private: boolean
pushBuffer: default[]
rejoinTimer: default
state: CHANNEL_STATES
subTopic: string
timeout: number
topic: string
+

Topic name can be any string.

+

Methods

  • +

    Creates an event handler that listens to changes.

    +

    Parameters

    • type: "presence"
    • filter: { event: "sync" }
      • event: "sync"
    • callback: (() => void)
        • (): void
        • Returns void

    Returns RealtimeChannel

  • Type Parameters

    • T extends {}

    Parameters

    Returns RealtimeChannel

  • Type Parameters

    • T extends {}

    Parameters

    Returns RealtimeChannel

  • Type Parameters

    • T extends {}

    Parameters

    Returns RealtimeChannel

  • Type Parameters

    • T extends {}

    Parameters

    Returns RealtimeChannel

  • Type Parameters

    • T extends {}

    Parameters

    Returns RealtimeChannel

  • Type Parameters

    • T extends {}

    Parameters

    Returns RealtimeChannel

  • +

    The following is placed here to display on supabase.com/docs/reference/javascript/subscribe.

    +

    Parameters

    • type: "broadcast"
      +

      One of "broadcast", "presence", or "postgres_changes".

      +
    • filter: { event: string }
      +

      Custom object specific to the Realtime feature detailing which payloads to receive.

      +
      • event: string
    • callback: ((payload: { event: string; type: "broadcast" }) => void)
      +

      Function to be invoked when event handler is triggered.

      +
        • (payload: { event: string; type: "broadcast" }): void
        • Parameters

          • payload: { event: string; type: "broadcast" }
            • [key: string]: any
            • event: string
            • type: "broadcast"

          Returns void

    Returns RealtimeChannel

  • Type Parameters

    • T extends {}

    Parameters

    • type: "broadcast"
    • filter: { event: string }
      • event: string
    • callback: ((payload: { event: string; payload: T; type: "broadcast" }) => void)
        • (payload: { event: string; payload: T; type: "broadcast" }): void
        • Parameters

          • payload: { event: string; payload: T; type: "broadcast" }
            • event: string
            • payload: T
            • type: "broadcast"

          Returns void

    Returns RealtimeChannel

  • Type Parameters

    • T extends {}

    Parameters

    • type: "system"
    • filter: {}
      • callback: ((payload: any) => void)
          • (payload: any): void
          • Parameters

            • payload: any

            Returns void

      Returns RealtimeChannel

    • Type Parameters

      • T extends {} = {}

      Returns RealtimePresenceState<T>

    • send(args: { event: string; payload?: any; type: "presence" | "postgres_changes" | "broadcast" }, opts?: {}): Promise<RealtimeChannelSendResponse>
    • +

      Sends a message into the channel.

      +

      Parameters

      • args: { event: string; payload?: any; type: "presence" | "postgres_changes" | "broadcast" }
        +

        Arguments to send to channel

        +
        • [key: string]: any
        • event: string
          +

          The name of the event being sent

          +
        • Optional payload?: any
          +

          Payload to be sent

          +
        • type: "presence" | "postgres_changes" | "broadcast"
          +

          The type of event to send

          +
      • Optional opts: {}
        +

        Options to be used during the send process

        +
        • [key: string]: any

      Returns Promise<RealtimeChannelSendResponse>

    • teardown(): void
    • +

      Teardown the channel.

      +

      Destroys and stops related timers.

      +

      Returns void

    • Parameters

      • payload: {}
        • [key: string]: any
      • Optional opts: {}
        • [key: string]: any

      Returns Promise<RealtimeChannelSendResponse>

    • unsubscribe(timeout?: number): Promise<"error" | "ok" | "timed out">
    • +

      Leaves the channel.

      +

      Unsubscribes from server events, and instructs channel to terminate on server. +Triggers onClose() hooks.

      +

      To receive leave acknowledgements, use the a receive hook to bind to the server ack, ie: +channel.unsubscribe().receive("ok", () => alert("left!") )

      +

      Parameters

      • Optional timeout: number

      Returns Promise<"error" | "ok" | "timed out">

    • Parameters

      • Optional opts: {}
        • [key: string]: any

      Returns Promise<RealtimeChannelSendResponse>

    • updateJoinPayload(payload: {}): void
    • Parameters

      • payload: {}
        • [key: string]: any

      Returns void

    Legend

    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Interface
    • Class with type parameter

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/v2/classes/index.RealtimeClient.html b/v2/classes/index.RealtimeClient.html new file mode 100644 index 00000000..c9caccea --- /dev/null +++ b/v2/classes/index.RealtimeClient.html @@ -0,0 +1,49 @@ +RealtimeClient | @supabase/supabase-js
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Hierarchy

    • RealtimeClient

    Index

    Constructors

    • +

      Initializes the Socket.

      +

      Parameters

      • endPoint: string
        +

        The string WebSocket endpoint, ie, "ws://example.com/socket", "wss://example.com", "/socket" (inherited host & protocol)

        +
      • Optional options: RealtimeClientOptions

      Returns RealtimeClient

    Properties

    _authPromise: any
    _connectionState: any
    _wasManualDisconnect: any
    _workerObjectUrl: any
    accessToken: null | (() => Promise<null | string>)
    accessTokenValue: null | string
    apiKey: null | string
    channels: RealtimeChannel[]
    conn: null | WebSocketLike
    decode: Function
    encode: Function
    endPoint: string
    fetch: ((input: RequestInfo | URL, init?: RequestInit) => Promise<Response>)

    Type declaration

      • (input: RequestInfo | URL, init?: RequestInit): Promise<Response>
      • Parameters

        • input: RequestInfo | URL
        • Optional init: RequestInit

        Returns Promise<Response>

    headers?: {}
    deprecated

    headers cannot be set on websocket connections

    +

    Type declaration

    • [key: string]: string
    heartbeatCallback: ((status: HeartbeatStatus) => void)

    Type declaration

      • (status: HeartbeatStatus): void
      • Parameters

        • status: HeartbeatStatus

        Returns void

    heartbeatIntervalMs: number
    heartbeatTimer: undefined | Timer
    httpEndpoint: string
    logLevel?: LogLevel
    logger: Function
    params?: {}

    Type declaration

    • [key: string]: string
    pendingHeartbeatRef: null | string
    reconnectAfterMs: Function
    reconnectTimer: null | default
    ref: number
    sendBuffer: Function[]
    serializer: default
    stateChangeCallbacks: { close: Function[]; error: Function[]; message: Function[]; open: Function[] }

    Type declaration

    • close: Function[]
    • error: Function[]
    • message: Function[]
    • open: Function[]
    timeout: number
    transport: null | WebSocketLikeConstructor
    worker?: boolean
    workerRef?: Worker
    workerUrl?: string

    Methods

    • connect(): void
    • +

      Connects the socket, unless already connected.

      +

      Returns void

    • connectionState(): CONNECTION_STATE
    • +

      Returns the current state of the socket.

      +

      Returns CONNECTION_STATE

    • disconnect(code?: number, reason?: string): void
    • +

      Disconnects the socket.

      +

      Parameters

      • Optional code: number
        +

        A numeric status code to send on disconnect.

        +
      • Optional reason: string
        +

        A custom reason for the disconnect.

        +

      Returns void

    • endpointURL(): string
    • +

      Returns the URL of the websocket.

      +

      Returns string

      string The URL of the websocket.

      +
    • flushSendBuffer(): void
    • +

      Flushes send buffer

      +

      Returns void

    • +

      Returns all created channels

      +

      Returns RealtimeChannel[]

    • isConnected(): boolean
    • +

      Returns true is the connection is open.

      +

      Returns boolean

    • isConnecting(): boolean
    • +

      Returns true if the connection is currently connecting.

      +

      Returns boolean

    • isDisconnecting(): boolean
    • +

      Returns true if the connection is currently disconnecting.

      +

      Returns boolean

    • log(kind: string, msg: string, data?: any): void
    • +

      Logs the message.

      +

      For customized logging, this.logger can be overridden.

      +

      Parameters

      • kind: string
      • msg: string
      • Optional data: any

      Returns void

    • onHeartbeat(callback: ((status: HeartbeatStatus) => void)): void
    • Parameters

      • callback: ((status: HeartbeatStatus) => void)
          • (status: HeartbeatStatus): void
          • Parameters

            • status: HeartbeatStatus

            Returns void

      Returns void

    • +

      Push out a message if the socket is connected.

      +

      If the socket is not connected, the message gets enqueued within a local buffer, and sent out when a connection is next established.

      +

      Parameters

      Returns void

    • +

      Unsubscribes and removes all channels

      +

      Returns Promise<RealtimeRemoveChannelResponse[]>

    • +

      Unsubscribes and removes a single channel

      +

      Parameters

      Returns Promise<RealtimeRemoveChannelResponse>

    • sendHeartbeat(): Promise<void>
    • +

      Sends a heartbeat message if the socket is connected.

      +

      Returns Promise<void>

    • setAuth(token?: null | string): Promise<void>
    • +

      Sets the JWT access token used for channel subscription authorization and Realtime RLS.

      +

      If param is null it will use the accessToken callback function or the token set on the client.

      +

      On callback used, it will set the value of the token internal to the client.

      +

      Parameters

      • Optional token: null | string
        +

        A JWT string to override the token set on the client.

        +

      Returns Promise<void>

    Legend

    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Interface
    • Class with type parameter

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/v2/classes/index.RealtimePresence.html b/v2/classes/index.RealtimePresence.html new file mode 100644 index 00000000..5eaec18f --- /dev/null +++ b/v2/classes/index.RealtimePresence.html @@ -0,0 +1,8 @@ +RealtimePresence | @supabase/supabase-js
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Hierarchy

    • RealtimePresence

    Index

    Constructors

    • +

      Initializes the Presence.

      +

      Parameters

      • channel: RealtimeChannel
        +

        The RealtimeChannel

        +
      • Optional opts: PresenceOpts
        +

        The options, + for example {events: {state: 'state', diff: 'diff'}}

        +

      Returns RealtimePresence

    Properties

    caller: { onJoin: PresenceOnJoinCallback; onLeave: PresenceOnLeaveCallback; onSync: any }

    Type declaration

    • onJoin: PresenceOnJoinCallback
    • onLeave: PresenceOnLeaveCallback
    • onSync:function
      • onSync(): void
      • Returns void

    enabled: boolean
    joinRef: null | string
    pendingDiffs: RawPresenceDiff[]

    Legend

    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Interface
    • Class with type parameter

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/v2/classes/index.SupabaseClient.html b/v2/classes/index.SupabaseClient.html new file mode 100644 index 00000000..4b6816a7 --- /dev/null +++ b/v2/classes/index.SupabaseClient.html @@ -0,0 +1,67 @@ +SupabaseClient | @supabase/supabase-js
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Class SupabaseClient<Database, SchemaNameOrClientOptions, SchemaName, Schema, ClientOptions>

    +

    Supabase Client.

    +

    An isomorphic Javascript client for interacting with Postgres.

    +

    Type Parameters

    • Database = any

    • SchemaNameOrClientOptions extends string & keyof Omit<Database, "__InternalSupabase"> | { PostgrestVersion: string } = "public" extends keyof Omit<Database, "__InternalSupabase"> ? "public" : string & keyof Omit<Database, "__InternalSupabase">

    • SchemaName extends string & keyof Omit<Database, "__InternalSupabase"> = SchemaNameOrClientOptions extends string & keyof Omit<Database, "__InternalSupabase"> ? SchemaNameOrClientOptions : "public" extends keyof Omit<Database, "__InternalSupabase"> ? "public" : string & keyof Omit<Omit<Database, "__InternalSupabase">, "__InternalSupabase">

    • Schema extends Omit<Database, "__InternalSupabase">[SchemaName] extends GenericSchema ? Omit<Database, "__InternalSupabase">[SchemaName] : never = Omit<Database, "__InternalSupabase">[SchemaName] extends GenericSchema ? Omit<Database, "__InternalSupabase">[SchemaName] : never

    • ClientOptions extends { PostgrestVersion: string } = SchemaNameOrClientOptions extends string & keyof Omit<Database, "__InternalSupabase"> ? Database extends { __InternalSupabase: { PostgrestVersion: string } } ? Database["__InternalSupabase"] : { PostgrestVersion: "12" } : SchemaNameOrClientOptions extends { PostgrestVersion: string } ? SchemaNameOrClientOptions : never

    Hierarchy

    • SupabaseClient

    Index

    Constructors

    • new SupabaseClient<Database, SchemaNameOrClientOptions, SchemaName, Schema, ClientOptions>(supabaseUrl: string, supabaseKey: string, options?: SupabaseClientOptions<SchemaName>): SupabaseClient<Database, SchemaNameOrClientOptions, SchemaName, Schema, ClientOptions>
    • +

      Create a new client for use in the browser.

      +

      Type Parameters

      • Database = any

      • SchemaNameOrClientOptions extends string | { PostgrestVersion: string } = "public" extends Exclude<keyof Database, "__InternalSupabase"> ? "public" : string & Exclude<keyof Database, "__InternalSupabase">

      • SchemaName extends string = SchemaNameOrClientOptions extends string & Exclude<keyof Database, "__InternalSupabase"> ? SchemaNameOrClientOptions : "public" extends Exclude<keyof Database, "__InternalSupabase"> ? "public" : string & Exclude<Exclude<keyof Database, "__InternalSupabase">, "__InternalSupabase">

      • Schema extends GenericSchema = Omit<Database, "__InternalSupabase">[SchemaName] extends GenericSchema ? any[any] : never

      • ClientOptions extends { PostgrestVersion: string } = SchemaNameOrClientOptions extends string & Exclude<keyof Database, "__InternalSupabase"> ? Database extends { __InternalSupabase: { PostgrestVersion: string } } ? Database["__InternalSupabase"] : { PostgrestVersion: "12" } : SchemaNameOrClientOptions extends { PostgrestVersion: string } ? SchemaNameOrClientOptions : never

      Parameters

      • supabaseUrl: string
        +

        The unique Supabase URL which is supplied when you create a new project in your project dashboard.

        +
      • supabaseKey: string
        +

        The unique Supabase Key which is supplied when you create a new project in your project dashboard.

        +
      • Optional options: SupabaseClientOptions<SchemaName>

      Returns SupabaseClient<Database, SchemaNameOrClientOptions, SchemaName, Schema, ClientOptions>

    Properties

    accessToken?: (() => Promise<null | string>)

    Type declaration

      • (): Promise<null | string>
      • Returns Promise<null | string>

    auth: SupabaseAuthClient
    +

    Supabase Auth allows you to create and manage user sessions for access to data that is secured by access policies.

    +
    authUrl: URL
    changedAccessToken?: string
    fetch?: ((input: RequestInfo | URL, init?: RequestInit) => Promise<Response>)

    Type declaration

      • (input: RequestInfo | URL, init?: RequestInit): Promise<Response>
      • Parameters

        • input: RequestInfo | URL
        • Optional init: RequestInit

        Returns Promise<Response>

    functionsUrl: URL
    headers: Record<string, string>
    realtime: RealtimeClient
    realtimeUrl: URL
    rest: default<Database, ClientOptions, SchemaName, Omit<Database, "__InternalSupabase">[SchemaName] extends GenericSchema ? any[any] : any>
    storage: StorageClient
    +

    Supabase Storage allows you to manage user-generated content, such as photos or videos.

    +
    storageKey: string
    storageUrl: URL
    supabaseKey: string
    supabaseUrl: string

    Accessors

    • get functions(): FunctionsClient
    • +

      Supabase Functions allows you to deploy and invoke edge functions.

      +

      Returns FunctionsClient

    Methods

    • _getAccessToken(): Promise<null | string>
    • _handleTokenChanged(event: AuthChangeEvent, source: "CLIENT" | "STORAGE", token?: string): void
    • _initSupabaseAuthClient(__namedParameters: SupabaseAuthClientOptions, headers?: Record<string, string>, fetch?: ((input: RequestInfo | URL, init?: RequestInit) => Promise<Response>)): SupabaseAuthClient
    • Parameters

      • __namedParameters: SupabaseAuthClientOptions
      • Optional headers: Record<string, string>
      • Optional fetch: ((input: RequestInfo | URL, init?: RequestInit) => Promise<Response>)
          • (input: RequestInfo | URL, init?: RequestInit): Promise<Response>
          • Parameters

            • input: RequestInfo | URL
            • Optional init: RequestInit

            Returns Promise<Response>

      Returns SupabaseAuthClient

    • _listenForAuthEvents(): { data: { subscription: Subscription } }
    • from<TableName, Table>(relation: TableName): default<ClientOptions, Schema, Table, TableName, Table extends { Relationships: R } ? R : unknown>
    • from<ViewName, View>(relation: ViewName): default<ClientOptions, Schema, View, ViewName, View extends { Relationships: R } ? R : unknown>
    • +

      Perform a query on a table or a view.

      +

      Type Parameters

      Parameters

      • relation: TableName
        +

        The table or view name to query

        +

      Returns default<ClientOptions, Schema, Table, TableName, Table extends { Relationships: R } ? R : unknown>

    • +

      Perform a query on a table or a view.

      +

      Type Parameters

      Parameters

      • relation: ViewName
        +

        The table or view name to query

        +

      Returns default<ClientOptions, Schema, View, ViewName, View extends { Relationships: R } ? R : unknown>

    • removeAllChannels(): Promise<("error" | "ok" | "timed out")[]>
    • +

      Unsubscribes and removes all Realtime channels from Realtime client.

      +

      Returns Promise<("error" | "ok" | "timed out")[]>

    • removeChannel(channel: RealtimeChannel): Promise<"error" | "ok" | "timed out">
    • +

      Unsubscribes and removes Realtime channel from Realtime client.

      +

      Parameters

      Returns Promise<"error" | "ok" | "timed out">

    • rpc<FnName, Fn>(fn: FnName, args?: Fn["Args"], options?: { count?: "exact" | "planned" | "estimated"; get?: boolean; head?: boolean }): default<ClientOptions, Schema, Fn["Returns"] extends any[] ? any[any][number] extends Record<string, unknown> ? any[any] : never : never, Fn["Returns"], FnName, null, "RPC">
    • +

      Perform a function call.

      +

      Type Parameters

      Parameters

      • fn: FnName
        +

        The function name to call

        +
      • args: Fn["Args"] = {}
        +

        The arguments to pass to the function call

        +
      • options: { count?: "exact" | "planned" | "estimated"; get?: boolean; head?: boolean } = {}
        +

        Named parameters

        +
        • Optional count?: "exact" | "planned" | "estimated"
          +

          Count algorithm to use to count rows returned by the +function. Only applicable for set-returning +functions.

          +

          "exact": Exact but slow count algorithm. Performs a COUNT(*) under the +hood.

          +

          "planned": Approximated but fast count algorithm. Uses the Postgres +statistics under the hood.

          +

          "estimated": Uses exact count for low numbers and planned count for high +numbers.

          +
        • Optional get?: boolean
          +

          When set to true, the function will be called with +read-only access mode.

          +
        • Optional head?: boolean
          +

          When set to true, data will not be returned. +Useful if you only need the count.

          +

      Returns default<ClientOptions, Schema, Fn["Returns"] extends any[] ? any[any][number] extends Record<string, unknown> ? any[any] : never : never, Fn["Returns"], FnName, null, "RPC">

    • schema<DynamicSchema>(schema: DynamicSchema): default<Database, ClientOptions, DynamicSchema, Database[DynamicSchema] extends GenericSchema ? any[any] : any>
    • +

      Select a schema to query or perform an function (rpc) call.

      +

      The schema needs to be on the list of exposed schemas inside Supabase.

      +

      Type Parameters

      • DynamicSchema extends string

      Parameters

      • schema: DynamicSchema
        +

        The schema to query

        +

      Returns default<Database, ClientOptions, DynamicSchema, Database[DynamicSchema] extends GenericSchema ? any[any] : any>

    Legend

    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Class with type parameter
    • Property
    • Method
    • Interface
    • Protected property
    • Private method

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/v2/classes/index.WebSocketFactory.html b/v2/classes/index.WebSocketFactory.html new file mode 100644 index 00000000..c8843336 --- /dev/null +++ b/v2/classes/index.WebSocketFactory.html @@ -0,0 +1 @@ +WebSocketFactory | @supabase/supabase-js
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Hierarchy

    • WebSocketFactory

    Index

    Constructors

    Properties

    detectEnvironment: any

    Methods

    • createWebSocket(url: string | URL, protocols?: string | string[]): WebSocketLike
    • Parameters

      • url: string | URL
      • Optional protocols: string | string[]

      Returns WebSocketLike

    • getWebSocketConstructor(): { CLOSED: number; CLOSING: number; CONNECTING: number; OPEN: number; prototype: WebSocket }
    • Returns { CLOSED: number; CLOSING: number; CONNECTING: number; OPEN: number; prototype: WebSocket }

      • Readonly CLOSED: number
      • Readonly CLOSING: number
      • Readonly CONNECTING: number
      • Readonly OPEN: number
      • prototype: WebSocket
    • isWebSocketSupported(): boolean
    • Returns boolean

    Legend

    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Interface
    • Class with type parameter

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/v2/enums/index.FunctionRegion.html b/v2/enums/index.FunctionRegion.html new file mode 100644 index 00000000..437fb1e9 --- /dev/null +++ b/v2/enums/index.FunctionRegion.html @@ -0,0 +1 @@ +FunctionRegion | @supabase/supabase-js
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Enumeration FunctionRegion

    Index

    Enumeration Members

    Any: "any"
    ApNortheast1: "ap-northeast-1"
    ApNortheast2: "ap-northeast-2"
    ApSouth1: "ap-south-1"
    ApSoutheast1: "ap-southeast-1"
    ApSoutheast2: "ap-southeast-2"
    CaCentral1: "ca-central-1"
    EuCentral1: "eu-central-1"
    EuWest1: "eu-west-1"
    EuWest2: "eu-west-2"
    EuWest3: "eu-west-3"
    SaEast1: "sa-east-1"
    UsEast1: "us-east-1"
    UsWest1: "us-west-1"
    UsWest2: "us-west-2"

    Legend

    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Interface
    • Class with type parameter

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/v2/enums/index.REALTIME_LISTEN_TYPES.html b/v2/enums/index.REALTIME_LISTEN_TYPES.html new file mode 100644 index 00000000..76db00ec --- /dev/null +++ b/v2/enums/index.REALTIME_LISTEN_TYPES.html @@ -0,0 +1 @@ +REALTIME_LISTEN_TYPES | @supabase/supabase-js
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Enumeration REALTIME_LISTEN_TYPES

    Index

    Enumeration Members

    BROADCAST: "broadcast"
    POSTGRES_CHANGES: "postgres_changes"
    PRESENCE: "presence"
    SYSTEM: "system"

    Legend

    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Interface
    • Class with type parameter

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/v2/enums/index.REALTIME_POSTGRES_CHANGES_LISTEN_EVENT.html b/v2/enums/index.REALTIME_POSTGRES_CHANGES_LISTEN_EVENT.html new file mode 100644 index 00000000..df3dfc3a --- /dev/null +++ b/v2/enums/index.REALTIME_POSTGRES_CHANGES_LISTEN_EVENT.html @@ -0,0 +1 @@ +REALTIME_POSTGRES_CHANGES_LISTEN_EVENT | @supabase/supabase-js
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Enumeration REALTIME_POSTGRES_CHANGES_LISTEN_EVENT

    Index

    Enumeration Members

    Enumeration Members

    ALL: "*"
    DELETE: "DELETE"
    INSERT: "INSERT"
    UPDATE: "UPDATE"

    Legend

    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Interface
    • Class with type parameter

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/v2/enums/index.REALTIME_PRESENCE_LISTEN_EVENTS.html b/v2/enums/index.REALTIME_PRESENCE_LISTEN_EVENTS.html new file mode 100644 index 00000000..69a63601 --- /dev/null +++ b/v2/enums/index.REALTIME_PRESENCE_LISTEN_EVENTS.html @@ -0,0 +1 @@ +REALTIME_PRESENCE_LISTEN_EVENTS | @supabase/supabase-js
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Enumeration REALTIME_PRESENCE_LISTEN_EVENTS

    Index

    Enumeration Members

    Enumeration Members

    JOIN: "join"
    LEAVE: "leave"
    SYNC: "sync"

    Legend

    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Interface
    • Class with type parameter

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/v2/enums/index.REALTIME_SUBSCRIBE_STATES.html b/v2/enums/index.REALTIME_SUBSCRIBE_STATES.html new file mode 100644 index 00000000..000a1866 --- /dev/null +++ b/v2/enums/index.REALTIME_SUBSCRIBE_STATES.html @@ -0,0 +1 @@ +REALTIME_SUBSCRIBE_STATES | @supabase/supabase-js
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Enumeration REALTIME_SUBSCRIBE_STATES

    Index

    Enumeration Members

    CHANNEL_ERROR: "CHANNEL_ERROR"
    CLOSED: "CLOSED"
    SUBSCRIBED: "SUBSCRIBED"
    TIMED_OUT: "TIMED_OUT"

    Legend

    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Interface
    • Class with type parameter

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/v2/index.html b/v2/index.html new file mode 100644 index 00000000..417848ec --- /dev/null +++ b/v2/index.html @@ -0,0 +1,141 @@ +@supabase/supabase-js
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    @supabase/supabase-js

    + +

    supabase-js - Isomorphic JavaScript Client for Supabase.

    +
    + +
    + +

    pkg.pr.new

    +
    + + + +

    Usage

    +
    +

    First of all, you need to install the library:

    +
    npm install @supabase/supabase-js
    +
    +

    Then you're able to import the library and establish the connection with the database:

    +
    import { createClient } from '@supabase/supabase-js'

    // Create a single supabase client for interacting with your database
    const supabase = createClient('https://xyzcompany.supabase.co', 'public-anon-key') +
    + + +

    UMD

    +
    +

    You can use plain <script>s to import supabase-js from CDNs, like:

    +
    <script src="https://cdn.jsdelivr.net/npm/@supabase/supabase-js@2"></script>
    +
    +

    or even:

    +
    <script src="https://unpkg.com/@supabase/supabase-js@2"></script>
    +
    +

    Then you can use it from a global supabase variable:

    +
    <script>
    const { createClient } = supabase
    const _supabase = createClient('https://xyzcompany.supabase.co', 'public-anon-key')

    console.log('Supabase Instance: ', _supabase)
    // ...
    </script> +
    + + +

    ESM

    +
    +

    You can use <script type="module"> to import supabase-js from CDNs, like:

    +
    <script type="module">
    import { createClient } from 'https://cdn.jsdelivr.net/npm/@supabase/supabase-js/+esm'
    const supabase = createClient('https://xyzcompany.supabase.co', 'public-anon-key')

    console.log('Supabase Instance: ', supabase)
    // ...
    </script> +
    + + +

    Deno

    +
    +

    You can use supabase-js in the Deno runtime via JSR:

    +
    import { createClient } from 'jsr:@supabase/supabase-js@2'
    +
    + + +

    Custom fetch implementation

    +
    +

    supabase-js uses the cross-fetch library to make HTTP requests, but an alternative fetch implementation can be provided as an option. This is most useful in environments where cross-fetch is not compatible, for instance Cloudflare Workers:

    +
    import { createClient } from '@supabase/supabase-js'

    // Provide a custom `fetch` implementation as an option
    const supabase = createClient('https://xyzcompany.supabase.co', 'public-anon-key', {
    global: {
    fetch: (...args) => fetch(...args),
    },
    }) +
    + + +

    Support Policy

    +
    +

    This section outlines the scope of support for various runtime environments in Supabase JavaScript client.

    + + +

    Node.js

    +
    +

    We only support Node.js versions that are in Active LTS or Maintenance status as defined by the official Node.js release schedule. This means we support versions that are currently receiving long-term support and critical bug fixes.

    +

    When a Node.js version reaches end-of-life and is no longer in Active LTS or Maintenance status, Supabase will drop it in a minor release, and this won't be considered a breaking change.

    + + +

    Deno

    +
    +

    We support Deno versions that are currently receiving active development and security updates. We follow the official Deno release schedule and only support versions from the stable and lts release channels.

    +

    When a Deno version reaches end-of-life and is no longer receiving security updates, Supabase will drop it in a minor release, and this won't be considered a breaking change.

    + + +

    Important Notes

    +
    +
      +
    • Experimental features: Features marked as experimental may be removed or changed without notice
    • +
    + + +

    Testing

    +
    + + +

    Unit Testing

    +
    +
    npm test
    +
    + + +

    Integration Testing

    +
    +
    supabase start
    npm run test:integration +
    + + +

    Expo Testing

    +
    +

    The project includes Expo integration tests to ensure compatibility with React Native environments.

    + + +

    Next.js Testing

    +
    +

    The project includes Next.js integration tests to ensure compatibility with React SSR environments.

    + + +

    Deno Testing

    +
    +

    The project includes Deno integration tests to ensure compatibility with Deno runtime.

    + + +

    Bun Testing

    +
    +

    The project includes Bun integration tests to ensure compatibility with Bun runtime.

    + + +

    CI/CD Testing

    +
    +

    When running on CI, the tests automatically use the latest dependencies from the root project. The CI pipeline:

    +
      +
    1. Builds the main project with current dependencies
    2. +
    3. Creates a package archive (.tgz) with the latest versions
    4. +
    5. Uses this archive in Expo, Next.js, and Deno tests to ensure consistency
    6. +
    + + +

    Local Development

    +
    +

    For local development of Expo, Next.js, and Deno tests, you can update dependencies using automated scripts:

    +
    # Update all test dependencies at once
    npm run update:test-deps

    # Or update specific test environments:
    npm run update:test-deps:expo # Expo tests only
    npm run update:test-deps:next # Next.js tests only
    npm run update:test-deps:deno # Deno tests only
    npm run update:test-deps:bun # Bun tests only +
    +

    Note: The CI automatically handles dependency synchronization, so manual updates are only needed for local development and testing.

    + + +

    Badges

    +
    +

    Coverage Status

    +

    Legend

    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Interface
    • Class with type parameter

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/v2/interfaces/index.AMREntry.html b/v2/interfaces/index.AMREntry.html new file mode 100644 index 00000000..66ae0943 --- /dev/null +++ b/v2/interfaces/index.AMREntry.html @@ -0,0 +1,11 @@ +AMREntry | @supabase/supabase-js
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu
    +

    An authentication methord reference (AMR) entry.

    +

    An entry designates what method was used by the user to verify their +identity and at what time.

    +
    see

    {@link GoTrueMFAApi#getAuthenticatorAssuranceLevel}.

    +

    Hierarchy

    • AMREntry

    Index

    Properties

    Properties

    method: "password" | string & {} | "otp" | "oauth" | "mfa/totp"
    +

    Authentication method name.

    +
    timestamp: number
    +

    Timestamp when the method was successfully used. Represents number of +seconds since 1st January 1970 (UNIX epoch) in UTC.

    +

    Legend

    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Interface
    • Class with type parameter

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/v2/interfaces/index.AdminUserAttributes.html b/v2/interfaces/index.AdminUserAttributes.html new file mode 100644 index 00000000..c8615787 --- /dev/null +++ b/v2/interfaces/index.AdminUserAttributes.html @@ -0,0 +1,43 @@ +AdminUserAttributes | @supabase/supabase-js
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Interface AdminUserAttributes

    Hierarchy

    Index

    Properties

    app_metadata?: object
    +

    A custom data object to store the user's application specific metadata. This maps to the auth.users.app_metadata column.

    +

    Only a service role can modify.

    +

    The app_metadata should be a JSON object that includes app-specific info, such as identity providers, roles, and other +access control information.

    +
    ban_duration?: string
    +

    Determines how long a user is banned for.

    +

    The format for the ban duration follows a strict sequence of decimal numbers with a unit suffix. +Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h".

    +

    For example, some possible durations include: '300ms', '2h45m'.

    +

    Setting the ban duration to 'none' lifts the ban on the user.

    +
    email?: string
    +

    The user's email.

    +
    email_confirm?: boolean
    +

    Confirms the user's email address if set to true.

    +

    Only a service role can modify.

    +
    id?: string
    +

    The id for the user.

    +

    Allows you to overwrite the default id set for the user.

    +
    nonce?: string
    +

    The nonce sent for reauthentication if the user's password is to be updated.

    +

    Call reauthenticate() to obtain the nonce first.

    +
    password?: string
    +

    The user's password.

    +
    password_hash?: string
    +

    The password_hash for the user's password.

    +

    Allows you to specify a password hash for the user. This is useful for migrating a user's password hash from another service.

    +

    Supports bcrypt, scrypt (firebase), and argon2 password hashes.

    +
    phone?: string
    +

    The user's phone.

    +
    phone_confirm?: boolean
    +

    Confirms the user's phone number if set to true.

    +

    Only a service role can modify.

    +
    role?: string
    +

    The role claim set in the user's access token JWT.

    +

    When a user signs up, this role is set to authenticated by default. You should only modify the role if you need to provision several levels of admin access that have different permissions on individual columns in your database.

    +

    Setting this role to service_role is not recommended as it grants the user admin privileges.

    +
    user_metadata?: object
    +

    A custom data object to store the user's metadata. This maps to the auth.users.raw_user_meta_data column.

    +

    The user_metadata should be a JSON object that includes user-specific info, such as their first and last name.

    +

    Note: When using the GoTrueAdminApi and wanting to modify a user's metadata, +this attribute is used instead of UserAttributes data.

    +

    Legend

    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Interface
    • Class with type parameter

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/v2/interfaces/index.AuthSession.html b/v2/interfaces/index.AuthSession.html new file mode 100644 index 00000000..8f080352 --- /dev/null +++ b/v2/interfaces/index.AuthSession.html @@ -0,0 +1,16 @@ +AuthSession | @supabase/supabase-js
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Hierarchy

    • AuthSession

    Index

    Properties

    access_token: string
    +

    The access token jwt. It is recommended to set the JWT_EXPIRY to a shorter expiry value.

    +
    expires_at?: number
    +

    A timestamp of when the token will expire. Returned when a login is confirmed.

    +
    expires_in: number
    +

    The number of seconds until the token expires (since it was issued). Returned when a login is confirmed.

    +
    provider_refresh_token?: null | string
    +

    The oauth provider refresh token. If present, this can be used to refresh the provider_token via the oauth provider's API. +Not all oauth providers return a provider refresh token. If the provider_refresh_token is missing, please refer to the oauth provider's documentation for information on how to obtain the provider refresh token.

    +
    provider_token?: null | string
    +

    The oauth provider token. If present, this can be used to make external API requests to the oauth provider used.

    +
    refresh_token: string
    +

    A one-time used refresh token that never expires.

    +
    token_type: string
    user: AuthUser
    +

    When using a separate user storage, accessing properties of this object will throw an error.

    +

    Legend

    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Interface
    • Class with type parameter

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/v2/interfaces/index.AuthUser.html b/v2/interfaces/index.AuthUser.html new file mode 100644 index 00000000..23d9c40d --- /dev/null +++ b/v2/interfaces/index.AuthUser.html @@ -0,0 +1 @@ +AuthUser | @supabase/supabase-js
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Hierarchy

    • AuthUser

    Index

    Properties

    action_link?: string
    app_metadata: UserAppMetadata
    aud: string
    confirmation_sent_at?: string
    confirmed_at?: string
    created_at: string
    deleted_at?: string
    email?: string
    email_change_sent_at?: string
    email_confirmed_at?: string
    factors?: Factor[]
    id: string
    identities?: UserIdentity[]
    invited_at?: string
    is_anonymous?: boolean
    is_sso_user?: boolean
    last_sign_in_at?: string
    new_email?: string
    new_phone?: string
    phone?: string
    phone_confirmed_at?: string
    recovery_sent_at?: string
    role?: string
    updated_at?: string
    user_metadata: UserMetadata

    Legend

    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Interface
    • Class with type parameter

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/v2/interfaces/index.Factor.html b/v2/interfaces/index.Factor.html new file mode 100644 index 00000000..268129aa --- /dev/null +++ b/v2/interfaces/index.Factor.html @@ -0,0 +1,14 @@ +Factor | @supabase/supabase-js
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu
    +

    A MFA factor.

    +
    see

    {@link GoTrueMFAApi#enroll}

    +
    see

    {@link GoTrueMFAApi#listFactors}

    +
    see

    {@link GoTrueMFAAdminApi#listFactors}

    +

    Hierarchy

    • Factor

    Index

    Properties

    created_at: string
    factor_type: string & {} | "totp" | "phone"
    +

    Type of factor. totp and phone supported with this version

    +
    friendly_name?: string
    +

    Friendly name of the factor, useful to disambiguate between multiple factors.

    +
    id: string
    +

    ID of the factor.

    +
    status: "verified" | "unverified"
    +

    Factor's status.

    +
    updated_at: string

    Legend

    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Interface
    • Class with type parameter

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/v2/interfaces/index.GenerateLinkOptions.html b/v2/interfaces/index.GenerateLinkOptions.html new file mode 100644 index 00000000..4d1078f3 --- /dev/null +++ b/v2/interfaces/index.GenerateLinkOptions.html @@ -0,0 +1,6 @@ +GenerateLinkOptions | @supabase/supabase-js
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Interface GenerateLinkOptions

    Hierarchy

    • GenerateLinkOptions

    Index

    Properties

    Properties

    data?: object
    +

    A custom data object to store the user's metadata. This maps to the auth.users.raw_user_meta_data column.

    +

    The data should be a JSON object that includes user-specific info, such as their first and last name.

    +
    redirectTo?: string
    +

    The URL which will be appended to the email link generated.

    +

    Legend

    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Interface
    • Class with type parameter

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/v2/interfaces/index.GoTrueAdminMFAApi.html b/v2/interfaces/index.GoTrueAdminMFAApi.html new file mode 100644 index 00000000..87e9fe26 --- /dev/null +++ b/v2/interfaces/index.GoTrueAdminMFAApi.html @@ -0,0 +1,9 @@ +GoTrueAdminMFAApi | @supabase/supabase-js
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu
    +

    Contains the full multi-factor authentication administration API.

    +
    expermental

    Hierarchy

    • GoTrueAdminMFAApi

    Index

    Methods

    • +

      Deletes a factor on a user. This will log the user out of all active +sessions if the deleted factor was verified.

      +
      see

      {@link GoTrueMFAApi#unenroll}

      +
      expermental

      Parameters

      Returns Promise<AuthMFAAdminDeleteFactorResponse>

    Legend

    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Interface
    • Class with type parameter

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/v2/interfaces/index.GoTrueMFAApi.html b/v2/interfaces/index.GoTrueMFAApi.html new file mode 100644 index 00000000..dd07ca10 --- /dev/null +++ b/v2/interfaces/index.GoTrueMFAApi.html @@ -0,0 +1,38 @@ +GoTrueMFAApi | @supabase/supabase-js
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu
    +

    Contains the full multi-factor authentication API.

    +

    Hierarchy

    • GoTrueMFAApi

    Index

    Methods

    • +

      Prepares a challenge used to verify that a user has access to a MFA +factor.

      +

      Parameters

      Returns Promise<AuthMFAChallengeResponse>

    • +

      Helper method which creates a challenge and immediately uses the given code to verify against it thereafter. The verification code is +provided by the user by entering a code seen in their authenticator app.

      +

      Parameters

      Returns Promise<AuthMFAVerifyResponse>

    • +

      Starts the enrollment process for a new Multi-Factor Authentication (MFA) +factor. This method creates a new unverified factor. +To verify a factor, present the QR code or secret to the user and ask them to add it to their +authenticator app. +The user has to enter the code from their authenticator app to verify it.

      +

      Upon verifying a factor, all other sessions are logged out and the current session's authenticator level is promoted to aal2.

      +

      Parameters

      Returns Promise<AuthMFAEnrollTOTPResponse>

    • Parameters

      Returns Promise<AuthMFAEnrollPhoneResponse>

    • Parameters

      Returns Promise<AuthMFAEnrollResponse>

    • +

      Returns the Authenticator Assurance Level (AAL) for the active session.

      +
        +
      • aal1 (or null) means that the user's identity has been verified only +with a conventional login (email+password, OTP, magic link, social login, +etc.).
      • +
      • aal2 means that the user's identity has been verified both with a conventional login and at least one MFA factor.
      • +
      +

      Although this method returns a promise, it's fairly quick (microseconds) +and rarely uses the network. You can use this to check whether the current +user needs to be shown a screen to verify their MFA factors.

      +

      Returns Promise<AuthMFAGetAuthenticatorAssuranceLevelResponse>

    • +

      Returns the list of MFA factors enabled for this user.

      +
      see

      {@link GoTrueMFAApi#enroll}

      +
      see

      {@link GoTrueMFAApi#getAuthenticatorAssuranceLevel}

      +
      see

      {@link GoTrueClient#getUser}

      +

      Returns Promise<AuthMFAListFactorsResponse>

    • +

      Unenroll removes a MFA factor. +A user has to have an aal2 authenticator level in order to unenroll a verified factor.

      +

      Parameters

      Returns Promise<AuthMFAUnenrollResponse>

    • +

      Verifies a code against a challenge. The verification code is +provided by the user by entering a code seen in their authenticator app.

      +

      Parameters

      Returns Promise<AuthMFAVerifyResponse>

    Legend

    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Interface
    • Class with type parameter

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/v2/interfaces/index.JWK.html b/v2/interfaces/index.JWK.html new file mode 100644 index 00000000..7d783847 --- /dev/null +++ b/v2/interfaces/index.JWK.html @@ -0,0 +1 @@ +JWK | @supabase/supabase-js
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Hierarchy

    • JWK

    Indexable

    [key: string]: any

    Index

    Properties

    alg?: string
    key_ops: string[]
    kid?: string
    kty: "RSA" | "EC" | "oct"

    Legend

    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Interface
    • Class with type parameter

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/v2/interfaces/index.Subscription.html b/v2/interfaces/index.Subscription.html new file mode 100644 index 00000000..27a60e92 --- /dev/null +++ b/v2/interfaces/index.Subscription.html @@ -0,0 +1,7 @@ +Subscription | @supabase/supabase-js
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Hierarchy

    • Subscription

    Index

    Properties

    Methods

    Properties

    id: string
    +

    The subscriber UUID. This will be set by the client.

    +

    Methods

    • +

      The function to call every time there is an event. eg: (eventName) => {}

      +

      Parameters

      Returns void

    • unsubscribe(): void
    • +

      Call this to remove the listener.

      +

      Returns void

    Legend

    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Interface
    • Class with type parameter

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/v2/interfaces/index.UserAppMetadata.html b/v2/interfaces/index.UserAppMetadata.html new file mode 100644 index 00000000..1780fe77 --- /dev/null +++ b/v2/interfaces/index.UserAppMetadata.html @@ -0,0 +1 @@ +UserAppMetadata | @supabase/supabase-js
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Hierarchy

    • UserAppMetadata

    Indexable

    [key: string]: any

    Index

    Properties

    Properties

    provider?: string

    Legend

    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Interface
    • Class with type parameter

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/v2/interfaces/index.UserAttributes.html b/v2/interfaces/index.UserAttributes.html new file mode 100644 index 00000000..ad723aa1 --- /dev/null +++ b/v2/interfaces/index.UserAttributes.html @@ -0,0 +1,13 @@ +UserAttributes | @supabase/supabase-js
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Hierarchy

    • UserAttributes

    Index

    Properties

    data?: object
    +

    A custom data object to store the user's metadata. This maps to the auth.users.raw_user_meta_data column.

    +

    The data should be a JSON object that includes user-specific info, such as their first and last name.

    +
    email?: string
    +

    The user's email.

    +
    nonce?: string
    +

    The nonce sent for reauthentication if the user's password is to be updated.

    +

    Call reauthenticate() to obtain the nonce first.

    +
    password?: string
    +

    The user's password.

    +
    phone?: string
    +

    The user's phone.

    +

    Legend

    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Interface
    • Class with type parameter

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/v2/interfaces/index.UserIdentity.html b/v2/interfaces/index.UserIdentity.html new file mode 100644 index 00000000..69c4a512 --- /dev/null +++ b/v2/interfaces/index.UserIdentity.html @@ -0,0 +1 @@ +UserIdentity | @supabase/supabase-js
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Hierarchy

    • UserIdentity

    Index

    Properties

    created_at?: string
    id: string
    identity_data?: {}

    Type declaration

    • [key: string]: any
    identity_id: string
    last_sign_in_at?: string
    provider: string
    updated_at?: string
    user_id: string

    Legend

    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Interface
    • Class with type parameter

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/v2/interfaces/index.UserMetadata.html b/v2/interfaces/index.UserMetadata.html new file mode 100644 index 00000000..4026ebe9 --- /dev/null +++ b/v2/interfaces/index.UserMetadata.html @@ -0,0 +1 @@ +UserMetadata | @supabase/supabase-js
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Legend

    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Interface
    • Class with type parameter

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/v2/interfaces/index.VerifyEmailOtpParams.html b/v2/interfaces/index.VerifyEmailOtpParams.html new file mode 100644 index 00000000..147d4267 --- /dev/null +++ b/v2/interfaces/index.VerifyEmailOtpParams.html @@ -0,0 +1,11 @@ +VerifyEmailOtpParams | @supabase/supabase-js
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Interface VerifyEmailOtpParams

    Hierarchy

    • VerifyEmailOtpParams

    Index

    Properties

    email: string
    +

    The user's email address.

    +
    options?: { captchaToken?: string; redirectTo?: string }

    Type declaration

    • Optional captchaToken?: string
      +

      Verification token received when the user completes the captcha on the site.

      +
      deprecated
    • Optional redirectTo?: string
      +

      A URL to send the user to after they are confirmed.

      +
    token: string
    +

    The otp sent to the user's email address.

    +
    +

    The user's verification type.

    +

    Legend

    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Interface
    • Class with type parameter

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/v2/interfaces/index.VerifyMobileOtpParams.html b/v2/interfaces/index.VerifyMobileOtpParams.html new file mode 100644 index 00000000..617fd2d0 --- /dev/null +++ b/v2/interfaces/index.VerifyMobileOtpParams.html @@ -0,0 +1,11 @@ +VerifyMobileOtpParams | @supabase/supabase-js
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Interface VerifyMobileOtpParams

    Hierarchy

    • VerifyMobileOtpParams

    Index

    Properties

    options?: { captchaToken?: string; redirectTo?: string }

    Type declaration

    • Optional captchaToken?: string
      +

      Verification token received when the user completes the captcha on the site.

      +
      deprecated
    • Optional redirectTo?: string
      +

      A URL to send the user to after they are confirmed.

      +
    phone: string
    +

    The user's phone number.

    +
    token: string
    +

    The otp sent to the user's phone number.

    +
    +

    The user's verification type.

    +

    Legend

    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Interface
    • Class with type parameter

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/v2/interfaces/index.VerifyTokenHashParams.html b/v2/interfaces/index.VerifyTokenHashParams.html new file mode 100644 index 00000000..944136e5 --- /dev/null +++ b/v2/interfaces/index.VerifyTokenHashParams.html @@ -0,0 +1,5 @@ +VerifyTokenHashParams | @supabase/supabase-js
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Interface VerifyTokenHashParams

    Hierarchy

    • VerifyTokenHashParams

    Index

    Properties

    Properties

    token_hash: string
    +

    The token hash used in an email link

    +
    +

    The user's verification type.

    +

    Legend

    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Interface
    • Class with type parameter

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/v2/interfaces/index.WebSocketLike.html b/v2/interfaces/index.WebSocketLike.html new file mode 100644 index 00000000..86d9a2a0 --- /dev/null +++ b/v2/interfaces/index.WebSocketLike.html @@ -0,0 +1 @@ +WebSocketLike | @supabase/supabase-js
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Hierarchy

    • WebSocketLike

    Index

    Properties

    CLOSED: number
    CLOSING: number
    CONNECTING: number
    OPEN: number
    binaryType?: string
    bufferedAmount?: number
    extensions?: string
    onclose: null | ((this: any, ev: CloseEvent) => any)
    onerror: null | ((this: any, ev: Event) => any)
    onmessage: null | ((this: any, ev: MessageEvent<any>) => any)
    onopen: null | ((this: any, ev: Event) => any)
    protocol: string
    readyState: number
    url: string

    Methods

    • addEventListener(type: string, listener: EventListener): void
    • Parameters

      • type: string
      • listener: EventListener

      Returns void

    • close(code?: number, reason?: string): void
    • Parameters

      • Optional code: number
      • Optional reason: string

      Returns void

    • dispatchEvent(event: Event): boolean
    • Parameters

      • event: Event

      Returns boolean

    • removeEventListener(type: string, listener: EventListener): void
    • Parameters

      • type: string
      • listener: EventListener

      Returns void

    • send(data: string | ArrayBufferLike | ArrayBufferView | Blob): void
    • Parameters

      • data: string | ArrayBufferLike | ArrayBufferView | Blob

      Returns void

    Legend

    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Interface
    • Class with type parameter

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/v2/interfaces/lib_types.SupabaseAuthClientOptions.html b/v2/interfaces/lib_types.SupabaseAuthClientOptions.html new file mode 100644 index 00000000..70e512bc --- /dev/null +++ b/v2/interfaces/lib_types.SupabaseAuthClientOptions.html @@ -0,0 +1,8 @@ +SupabaseAuthClientOptions | @supabase/supabase-js
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Hierarchy

    • AuthClientOptions
      • SupabaseAuthClientOptions

    Index

    Properties

    autoRefreshToken?: boolean
    debug?: boolean | ((message: string, ...args: any[]) => void)
    detectSessionInUrl?: boolean
    fetch?: ((input: RequestInfo | URL, init?: RequestInit) => Promise<Response>)

    Type declaration

      • (input: RequestInfo | URL, init?: RequestInit): Promise<Response>
      • Parameters

        • input: RequestInfo | URL
        • Optional init: RequestInit

        Returns Promise<Response>

    flowType?: AuthFlowType
    hasCustomAuthorizationHeader?: boolean
    +

    Set to "true" if there is a custom authorization header set globally.

    +
    experimental
    headers?: {}

    Type declaration

    • [key: string]: string
    lock?: LockFunc
    +

    Provide your own locking mechanism based on the environment. By default no locking is done at this time.

    +
    experimental
    persistSession?: boolean
    storageKey?: string
    url?: string
    userStorage?: SupportedStorage
    +

    Stores the user object in a separate storage location from the rest of the session data. When non-null, storage will only store a JSON object containing the access and refresh token and some adjacent metadata, while userStorage will only contain the user object under the key storageKey + '-user'.

    +

    When this option is set and cookie storage is used, getSession() and other functions that load a session from the cookie store might not return back a user. It's very important to always use getUser() to fetch a user object in those scenarios.

    +
    experimental

    Legend

    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Interface
    • Class with type parameter

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/v2/modules.html b/v2/modules.html new file mode 100644 index 00000000..aa425ad6 --- /dev/null +++ b/v2/modules.html @@ -0,0 +1 @@ +@supabase/supabase-js
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    @supabase/supabase-js

    Legend

    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Interface
    • Class with type parameter

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/v2/modules/index.html b/v2/modules/index.html new file mode 100644 index 00000000..09783802 --- /dev/null +++ b/v2/modules/index.html @@ -0,0 +1,182 @@ +index | @supabase/supabase-js
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Index

    References

    Enumerations

    Classes

    Interfaces

    Type Aliases

    Variables

    Functions

    References

    Re-exports QueryData
    Re-exports QueryError
    Re-exports QueryResult
    Renames and re-exports AuthSession
    Re-exports SupabaseClientOptions
    Renames and re-exports AuthUser

    Type Aliases

    AuthChangeEvent: "INITIAL_SESSION" | "PASSWORD_RECOVERY" | "SIGNED_IN" | "SIGNED_OUT" | "TOKEN_REFRESHED" | "USER_UPDATED" | AuthChangeEventMFA
    AuthChangeEventMFA: "MFA_CHALLENGE_VERIFIED"
    AuthFlowType: "implicit" | "pkce"
    AuthMFAAdminDeleteFactorParams: { id: string; userId: string }
    expermental

    Type declaration

    • id: string
      +

      ID of the MFA factor to delete.

      +
    • userId: string
      +

      ID of the user whose factor is being deleted.

      +
    AuthMFAAdminDeleteFactorResponse: { data: { id: string }; error: null } | { data: null; error: AuthError }
    expermental
    AuthMFAAdminListFactorsParams: { userId: string }
    expermental

    Type declaration

    • userId: string
      +

      ID of the user.

      +
    AuthMFAAdminListFactorsResponse: { data: { factors: Factor[] }; error: null } | { data: null; error: AuthError }
    expermental
    AuthMFAChallengeResponse: { data: { expires_at: number; id: string; type: "totp" | "phone" }; error: null } | { data: null; error: AuthError }
    AuthMFAEnrollPhoneResponse: { data: { friendly_name?: string; id: string; phone: string; type: "phone" }; error: null } | { data: null; error: AuthError }
    AuthMFAEnrollTOTPResponse: { data: { friendly_name?: string; id: string; totp: { qr_code: string; secret: string; uri: string }; type: "totp" }; error: null } | { data: null; error: AuthError }
    AuthMFAGetAuthenticatorAssuranceLevelResponse: { data: { currentAuthenticationMethods: AMREntry[]; currentLevel: AuthenticatorAssuranceLevels | null; nextLevel: AuthenticatorAssuranceLevels | null }; error: null } | { data: null; error: AuthError }
    AuthMFAListFactorsResponse: { data: { all: Factor[]; phone: Factor[]; totp: Factor[] }; error: null } | { data: null; error: AuthError }
    AuthMFAUnenrollResponse: { data: { id: string }; error: null } | { data: null; error: AuthError }
    AuthMFAVerifyResponse: { data: { access_token: string; expires_in: number; refresh_token: string; token_type: string; user: AuthUser }; error: null } | { data: null; error: AuthError }
    AuthOtpResponse: { data: { messageId?: string | null; session: null; user: null }; error: null } | { data: { messageId?: string | null; session: null; user: null }; error: AuthError }
    +

    AuthOtpResponse is returned when OTP is used.

    +

    {@see AuthResponse}

    +
    AuthResponse: { data: { session: AuthSession | null; user: AuthUser | null }; error: null } | { data: { session: null; user: null }; error: AuthError }
    AuthResponsePassword: { data: { session: AuthSession | null; user: AuthUser | null; weak_password?: WeakPassword | null }; error: null } | { data: { session: null; user: null }; error: AuthError }
    AuthTokenResponse: { data: { session: AuthSession; user: AuthUser }; error: null } | { data: { session: null; user: null }; error: AuthError }
    AuthTokenResponsePassword: { data: { session: AuthSession; user: AuthUser; weakPassword?: WeakPassword }; error: null } | { data: { session: null; user: null; weakPassword?: null }; error: AuthError }
    AuthenticatorAssuranceLevels: "aal1" | "aal2"
    CallRefreshTokenResult: { error: null; session: AuthSession } | { error: AuthError; session: null }
    EmailOtpType: "signup" | "invite" | "magiclink" | "recovery" | "email_change" | "email"
    FunctionInvokeOptions: { body?: File | Blob | ArrayBuffer | FormData | ReadableStream<Uint8Array> | Record<string, any> | string; headers?: {}; method?: "POST" | "GET" | "PUT" | "PATCH" | "DELETE"; region?: FunctionRegion }

    Type declaration

    • Optional body?: File | Blob | ArrayBuffer | FormData | ReadableStream<Uint8Array> | Record<string, any> | string
      +

      The body of the request.

      +
    • Optional headers?: {}
      +

      Object representing the headers to send with the request.

      +
      • [key: string]: string
    • Optional method?: "POST" | "GET" | "PUT" | "PATCH" | "DELETE"
      +

      The HTTP verb of the request

      +
    • Optional region?: FunctionRegion
      +

      The Region to invoke the function in.

      +
    GenerateEmailChangeLinkParams: { email: string; newEmail: string; options?: Pick<GenerateLinkOptions, "redirectTo">; type: "email_change_current" | "email_change_new" }

    Type declaration

    • email: string
      +

      The user's email

      +
    • newEmail: string
      +

      The user's new email. Only required if type is 'email_change_current' or 'email_change_new'.

      +
    • Optional options?: Pick<GenerateLinkOptions, "redirectTo">
    • type: "email_change_current" | "email_change_new"
    GenerateInviteOrMagiclinkParams: { email: string; options?: Pick<GenerateLinkOptions, "data" | "redirectTo">; type: "invite" | "magiclink" }

    Type declaration

    • email: string
      +

      The user's email

      +
    • Optional options?: Pick<GenerateLinkOptions, "data" | "redirectTo">
    • type: "invite" | "magiclink"
    GenerateLinkProperties: { action_link: string; email_otp: string; hashed_token: string; redirect_to: string; verification_type: GenerateLinkType }
    +

    The properties related to the email link generated

    +

    Type declaration

    • action_link: string
      +

      The email link to send to the user. +The action_link follows the following format: auth/v1/verify?type={verification_type}&token={hashed_token}&redirect_to={redirect_to}

      +
    • email_otp: string
      +

      The raw email OTP. +You should send this in the email if you want your users to verify using an OTP instead of the action link.

      +
    • hashed_token: string
      +

      The hashed token appended to the action link.

      +
    • redirect_to: string
      +

      The URL appended to the action link.

      +
    • verification_type: GenerateLinkType
      +

      The verification type that the email link is associated to.

      +
    GenerateLinkResponse: { data: { properties: GenerateLinkProperties; user: AuthUser }; error: null } | { data: { properties: null; user: null }; error: AuthError }
    GenerateLinkType: "signup" | "invite" | "magiclink" | "recovery" | "email_change_current" | "email_change_new"
    GenerateRecoveryLinkParams: { email: string; options?: Pick<GenerateLinkOptions, "redirectTo">; type: "recovery" }

    Type declaration

    • email: string
      +

      The user's email

      +
    • Optional options?: Pick<GenerateLinkOptions, "redirectTo">
    • type: "recovery"
    GenerateSignupLinkParams: { email: string; options?: Pick<GenerateLinkOptions, "data" | "redirectTo">; password: string; type: "signup" }

    Type declaration

    • email: string
    • Optional options?: Pick<GenerateLinkOptions, "data" | "redirectTo">
    • password: string
    • type: "signup"
    GoTrueClientOptions: { autoRefreshToken?: boolean; debug?: boolean | ((message: string, ...args: any[]) => void); detectSessionInUrl?: boolean; fetch?: Fetch; flowType?: AuthFlowType; hasCustomAuthorizationHeader?: boolean; headers?: {}; lock?: LockFunc; persistSession?: boolean; storage?: SupportedStorage; storageKey?: string; url?: string; userStorage?: SupportedStorage }

    Type declaration

    • Optional autoRefreshToken?: boolean
    • Optional debug?: boolean | ((message: string, ...args: any[]) => void)
    • Optional detectSessionInUrl?: boolean
    • Optional fetch?: Fetch
    • Optional flowType?: AuthFlowType
    • Optional hasCustomAuthorizationHeader?: boolean
      +

      Set to "true" if there is a custom authorization header set globally.

      +
      experimental
    • Optional headers?: {}
      • [key: string]: string
    • Optional lock?: LockFunc
      +

      Provide your own locking mechanism based on the environment. By default no locking is done at this time.

      +
      experimental
    • Optional persistSession?: boolean
    • Optional storage?: SupportedStorage
    • Optional storageKey?: string
    • Optional url?: string
    • Optional userStorage?: SupportedStorage
      +

      Stores the user object in a separate storage location from the rest of the session data. When non-null, storage will only store a JSON object containing the access and refresh token and some adjacent metadata, while userStorage will only contain the user object under the key storageKey + '-user'.

      +

      When this option is set and cookie storage is used, getSession() and other functions that load a session from the cookie store might not return back a user. It's very important to always use getUser() to fetch a user object in those scenarios.

      +
      experimental
    InitializeResult: { error: AuthError | null }

    Type declaration

    JwtHeader: { alg: "RS256" | "ES256" | "HS256"; kid: string; typ: string }

    Type declaration

    • alg: "RS256" | "ES256" | "HS256"
    • kid: string
    • typ: string
    JwtPayload: RequiredClaims & {}
    LockFunc: (<R>(name: string, acquireTimeout: number, fn: (() => Promise<R>)) => Promise<R>)

    Type declaration

      • <R>(name: string, acquireTimeout: number, fn: (() => Promise<R>)): Promise<R>
      • +

        Provide your own global lock implementation instead of the default +implementation. The function should acquire a lock for the duration of the +fn async function, such that no other client instances will be able to +hold it at the same time.

        +
        experimental

        Type Parameters

        • R

        Parameters

        • name: string
          +

          Name of the lock to be acquired.

          +
        • acquireTimeout: number
          +

          If negative, no timeout should occur. If positive it + should throw an Error with an isAcquireTimeout + property set to true if the operation fails to be + acquired after this much time (ms).

          +
        • fn: (() => Promise<R>)
          +

          The operation to execute when the lock is acquired.

          +
            • (): Promise<R>
            • Returns Promise<R>

        Returns Promise<R>

    MFAChallengeAndVerifyParams: { code: string; factorId: string }

    Type declaration

    • code: string
      +

      Verification code provided by the user.

      +
    • factorId: string
      +

      ID of the factor being verified. Returned in enroll().

      +
    MFAChallengeParams: { channel?: "sms" | "whatsapp"; factorId: string }

    Type declaration

    • Optional channel?: "sms" | "whatsapp"
      +

      Messaging channel to use (e.g. whatsapp or sms). Only relevant for phone factors

      +
    • factorId: string
      +

      ID of the factor to be challenged. Returned in enroll().

      +
    MFAEnrollPhoneParams: { factorType: "phone"; friendlyName?: string; phone: string }

    Type declaration

    • factorType: "phone"
      +

      The type of factor being enrolled.

      +
    • Optional friendlyName?: string
      +

      Human readable name assigned to the factor.

      +
    • phone: string
      +

      Phone number associated with a factor. Number should conform to E.164 format

      +
    MFAEnrollTOTPParams: { factorType: "totp"; friendlyName?: string; issuer?: string }

    Type declaration

    • factorType: "totp"
      +

      The type of factor being enrolled.

      +
    • Optional friendlyName?: string
      +

      Human readable name assigned to the factor.

      +
    • Optional issuer?: string
      +

      Domain which the user is enrolled with.

      +
    MFAUnenrollParams: { factorId: string }

    Type declaration

    • factorId: string
      +

      ID of the factor being unenrolled.

      +
    MFAVerifyParams: { challengeId: string; code: string; factorId: string }

    Type declaration

    • challengeId: string
      +

      ID of the challenge being verified. Returned in challenge().

      +
    • code: string
      +

      Verification code provided by the user.

      +
    • factorId: string
      +

      ID of the factor being verified. Returned in enroll().

      +
    MobileOtpType: "sms" | "phone_change"
    OAuthResponse: { data: { provider: Provider; url: string }; error: null } | { data: { provider: Provider; url: null }; error: AuthError }
    PageParams: { page?: number; perPage?: number }

    Type declaration

    • Optional page?: number
      +

      The page number

      +
    • Optional perPage?: number
      +

      Number of items returned per page

      +
    Pagination: { lastPage: number; nextPage: number | null; total: number }

    Type declaration

    • [key: string]: any
    • lastPage: number
    • nextPage: number | null
    • total: number
    PostgrestMaybeSingleResponse<T>: PostgrestSingleResponse<T | null>

    Type Parameters

    • T

    PostgrestResponse<T>: PostgrestSingleResponse<T[]>

    Type Parameters

    • T

    PostgrestSingleResponse<T>: PostgrestResponseSuccess<T> | PostgrestResponseFailure

    Type Parameters

    • T

    Provider: "apple" | "azure" | "bitbucket" | "discord" | "facebook" | "figma" | "github" | "gitlab" | "google" | "kakao" | "keycloak" | "linkedin" | "linkedin_oidc" | "notion" | "slack" | "slack_oidc" | "spotify" | "twitch" | "twitter" | "workos" | "zoom" | "fly"
    +

    One of the providers supported by GoTrue.

    +
    RealtimeChannelOptions: { config: { broadcast?: { ack?: boolean; self?: boolean }; presence?: { enabled?: boolean; key?: string }; private?: boolean } }

    Type declaration

    • config: { broadcast?: { ack?: boolean; self?: boolean }; presence?: { enabled?: boolean; key?: string }; private?: boolean }
      • Optional broadcast?: { ack?: boolean; self?: boolean }
        +

        self option enables client to receive message it broadcast +ack option instructs server to acknowledge that broadcast message was received

        +
        • Optional ack?: boolean
        • Optional self?: boolean
      • Optional presence?: { enabled?: boolean; key?: string }
        +

        key option is used to track presence payload across clients

        +
        • Optional enabled?: boolean
        • Optional key?: string
      • Optional private?: boolean
        +

        defines if the channel is private or not and if RLS policies will be used to check data

        +
    RealtimeChannelSendResponse: "ok" | "timed out" | "error"
    RealtimeClientOptions: { decode?: Function; encode?: Function; fetch?: Fetch; headers?: {}; heartbeatIntervalMs?: number; logLevel?: LogLevel; log_level?: LogLevel; logger?: Function; params?: {}; reconnectAfterMs?: Function; timeout?: number; transport?: WebSocketLikeConstructor; worker?: boolean; workerUrl?: string; accessToken?: any }

    Type declaration

    • Optional decode?: Function
    • Optional encode?: Function
    • Optional fetch?: Fetch
    • Optional headers?: {}
      • [key: string]: string
    • Optional heartbeatIntervalMs?: number
    • Optional logLevel?: LogLevel
    • Optional log_level?: LogLevel
    • Optional logger?: Function
    • Optional params?: {}
      • [key: string]: any
    • Optional reconnectAfterMs?: Function
    • Optional timeout?: number
    • Optional transport?: WebSocketLikeConstructor
    • Optional worker?: boolean
    • Optional workerUrl?: string
    • accessToken?:function
      • accessToken(): Promise<null | string>
      • Returns Promise<null | string>

    RealtimeMessage: { event: string; join_ref?: string; payload: any; ref: string; topic: string }

    Type declaration

    • event: string
    • Optional join_ref?: string
    • payload: any
    • ref: string
    • topic: string
    RealtimePostgresChangesFilter<T>: { event: T; filter?: string; schema: string; table?: string }

    Type Parameters

    Type declaration

    • event: T
      +

      The type of database change to listen to.

      +
    • Optional filter?: string
      +

      Receive database changes when filter is matched.

      +
    • schema: string
      +

      The database schema to listen to.

      +
    • Optional table?: string
      +

      The database table to listen to.

      +

    Type Parameters

    • T extends {}

    RealtimePostgresDeletePayload<T>: RealtimePostgresChangesPayloadBase & { eventType: `${DELETE}`; new: {}; old: Partial<T> }

    Type Parameters

    • T extends {}

    RealtimePostgresInsertPayload<T>: RealtimePostgresChangesPayloadBase & { eventType: `${INSERT}`; new: T; old: {} }

    Type Parameters

    • T extends {}

    RealtimePostgresUpdatePayload<T>: RealtimePostgresChangesPayloadBase & { eventType: `${UPDATE}`; new: T; old: Partial<T> }

    Type Parameters

    • T extends {}

    RealtimePresenceJoinPayload<T>: { currentPresences: Presence<T>[]; event: `${JOIN}`; key: string; newPresences: Presence<T>[] }

    Type Parameters

    • T extends {}

    Type declaration

    • currentPresences: Presence<T>[]
    • event: `${JOIN}`
    • key: string
    • newPresences: Presence<T>[]
    RealtimePresenceLeavePayload<T>: { currentPresences: Presence<T>[]; event: `${LEAVE}`; key: string; leftPresences: Presence<T>[] }

    Type Parameters

    • T extends {}

    Type declaration

    • currentPresences: Presence<T>[]
    • event: `${LEAVE}`
    • key: string
    • leftPresences: Presence<T>[]
    RealtimePresenceState<T>: {}

    Type Parameters

    • T extends {} = {}

    Type declaration

    • [key: string]: Presence<T>[]
    RealtimeRemoveChannelResponse: "ok" | "timed out" | "error"
    RequiredClaims: { aal: AuthenticatorAssuranceLevels; aud: string | string[]; exp: number; iat: number; iss: string; role: string; session_id: string; sub: string }

    Type declaration

    ResendParams: { email: string; options?: { captchaToken?: string; emailRedirectTo?: string }; type: Extract<EmailOtpType, "signup" | "email_change"> } | { options?: { captchaToken?: string }; phone: string; type: Extract<MobileOtpType, "sms" | "phone_change"> }
    SSOResponse: { data: { url: string }; error: null } | { data: null; error: AuthError }
    SignInAnonymouslyCredentials: { options?: { captchaToken?: string; data?: object } }

    Type declaration

    • Optional options?: { captchaToken?: string; data?: object }
      • Optional captchaToken?: string
        +

        Verification token received when the user completes the captcha on the site.

        +
      • Optional data?: object
        +

        A custom data object to store the user's metadata. This maps to the auth.users.raw_user_meta_data column.

        +

        The data should be a JSON object that includes user-specific info, such as their first and last name.

        +
    SignInWithIdTokenCredentials: { access_token?: string; nonce?: string; options?: { captchaToken?: string }; provider: "google" | "apple" | "azure" | "facebook" | "kakao" | string & {}; token: string }

    Type declaration

    • Optional access_token?: string
      +

      If the ID token contains an at_hash claim, then the hash of this value is compared to the value in the ID token.

      +
    • Optional nonce?: string
      +

      If the ID token contains a nonce claim, then the hash of this value is compared to the value in the ID token.

      +
    • Optional options?: { captchaToken?: string }
      • Optional captchaToken?: string
        +

        Verification token received when the user completes the captcha on the site.

        +
    • provider: "google" | "apple" | "azure" | "facebook" | "kakao" | string & {}
      +

      Provider name or OIDC iss value identifying which provider should be used to verify the provided token. Supported names: google, apple, azure, facebook, kakao, keycloak (deprecated).

      +
    • token: string
      +

      OIDC ID token issued by the specified provider. The iss claim in the ID token must match the supplied provider. Some ID tokens contain an at_hash which require that you provide an access_token value to be accepted properly. If the token contains a nonce claim you must supply the nonce used to obtain the ID token.

      +
    SignInWithOAuthCredentials: { options?: { queryParams?: {}; redirectTo?: string; scopes?: string; skipBrowserRedirect?: boolean }; provider: Provider }

    Type declaration

    • Optional options?: { queryParams?: {}; redirectTo?: string; scopes?: string; skipBrowserRedirect?: boolean }
      • Optional queryParams?: {}
        +

        An object of query params

        +
        • [key: string]: string
      • Optional redirectTo?: string
        +

        A URL to send the user to after they are confirmed.

        +
      • Optional scopes?: string
        +

        A space-separated list of scopes granted to the OAuth application.

        +
      • Optional skipBrowserRedirect?: boolean
        +

        If set to true does not immediately redirect the current browser context to visit the OAuth authorization page for the provider.

        +
    • provider: Provider
      +

      One of the providers supported by GoTrue.

      +
    SignInWithPasswordCredentials: { email: string; options?: { captchaToken?: string }; password: string } | { options?: { captchaToken?: string }; password: string; phone: string }
    SignInWithPasswordlessCredentials: { email: string; options?: { captchaToken?: string; data?: object; emailRedirectTo?: string; shouldCreateUser?: boolean } } | { options?: { captchaToken?: string; channel?: "sms" | "whatsapp"; data?: object; shouldCreateUser?: boolean }; phone: string }
    SignInWithSSO: { options?: { captchaToken?: string; redirectTo?: string }; providerId: string } | { domain: string; options?: { captchaToken?: string; redirectTo?: string } }
    SignOut: { scope?: "global" | "local" | "others" }

    Type declaration

    • Optional scope?: "global" | "local" | "others"
      +

      Determines which sessions should be +logged out. Global means all +sessions by this account. Local +means only this session. Others +means all other sessions except the +current one. When using others, +there is no sign-out event fired on +the current session!

      +
    SignOutScope: typeof SIGN_OUT_SCOPES[number]
    SignUpWithPasswordCredentials: { email: string; options?: { captchaToken?: string; data?: object; emailRedirectTo?: string }; password: string } | { options?: { captchaToken?: string; channel?: "sms" | "whatsapp"; data?: object }; password: string; phone: string }
    SolanaWallet: { publicKey?: { toBase58: any } | null; signIn?: any; signMessage?: any }

    Type declaration

    • Optional publicKey?: { toBase58: any } | null
    • signIn?:function
      • signIn(...inputs: SolanaSignInInput[]): Promise<SolanaSignInOutput | SolanaSignInOutput[]>
      • Parameters

        • Rest ...inputs: SolanaSignInInput[]

        Returns Promise<SolanaSignInOutput | SolanaSignInOutput[]>

    • signMessage?:function
      • signMessage(message: Uint8Array, encoding?: string): undefined | Promise<Uint8Array>
      • Parameters

        • message: Uint8Array
        • Optional encoding: string

        Returns undefined | Promise<Uint8Array>

    SolanaWeb3Credentials: { chain: "solana"; options?: { captchaToken?: string; signInWithSolana?: Partial<Omit<SolanaSignInInput, "version" | "chain" | "domain" | "uri" | "statement">>; url?: string }; statement?: string; wallet?: SolanaWallet } | { chain: "solana"; message: string; options?: { captchaToken?: string }; signature: Uint8Array }
    SupportedStorage: PromisifyMethods<Pick<Storage, "getItem" | "setItem" | "removeItem">> & { isServer?: boolean }
    UserResponse: { data: { user: AuthUser }; error: null } | { data: { user: null }; error: AuthError }
    WeakPassword: { message: string; reasons: WeakPasswordReasons[] }

    Type declaration

    WeakPasswordReasons: "length" | "characters" | "pwned" | string & {}
    Web3Credentials: SolanaWeb3Credentials

    Variables

    AuthAdminApi: typeof GoTrueAdminApi
    AuthClient: typeof GoTrueClient
    REALTIME_CHANNEL_STATES: typeof CHANNEL_STATES
    SIGN_OUT_SCOPES: readonly ["global", "local", "others"]
    lockInternals: { debug: boolean }
    experimental

    Type declaration

    • debug: boolean
      experimental

    Functions

    • createClient<Database, SchemaNameOrClientOptions, SchemaName>(supabaseUrl: string, supabaseKey: string, options?: SupabaseClientOptions<SchemaName>): SupabaseClient<Database, SchemaNameOrClientOptions, SchemaName, Omit<Database, "__InternalSupabase">[SchemaName] extends GenericSchema ? any[any] : never, SchemaNameOrClientOptions extends string & Exclude<keyof Database, "__InternalSupabase"> ? Database extends { __InternalSupabase: { PostgrestVersion: string } } ? Database["__InternalSupabase"] : { PostgrestVersion: "12" } : SchemaNameOrClientOptions extends { PostgrestVersion: string } ? SchemaNameOrClientOptions : never>
    • +

      Creates a new Supabase Client.

      +

      Type Parameters

      • Database = any

      • SchemaNameOrClientOptions extends string | { PostgrestVersion: string } = "public" extends Exclude<keyof Database, "__InternalSupabase"> ? "public" : string & Exclude<keyof Database, "__InternalSupabase">

      • SchemaName extends string = SchemaNameOrClientOptions extends string & Exclude<keyof Database, "__InternalSupabase"> ? SchemaNameOrClientOptions : "public" extends Exclude<keyof Database, "__InternalSupabase"> ? "public" : string & Exclude<Exclude<keyof Database, "__InternalSupabase">, "__InternalSupabase">

      Parameters

      Returns SupabaseClient<Database, SchemaNameOrClientOptions, SchemaName, Omit<Database, "__InternalSupabase">[SchemaName] extends GenericSchema ? any[any] : never, SchemaNameOrClientOptions extends string & Exclude<keyof Database, "__InternalSupabase"> ? Database extends { __InternalSupabase: { PostgrestVersion: string } } ? Database["__InternalSupabase"] : { PostgrestVersion: "12" } : SchemaNameOrClientOptions extends { PostgrestVersion: string } ? SchemaNameOrClientOptions : never>

    • Parameters

      • error: unknown

      Returns error is AuthApiError

    • isAuthError(error: unknown): error is AuthError
    • Parameters

      • error: unknown

      Returns error is AuthError

    • Parameters

      • error: unknown

      Returns error is AuthRetryableFetchError

    • Parameters

      • error: any

      Returns error is AuthSessionMissingError

    • Parameters

      • error: unknown

      Returns error is AuthWeakPasswordError

    • navigatorLock<R>(name: string, acquireTimeout: number, fn: (() => Promise<R>)): Promise<R>
    • +

      Implements a global exclusive lock using the Navigator LockManager API. It +is available on all browsers released after 2022-03-15 with Safari being the +last one to release support. If the API is not available, this function will +throw. Make sure you check availablility before configuring GoTrueClient.

      +

      You can turn on debugging by setting the supabase.gotrue-js.locks.debug +local storage item to true.

      +

      Internals:

      +

      Since the LockManager API does not preserve stack traces for the async +function passed in the request method, a trick is used where acquiring the +lock releases a previously started promise to run the operation in the fn +function. The lock waits for that promise to finish (with or without error), +while the function will finally wait for the result anyway.

      +

      Type Parameters

      • R

      Parameters

      • name: string
        +

        Name of the lock to be acquired.

        +
      • acquireTimeout: number
        +

        If negative, no timeout. If 0 an error is thrown if + the lock can't be acquired without waiting. If positive, the lock acquire + will time out after so many milliseconds. An error is + a timeout if it has isAcquireTimeout set to true.

        +
      • fn: (() => Promise<R>)
        +

        The operation to run once the lock is acquired.

        +
          • (): Promise<R>
          • Returns Promise<R>

      Returns Promise<R>

    • processLock<R>(name: string, acquireTimeout: number, fn: (() => Promise<R>)): Promise<R>
    • +

      Implements a global exclusive lock that works only in the current process. +Useful for environments like React Native or other non-browser +single-process (i.e. no concept of "tabs") environments.

      +

      Use {@link #navigatorLock} in browser environments.

      +

      Type Parameters

      • R

      Parameters

      • name: string
        +

        Name of the lock to be acquired.

        +
      • acquireTimeout: number
        +

        If negative, no timeout. If 0 an error is thrown if + the lock can't be acquired without waiting. If positive, the lock acquire + will time out after so many milliseconds. An error is + a timeout if it has isAcquireTimeout set to true.

        +
      • fn: (() => Promise<R>)
        +

        The operation to run once the lock is acquired.

        +
          • (): Promise<R>
          • Returns Promise<R>

      Returns Promise<R>

    Legend

    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Interface
    • Class with type parameter

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/v2/modules/lib_constants.html b/v2/modules/lib_constants.html new file mode 100644 index 00000000..f0db1277 --- /dev/null +++ b/v2/modules/lib_constants.html @@ -0,0 +1 @@ +lib/constants | @supabase/supabase-js
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Index

    Variables

    DEFAULT_AUTH_OPTIONS: SupabaseAuthClientOptions = ...
    DEFAULT_DB_OPTIONS: { schema: string } = ...

    Type declaration

    • schema: string
    DEFAULT_GLOBAL_OPTIONS: { headers: { X-Client-Info: string } } = ...

    Type declaration

    • headers: { X-Client-Info: string }
      • X-Client-Info: string
    DEFAULT_HEADERS: { X-Client-Info: string } = ...

    Type declaration

    • X-Client-Info: string
    DEFAULT_REALTIME_OPTIONS: RealtimeClientOptions = {}

    Legend

    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Interface
    • Class with type parameter

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/v2/modules/lib_fetch.html b/v2/modules/lib_fetch.html new file mode 100644 index 00000000..ee89a4e6 --- /dev/null +++ b/v2/modules/lib_fetch.html @@ -0,0 +1 @@ +lib/fetch | @supabase/supabase-js
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Index

    Functions

    • fetchWithAuth(supabaseKey: string, getAccessToken: (() => Promise<null | string>), customFetch?: ((input: RequestInfo | URL, init?: RequestInit) => Promise<Response>)): ((input: RequestInfo | URL, init?: RequestInit) => Promise<Response>)
    • Parameters

      • supabaseKey: string
      • getAccessToken: (() => Promise<null | string>)
          • (): Promise<null | string>
          • Returns Promise<null | string>

      • Optional customFetch: ((input: RequestInfo | URL, init?: RequestInit) => Promise<Response>)
          • (input: RequestInfo | URL, init?: RequestInit): Promise<Response>
          • Parameters

            • input: RequestInfo | URL
            • Optional init: RequestInit

            Returns Promise<Response>

      Returns ((input: RequestInfo | URL, init?: RequestInit) => Promise<Response>)

        • (input: RequestInfo | URL, init?: RequestInit): Promise<Response>
        • Parameters

          • input: RequestInfo | URL
          • Optional init: RequestInit

          Returns Promise<Response>

    • resolveFetch(customFetch?: ((input: RequestInfo | URL, init?: RequestInit) => Promise<Response>)): ((input: RequestInfo | URL, init?: RequestInit) => Promise<Response>)
    • Parameters

      • Optional customFetch: ((input: RequestInfo | URL, init?: RequestInit) => Promise<Response>)
          • (input: RequestInfo | URL, init?: RequestInit): Promise<Response>
          • Parameters

            • input: RequestInfo | URL
            • Optional init: RequestInit

            Returns Promise<Response>

      Returns ((input: RequestInfo | URL, init?: RequestInit) => Promise<Response>)

        • (input: RequestInfo | URL, init?: RequestInit): Promise<Response>
        • Parameters

          • input: RequestInfo | URL
          • Optional init: RequestInit

          Returns Promise<Response>

    • resolveHeadersConstructor(): any

    Legend

    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Interface
    • Class with type parameter

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/v2/modules/lib_helpers.html b/v2/modules/lib_helpers.html new file mode 100644 index 00000000..f64ea994 --- /dev/null +++ b/v2/modules/lib_helpers.html @@ -0,0 +1 @@ +lib/helpers | @supabase/supabase-js
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Index

    Functions

    • ensureTrailingSlash(url: string): string
    • isBrowser(): boolean
    • uuid(): string

    Legend

    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Interface
    • Class with type parameter

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/v2/modules/lib_types.html b/v2/modules/lib_types.html new file mode 100644 index 00000000..e96a6f5f --- /dev/null +++ b/v2/modules/lib_types.html @@ -0,0 +1,36 @@ +lib/types | @supabase/supabase-js
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Index

    Type Aliases

    Fetch: typeof __type
    GenericFunction: { Args: Record<string, unknown>; Returns: unknown }

    Type declaration

    • Args: Record<string, unknown>
    • Returns: unknown
    GenericNonUpdatableView: { Relationships: GenericRelationship[]; Row: Record<string, unknown> }

    Type declaration

    GenericRelationship: { columns: string[]; foreignKeyName: string; isOneToOne?: boolean; referencedColumns: string[]; referencedRelation: string }

    Type declaration

    • columns: string[]
    • foreignKeyName: string
    • Optional isOneToOne?: boolean
    • referencedColumns: string[]
    • referencedRelation: string
    GenericSchema: { Functions: Record<string, GenericFunction>; Tables: Record<string, GenericTable>; Views: Record<string, GenericView> }

    Type declaration

    GenericTable: { Insert: Record<string, unknown>; Relationships: GenericRelationship[]; Row: Record<string, unknown>; Update: Record<string, unknown> }

    Type declaration

    • Insert: Record<string, unknown>
    • Relationships: GenericRelationship[]
    • Row: Record<string, unknown>
    • Update: Record<string, unknown>
    GenericUpdatableView: GenericTable
    QueryData<T>: T extends PromiseLike<{ data: infer U }> ? Exclude<U, null> : never

    Type Parameters

    • T

    QueryError: PostgrestError
    QueryResult<T>: T extends PromiseLike<infer U> ? U : never
    +

    Helper types for query results.

    +

    Type Parameters

    • T

    SupabaseClientOptions<SchemaName>: { auth?: { autoRefreshToken?: boolean; debug?: SupabaseAuthClientOptions["debug"]; detectSessionInUrl?: boolean; flowType?: SupabaseAuthClientOptions["flowType"]; lock?: SupabaseAuthClientOptions["lock"]; persistSession?: boolean; storage?: SupabaseAuthClientOptions["storage"]; storageKey?: string }; db?: { schema?: SchemaName }; global?: { fetch?: Fetch; headers?: Record<string, string> }; realtime?: RealtimeClientOptions; storage?: StorageClientOptions; accessToken?: any }

    Type Parameters

    • SchemaName

    Type declaration

    • Optional auth?: { autoRefreshToken?: boolean; debug?: SupabaseAuthClientOptions["debug"]; detectSessionInUrl?: boolean; flowType?: SupabaseAuthClientOptions["flowType"]; lock?: SupabaseAuthClientOptions["lock"]; persistSession?: boolean; storage?: SupabaseAuthClientOptions["storage"]; storageKey?: string }
      • Optional autoRefreshToken?: boolean
        +

        Automatically refreshes the token for logged-in users. Defaults to true.

        +
      • Optional debug?: SupabaseAuthClientOptions["debug"]
        +

        If debug messages for authentication client are emitted. Can be used to inspect the behavior of the library.

        +
      • Optional detectSessionInUrl?: boolean
        +

        Detect a session from the URL. Used for OAuth login callbacks. Defaults to true.

        +
      • Optional flowType?: SupabaseAuthClientOptions["flowType"]
        +

        OAuth flow to use - defaults to implicit flow. PKCE is recommended for mobile and server-side applications.

        +
      • Optional lock?: SupabaseAuthClientOptions["lock"]
        +

        Provide your own locking mechanism based on the environment. By default no locking is done at this time.

        +
        experimental
      • Optional persistSession?: boolean
        +

        Whether to persist a logged-in session to storage. Defaults to true.

        +
      • Optional storage?: SupabaseAuthClientOptions["storage"]
        +

        A storage provider. Used to store the logged-in session.

        +
      • Optional storageKey?: string
        +

        Optional key name used for storing tokens in local storage.

        +
    • Optional db?: { schema?: SchemaName }
      +

      The Postgres schema which your tables belong to. Must be on the list of exposed schemas in Supabase. Defaults to public.

      +
      • Optional schema?: SchemaName
    • Optional global?: { fetch?: Fetch; headers?: Record<string, string> }
      • Optional fetch?: Fetch
        +

        A custom fetch implementation.

        +
      • Optional headers?: Record<string, string>
        +

        Optional headers for initializing the client.

        +
    • Optional realtime?: RealtimeClientOptions
      +

      Options passed to the realtime-js instance

      +
    • Optional storage?: StorageClientOptions
    • accessToken?:function
      • accessToken(): Promise<null | string>
      • +

        Optional function for using a third-party authentication system with +Supabase. The function should return an access token or ID token (JWT) by +obtaining it from the third-party auth client library. Note that this +function may be called concurrently and many times. Use memoization and +locking techniques if this is not supported by the client libraries.

        +

        When set, the auth namespace of the Supabase client cannot be used. +Create another client if you wish to use Supabase Auth and third-party +authentications concurrently in the same application.

        +

        Returns Promise<null | string>

    Legend

    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Interface
    • Class with type parameter

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/v2/modules/lib_version.html b/v2/modules/lib_version.html new file mode 100644 index 00000000..9b450208 --- /dev/null +++ b/v2/modules/lib_version.html @@ -0,0 +1 @@ +lib/version | @supabase/supabase-js
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Index

    Variables

    Variables

    version: "0.0.0-automated" = '0.0.0-automated'

    Legend

    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Interface
    • Class with type parameter

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/v2/spec.json b/v2/spec.json new file mode 100644 index 00000000..dab3070d --- /dev/null +++ b/v2/spec.json @@ -0,0 +1,6660 @@ +{ + "id": 0, + "name": "@supabase/supabase-js", + "kind": 1, + "flags": {}, + "originalName": "", + "children": [ + { + "id": 1, + "name": "index", + "kind": 2, + "kindString": "Module", + "flags": {}, + "children": [ + { + "id": 265, + "name": "QueryData", + "kind": 16777216, + "kindString": "Reference", + "flags": {}, + "sources": [ + { + "fileName": "src/index.ts", + "line": 22, + "character": 50 + } + ], + "target": 134 + }, + { + "id": 266, + "name": "QueryError", + "kind": 16777216, + "kindString": "Reference", + "flags": {}, + "sources": [ + { + "fileName": "src/index.ts", + "line": 22, + "character": 61 + } + ], + "target": 138 + }, + { + "id": 264, + "name": "QueryResult", + "kind": 16777216, + "kindString": "Reference", + "flags": {}, + "sources": [ + { + "fileName": "src/index.ts", + "line": 22, + "character": 37 + } + ], + "target": 132 + }, + { + "id": 263, + "name": "SupabaseClientOptions", + "kind": 16777216, + "kindString": "Reference", + "flags": {}, + "sources": [ + { + "fileName": "src/index.ts", + "line": 22, + "character": 14 + } + ], + "target": 80 + }, + { + "id": 141, + "name": "SupabaseClient", + "kind": 128, + "kindString": "Class", + "flags": {}, + "comment": { + "shortText": "Supabase Client.", + "text": "An isomorphic Javascript client for interacting with Postgres.\n" + }, + "children": [ + { + "id": 142, + "name": "constructor", + "kind": 512, + "kindString": "Constructor", + "flags": {}, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 99, + "character": 2 + } + ], + "signatures": [ + { + "id": 143, + "name": "new SupabaseClient", + "kind": 16384, + "kindString": "Constructor signature", + "flags": {}, + "comment": { + "shortText": "Create a new client for use in the browser." + }, + "typeParameter": [ + { + "id": 144, + "name": "Database", + "kind": 131072, + "kindString": "Type parameter", + "flags": {}, + "default": { + "type": "intrinsic", + "name": "any" + } + }, + { + "id": 147, + "name": "SchemaNameOrClientOptions", + "kind": 131072, + "kindString": "Type parameter", + "flags": {}, + "type": { + "type": "union", + "types": [ + { + "type": "intrinsic", + "name": "string" + }, + { + "type": "reflection", + "declaration": { + "id": 145, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 146, + "name": "PostgrestVersion", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 38, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [ + 146 + ] + } + ] + } + } + ] + }, + "default": { + "type": "conditional", + "checkType": { + "type": "literal", + "value": "public" + }, + "extendsType": { + "type": "reference", + "typeArguments": [ + { + "type": "typeOperator", + "operator": "keyof", + "target": { + "type": "reference", + "id": 144, + "name": "Database" + } + }, + { + "type": "literal", + "value": "__InternalSupabase" + } + ], + "qualifiedName": "Exclude", + "package": "typescript", + "name": "Exclude" + }, + "trueType": { + "type": "literal", + "value": "public" + }, + "falseType": { + "type": "intersection", + "types": [ + { + "type": "intrinsic", + "name": "string" + }, + { + "type": "reference", + "typeArguments": [ + { + "type": "typeOperator", + "operator": "keyof", + "target": { + "type": "reference", + "id": 144, + "name": "Database" + } + }, + { + "type": "literal", + "value": "__InternalSupabase" + } + ], + "qualifiedName": "Exclude", + "package": "typescript", + "name": "Exclude" + } + ] + } + } + }, + { + "id": 148, + "name": "SchemaName", + "kind": 131072, + "kindString": "Type parameter", + "flags": {}, + "type": { + "type": "intrinsic", + "name": "string" + }, + "default": { + "type": "conditional", + "checkType": { + "type": "reference", + "id": 147, + "name": "SchemaNameOrClientOptions" + }, + "extendsType": { + "type": "intersection", + "types": [ + { + "type": "intrinsic", + "name": "string" + }, + { + "type": "reference", + "typeArguments": [ + { + "type": "typeOperator", + "operator": "keyof", + "target": { + "type": "reference", + "id": 144, + "name": "Database" + } + }, + { + "type": "literal", + "value": "__InternalSupabase" + } + ], + "qualifiedName": "Exclude", + "package": "typescript", + "name": "Exclude" + } + ] + }, + "trueType": { + "type": "reference", + "name": "SchemaNameOrClientOptions" + }, + "falseType": { + "type": "conditional", + "checkType": { + "type": "literal", + "value": "public" + }, + "extendsType": { + "type": "reference", + "typeArguments": [ + { + "type": "typeOperator", + "operator": "keyof", + "target": { + "type": "reference", + "id": 144, + "name": "Database" + } + }, + { + "type": "literal", + "value": "__InternalSupabase" + } + ], + "qualifiedName": "Exclude", + "package": "typescript", + "name": "Exclude" + }, + "trueType": { + "type": "literal", + "value": "public" + }, + "falseType": { + "type": "intersection", + "types": [ + { + "type": "intrinsic", + "name": "string" + }, + { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "typeArguments": [ + { + "type": "typeOperator", + "operator": "keyof", + "target": { + "type": "reference", + "id": 144, + "name": "Database" + } + }, + { + "type": "literal", + "value": "__InternalSupabase" + } + ], + "qualifiedName": "Exclude", + "package": "typescript", + "name": "Exclude" + }, + { + "type": "literal", + "value": "__InternalSupabase" + } + ], + "qualifiedName": "Exclude", + "package": "typescript", + "name": "Exclude" + } + ] + } + } + } + }, + { + "id": 149, + "name": "Schema", + "kind": 131072, + "kindString": "Type parameter", + "flags": {}, + "type": { + "type": "reference", + "id": 127, + "name": "GenericSchema" + }, + "default": { + "type": "conditional", + "checkType": { + "type": "indexedAccess", + "indexType": { + "type": "reference", + "id": 148, + "name": "SchemaName" + }, + "objectType": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 144, + "name": "Database" + }, + { + "type": "literal", + "value": "__InternalSupabase" + } + ], + "qualifiedName": "Omit", + "package": "typescript", + "name": "Omit" + } + }, + "extendsType": { + "type": "reference", + "id": 127, + "name": "GenericSchema" + }, + "trueType": { + "type": "indexedAccess", + "indexType": { + "type": "intrinsic", + "name": "any" + }, + "objectType": { + "type": "intrinsic", + "name": "any" + } + }, + "falseType": { + "type": "intrinsic", + "name": "never" + } + } + }, + { + "id": 160, + "name": "ClientOptions", + "kind": 131072, + "kindString": "Type parameter", + "flags": {}, + "type": { + "type": "reflection", + "declaration": { + "id": 150, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 151, + "name": "PostgrestVersion", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 53, + "character": 26 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [ + 151 + ] + } + ] + } + }, + "default": { + "type": "conditional", + "checkType": { + "type": "reference", + "id": 147, + "name": "SchemaNameOrClientOptions" + }, + "extendsType": { + "type": "intersection", + "types": [ + { + "type": "intrinsic", + "name": "string" + }, + { + "type": "reference", + "typeArguments": [ + { + "type": "typeOperator", + "operator": "keyof", + "target": { + "type": "reference", + "id": 144, + "name": "Database" + } + }, + { + "type": "literal", + "value": "__InternalSupabase" + } + ], + "qualifiedName": "Exclude", + "package": "typescript", + "name": "Exclude" + } + ] + }, + "trueType": { + "type": "conditional", + "checkType": { + "type": "reference", + "id": 144, + "name": "Database" + }, + "extendsType": { + "type": "reflection", + "declaration": { + "id": 152, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 153, + "name": "__InternalSupabase", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 56, + "character": 25 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 154, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 155, + "name": "PostgrestVersion", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 56, + "character": 47 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [ + 155 + ] + } + ] + } + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [ + 153 + ] + } + ] + } + }, + "trueType": { + "type": "indexedAccess", + "indexType": { + "type": "literal", + "value": "__InternalSupabase" + }, + "objectType": { + "type": "reference", + "name": "Database" + } + }, + "falseType": { + "type": "reflection", + "declaration": { + "id": 156, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 157, + "name": "PostgrestVersion", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 59, + "character": 10 + } + ], + "type": { + "type": "literal", + "value": "12" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [ + 157 + ] + } + ] + } + } + }, + "falseType": { + "type": "conditional", + "checkType": { + "type": "reference", + "id": 147, + "name": "SchemaNameOrClientOptions" + }, + "extendsType": { + "type": "reflection", + "declaration": { + "id": 158, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 159, + "name": "PostgrestVersion", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 60, + "character": 42 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [ + 159 + ] + } + ] + } + }, + "trueType": { + "type": "reference", + "name": "SchemaNameOrClientOptions" + }, + "falseType": { + "type": "intrinsic", + "name": "never" + } + } + } + } + ], + "parameters": [ + { + "id": 161, + "name": "supabaseUrl", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "comment": { + "shortText": "The unique Supabase URL which is supplied when you create a new project in your project dashboard." + }, + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 162, + "name": "supabaseKey", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "comment": { + "shortText": "The unique Supabase Key which is supplied when you create a new project in your project dashboard." + }, + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 163, + "name": "options", + "kind": 32768, + "kindString": "Parameter", + "flags": { + "isOptional": true + }, + "type": { + "type": "reference", + "id": 80, + "typeArguments": [ + { + "type": "reference", + "id": 148, + "name": "SchemaName" + } + ], + "name": "SupabaseClientOptions" + } + } + ], + "type": { + "type": "reference", + "id": 141, + "typeArguments": [ + { + "type": "reference", + "id": 144, + "name": "Database" + }, + { + "type": "reference", + "id": 147, + "name": "SchemaNameOrClientOptions" + }, + { + "type": "reference", + "id": 148, + "name": "SchemaName" + }, + { + "type": "reference", + "id": 149, + "name": "Schema" + }, + { + "type": "reference", + "id": 160, + "name": "ClientOptions" + } + ], + "name": "default" + } + } + ] + }, + { + "id": 179, + "name": "accessToken", + "kind": 1024, + "kindString": "Property", + "flags": { + "isProtected": true, + "isOptional": true + }, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 82, + "character": 12 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 180, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "signatures": [ + { + "id": 181, + "name": "__type", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "union", + "types": [ + { + "type": "literal", + "value": null + }, + { + "type": "intrinsic", + "name": "string" + } + ] + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + } + } + }, + { + "id": 164, + "name": "auth", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Supabase Auth allows you to create and manage user sessions for access to data that is secured by access policies." + }, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 67, + "character": 2 + } + ], + "type": { + "type": "reference", + "name": "SupabaseAuthClient" + } + }, + { + "id": 168, + "name": "authUrl", + "kind": 1024, + "kindString": "Property", + "flags": { + "isProtected": true + }, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 75, + "character": 12 + } + ], + "type": { + "type": "reference", + "qualifiedName": "URL", + "package": "typescript", + "name": "URL" + } + }, + { + "id": 178, + "name": "changedAccessToken", + "kind": 1024, + "kindString": "Property", + "flags": { + "isProtected": true, + "isOptional": true + }, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 81, + "character": 12 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 173, + "name": "fetch", + "kind": 1024, + "kindString": "Property", + "flags": { + "isProtected": true, + "isOptional": true + }, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 80, + "character": 12 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 174, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "signatures": [ + { + "id": 175, + "name": "__type", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "parameters": [ + { + "id": 176, + "name": "input", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "type": { + "type": "union", + "types": [ + { + "type": "reference", + "qualifiedName": "RequestInfo", + "package": "typescript", + "name": "RequestInfo" + }, + { + "type": "reference", + "qualifiedName": "URL", + "package": "typescript", + "name": "URL" + } + ] + } + }, + { + "id": 177, + "name": "init", + "kind": 32768, + "kindString": "Parameter", + "flags": { + "isOptional": true + }, + "type": { + "type": "reference", + "qualifiedName": "RequestInit", + "package": "typescript", + "name": "RequestInit" + } + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "qualifiedName": "Response", + "package": "typescript", + "name": "Response" + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + } + } + }, + { + "id": 170, + "name": "functionsUrl", + "kind": 1024, + "kindString": "Property", + "flags": { + "isProtected": true + }, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 77, + "character": 12 + } + ], + "type": { + "type": "reference", + "qualifiedName": "URL", + "package": "typescript", + "name": "URL" + } + }, + { + "id": 182, + "name": "headers", + "kind": 1024, + "kindString": "Property", + "flags": { + "isProtected": true + }, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 84, + "character": 12 + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "intrinsic", + "name": "string" + }, + { + "type": "intrinsic", + "name": "string" + } + ], + "qualifiedName": "Record", + "package": "typescript", + "name": "Record" + } + }, + { + "id": 165, + "name": "realtime", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 68, + "character": 2 + } + ], + "type": { + "type": "reference", + "qualifiedName": "RealtimeClient", + "package": "@supabase/realtime-js", + "name": "default" + } + }, + { + "id": 167, + "name": "realtimeUrl", + "kind": 1024, + "kindString": "Property", + "flags": { + "isProtected": true + }, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 74, + "character": 12 + } + ], + "type": { + "type": "reference", + "qualifiedName": "URL", + "package": "typescript", + "name": "URL" + } + }, + { + "id": 171, + "name": "rest", + "kind": 1024, + "kindString": "Property", + "flags": { + "isProtected": true + }, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 78, + "character": 12 + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 144, + "name": "Database" + }, + { + "type": "reference", + "id": 160, + "name": "ClientOptions" + }, + { + "type": "reference", + "id": 148, + "name": "SchemaName" + }, + { + "type": "conditional", + "checkType": { + "type": "indexedAccess", + "indexType": { + "type": "reference", + "id": 148, + "name": "SchemaName" + }, + "objectType": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 144, + "name": "Database" + }, + { + "type": "literal", + "value": "__InternalSupabase" + } + ], + "qualifiedName": "Omit", + "package": "typescript", + "name": "Omit" + } + }, + "extendsType": { + "type": "reference", + "qualifiedName": "GenericSchema", + "package": "@supabase/postgrest-js", + "name": "GenericSchema" + }, + "trueType": { + "type": "indexedAccess", + "indexType": { + "type": "intrinsic", + "name": "any" + }, + "objectType": { + "type": "intrinsic", + "name": "any" + } + }, + "falseType": { + "type": "intrinsic", + "name": "any" + } + } + ], + "qualifiedName": "PostgrestClient", + "package": "@supabase/postgrest-js", + "name": "default" + } + }, + { + "id": 166, + "name": "storage", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Supabase Storage allows you to manage user-generated content, such as photos or videos." + }, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 72, + "character": 2 + } + ], + "type": { + "type": "reference", + "qualifiedName": "StorageClient", + "package": "@supabase/storage-js", + "name": "StorageClient" + } + }, + { + "id": 172, + "name": "storageKey", + "kind": 1024, + "kindString": "Property", + "flags": { + "isProtected": true + }, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 79, + "character": 12 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 169, + "name": "storageUrl", + "kind": 1024, + "kindString": "Property", + "flags": { + "isProtected": true + }, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 76, + "character": 12 + } + ], + "type": { + "type": "reference", + "qualifiedName": "URL", + "package": "typescript", + "name": "URL" + } + }, + { + "id": 184, + "name": "supabaseKey", + "kind": 1024, + "kindString": "Property", + "flags": { + "isProtected": true + }, + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 183, + "name": "supabaseUrl", + "kind": 1024, + "kindString": "Property", + "flags": { + "isProtected": true + }, + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 185, + "name": "functions", + "kind": 262144, + "kindString": "Accessor", + "flags": {}, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 177, + "character": 6 + } + ], + "getSignature": [ + { + "id": 186, + "name": "functions", + "kind": 524288, + "kindString": "Get signature", + "flags": {}, + "comment": { + "shortText": "Supabase Functions allows you to deploy and invoke edge functions." + }, + "type": { + "type": "reference", + "qualifiedName": "FunctionsClient", + "package": "@supabase/functions-js", + "name": "FunctionsClient" + } + } + ] + }, + { + "id": 224, + "name": "_getAccessToken", + "kind": 2048, + "kindString": "Method", + "flags": { + "isPrivate": true + }, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 303, + "character": 16 + } + ], + "signatures": [ + { + "id": 225, + "name": "_getAccessToken", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "union", + "types": [ + { + "type": "literal", + "value": null + }, + { + "type": "intrinsic", + "name": "string" + } + ] + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + }, + { + "id": 241, + "name": "_handleTokenChanged", + "kind": 2048, + "kindString": "Method", + "flags": { + "isPrivate": true + }, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 363, + "character": 10 + } + ], + "signatures": [ + { + "id": 242, + "name": "_handleTokenChanged", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "parameters": [ + { + "id": 243, + "name": "event", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "type": { + "type": "reference", + "qualifiedName": "AuthChangeEvent", + "package": "@supabase/auth-js", + "name": "AuthChangeEvent" + } + }, + { + "id": 244, + "name": "source", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "type": { + "type": "union", + "types": [ + { + "type": "literal", + "value": "CLIENT" + }, + { + "type": "literal", + "value": "STORAGE" + } + ] + } + }, + { + "id": 245, + "name": "token", + "kind": 32768, + "kindString": "Parameter", + "flags": { + "isOptional": true + }, + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "type": { + "type": "intrinsic", + "name": "void" + } + } + ] + }, + { + "id": 235, + "name": "_initRealtimeClient", + "kind": 2048, + "kindString": "Method", + "flags": { + "isPrivate": true + }, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 349, + "character": 10 + } + ], + "signatures": [ + { + "id": 236, + "name": "_initRealtimeClient", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "parameters": [ + { + "id": 237, + "name": "options", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "type": { + "type": "reference", + "qualifiedName": "RealtimeClientOptions", + "package": "@supabase/realtime-js", + "name": "RealtimeClientOptions" + } + } + ], + "type": { + "type": "reference", + "qualifiedName": "RealtimeClient", + "package": "@supabase/realtime-js", + "name": "default" + } + } + ] + }, + { + "id": 226, + "name": "_initSupabaseAuthClient", + "kind": 2048, + "kindString": "Method", + "flags": { + "isPrivate": true + }, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 313, + "character": 10 + } + ], + "signatures": [ + { + "id": 227, + "name": "_initSupabaseAuthClient", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "parameters": [ + { + "id": 228, + "name": "__namedParameters", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "type": { + "type": "reference", + "id": 78, + "name": "SupabaseAuthClientOptions" + } + }, + { + "id": 229, + "name": "headers", + "kind": 32768, + "kindString": "Parameter", + "flags": { + "isOptional": true + }, + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "intrinsic", + "name": "string" + }, + { + "type": "intrinsic", + "name": "string" + } + ], + "qualifiedName": "Record", + "package": "typescript", + "name": "Record" + } + }, + { + "id": 230, + "name": "fetch", + "kind": 32768, + "kindString": "Parameter", + "flags": { + "isOptional": true + }, + "type": { + "type": "reflection", + "declaration": { + "id": 231, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "signatures": [ + { + "id": 232, + "name": "__type", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "parameters": [ + { + "id": 233, + "name": "input", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "type": { + "type": "union", + "types": [ + { + "type": "reference", + "qualifiedName": "RequestInfo", + "package": "typescript", + "name": "RequestInfo" + }, + { + "type": "reference", + "qualifiedName": "URL", + "package": "typescript", + "name": "URL" + } + ] + } + }, + { + "id": 234, + "name": "init", + "kind": 32768, + "kindString": "Parameter", + "flags": { + "isOptional": true + }, + "type": { + "type": "reference", + "qualifiedName": "RequestInit", + "package": "typescript", + "name": "RequestInit" + } + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "qualifiedName": "Response", + "package": "typescript", + "name": "Response" + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + } + } + } + ], + "type": { + "type": "reference", + "name": "SupabaseAuthClient" + } + } + ] + }, + { + "id": 238, + "name": "_listenForAuthEvents", + "kind": 2048, + "kindString": "Method", + "flags": { + "isPrivate": true + }, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 356, + "character": 10 + } + ], + "signatures": [ + { + "id": 239, + "name": "_listenForAuthEvents", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "type": { + "type": "reflection", + "declaration": { + "id": 240, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {} + } + } + } + ] + }, + { + "id": 213, + "name": "channel", + "kind": 2048, + "kindString": "Method", + "flags": {}, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 275, + "character": 2 + } + ], + "signatures": [ + { + "id": 214, + "name": "channel", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Creates a Realtime channel with Broadcast, Presence, and Postgres Changes." + }, + "parameters": [ + { + "id": 215, + "name": "name", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "comment": { + "shortText": "The name of the Realtime channel." + }, + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 216, + "name": "opts", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "comment": { + "shortText": "The options to pass to the Realtime channel.\n\n" + }, + "type": { + "type": "reference", + "qualifiedName": "RealtimeChannelOptions", + "package": "@supabase/realtime-js", + "name": "RealtimeChannelOptions" + }, + "defaultValue": "..." + } + ], + "type": { + "type": "reference", + "qualifiedName": "RealtimeChannel", + "package": "@supabase/realtime-js", + "name": "default" + } + } + ] + }, + { + "id": 187, + "name": "from", + "kind": 2048, + "kindString": "Method", + "flags": {}, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 185, + "character": 2 + } + ], + "signatures": [ + { + "id": 188, + "name": "from", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Perform a query on a table or a view." + }, + "typeParameter": [ + { + "id": 189, + "name": "TableName", + "kind": 131072, + "kindString": "Type parameter", + "flags": {}, + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 190, + "name": "Table", + "kind": 131072, + "kindString": "Type parameter", + "flags": {}, + "type": { + "type": "reference", + "id": 111, + "name": "GenericTable" + } + } + ], + "parameters": [ + { + "id": 191, + "name": "relation", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "comment": { + "shortText": "The table or view name to query\n" + }, + "type": { + "type": "reference", + "id": 189, + "name": "TableName" + } + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 160, + "name": "ClientOptions" + }, + { + "type": "reference", + "id": 149, + "name": "Schema" + }, + { + "type": "reference", + "id": 190, + "name": "Table" + }, + { + "type": "reference", + "id": 189, + "name": "TableName" + }, + { + "type": "conditional", + "checkType": { + "type": "reference", + "id": 190, + "name": "Table" + }, + "extendsType": { + "type": "reflection", + "declaration": { + "id": 192, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {} + } + }, + "trueType": { + "type": "reference", + "qualifiedName": "R", + "package": "@supabase/postgrest-js", + "name": "R" + }, + "falseType": { + "type": "intrinsic", + "name": "unknown" + } + } + ], + "qualifiedName": "PostgrestQueryBuilder", + "package": "@supabase/postgrest-js", + "name": "default" + } + }, + { + "id": 193, + "name": "from", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Perform a query on a table or a view." + }, + "typeParameter": [ + { + "id": 194, + "name": "ViewName", + "kind": 131072, + "kindString": "Type parameter", + "flags": {}, + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 195, + "name": "View", + "kind": 131072, + "kindString": "Type parameter", + "flags": {}, + "type": { + "type": "reference", + "id": 122, + "name": "GenericView" + } + } + ], + "parameters": [ + { + "id": 196, + "name": "relation", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "comment": { + "shortText": "The table or view name to query\n" + }, + "type": { + "type": "reference", + "id": 194, + "name": "ViewName" + } + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 160, + "name": "ClientOptions" + }, + { + "type": "reference", + "id": 149, + "name": "Schema" + }, + { + "type": "reference", + "id": 195, + "name": "View" + }, + { + "type": "reference", + "id": 194, + "name": "ViewName" + }, + { + "type": "conditional", + "checkType": { + "type": "reference", + "id": 195, + "name": "View" + }, + "extendsType": { + "type": "reflection", + "declaration": { + "id": 197, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {} + } + }, + "trueType": { + "type": "reference", + "qualifiedName": "R", + "package": "@supabase/postgrest-js", + "name": "R" + }, + "falseType": { + "type": "intrinsic", + "name": "unknown" + } + } + ], + "qualifiedName": "PostgrestQueryBuilder", + "package": "@supabase/postgrest-js", + "name": "default" + } + } + ] + }, + { + "id": 217, + "name": "getChannels", + "kind": 2048, + "kindString": "Method", + "flags": {}, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 282, + "character": 2 + } + ], + "signatures": [ + { + "id": 218, + "name": "getChannels", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Returns all Realtime channels." + }, + "type": { + "type": "array", + "elementType": { + "type": "reference", + "qualifiedName": "RealtimeChannel", + "package": "@supabase/realtime-js", + "name": "default" + } + } + } + ] + }, + { + "id": 222, + "name": "removeAllChannels", + "kind": 2048, + "kindString": "Method", + "flags": {}, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 299, + "character": 2 + } + ], + "signatures": [ + { + "id": 223, + "name": "removeAllChannels", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Unsubscribes and removes all Realtime channels from Realtime client." + }, + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "array", + "elementType": { + "type": "union", + "types": [ + { + "type": "literal", + "value": "error" + }, + { + "type": "literal", + "value": "ok" + }, + { + "type": "literal", + "value": "timed out" + } + ] + } + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + }, + { + "id": 219, + "name": "removeChannel", + "kind": 2048, + "kindString": "Method", + "flags": {}, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 292, + "character": 2 + } + ], + "signatures": [ + { + "id": 220, + "name": "removeChannel", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Unsubscribes and removes Realtime channel from Realtime client." + }, + "parameters": [ + { + "id": 221, + "name": "channel", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "comment": { + "shortText": "The name of the Realtime channel.\n\n" + }, + "type": { + "type": "reference", + "qualifiedName": "RealtimeChannel", + "package": "@supabase/realtime-js", + "name": "default" + } + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "union", + "types": [ + { + "type": "literal", + "value": "error" + }, + { + "type": "literal", + "value": "ok" + }, + { + "type": "literal", + "value": "timed out" + } + ] + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + }, + { + "id": 202, + "name": "rpc", + "kind": 2048, + "kindString": "Method", + "flags": {}, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 244, + "character": 2 + } + ], + "signatures": [ + { + "id": 203, + "name": "rpc", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Perform a function call." + }, + "typeParameter": [ + { + "id": 204, + "name": "FnName", + "kind": 131072, + "kindString": "Type parameter", + "flags": {}, + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 205, + "name": "Fn", + "kind": 131072, + "kindString": "Type parameter", + "flags": {}, + "type": { + "type": "reference", + "id": 123, + "name": "GenericFunction" + } + } + ], + "parameters": [ + { + "id": 206, + "name": "fn", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "comment": { + "shortText": "The function name to call" + }, + "type": { + "type": "reference", + "id": 204, + "name": "FnName" + } + }, + { + "id": 207, + "name": "args", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "comment": { + "shortText": "The arguments to pass to the function call" + }, + "type": { + "type": "indexedAccess", + "indexType": { + "type": "literal", + "value": "Args" + }, + "objectType": { + "type": "reference", + "id": 205, + "name": "Fn" + } + }, + "defaultValue": "{}" + }, + { + "id": 208, + "name": "options", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "comment": { + "shortText": "Named parameters" + }, + "type": { + "type": "reflection", + "declaration": { + "id": 209, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 212, + "name": "count", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "Count algorithm to use to count rows returned by the\nfunction. Only applicable for [set-returning\nfunctions](https://www.postgresql.org/docs/current/functions-srf.html).\n\n`\"exact\"`: Exact but slow count algorithm. Performs a `COUNT(*)` under the\nhood.\n\n`\"planned\"`: Approximated but fast count algorithm. Uses the Postgres\nstatistics under the hood.\n\n`\"estimated\"`: Uses exact count for low numbers and planned count for high\nnumbers.\n" + }, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 250, + "character": 6 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "literal", + "value": "exact" + }, + { + "type": "literal", + "value": "planned" + }, + { + "type": "literal", + "value": "estimated" + } + ] + } + }, + { + "id": 211, + "name": "get", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "When set to `true`, the function will be called with\nread-only access mode." + }, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 249, + "character": 6 + } + ], + "type": { + "type": "intrinsic", + "name": "boolean" + } + }, + { + "id": 210, + "name": "head", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "When set to `true`, `data` will not be returned.\nUseful if you only need the count." + }, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 248, + "character": 6 + } + ], + "type": { + "type": "intrinsic", + "name": "boolean" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [ + 212, + 211, + 210 + ] + } + ] + } + }, + "defaultValue": "{}" + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 160, + "name": "ClientOptions" + }, + { + "type": "reference", + "id": 149, + "name": "Schema" + }, + { + "type": "conditional", + "checkType": { + "type": "indexedAccess", + "indexType": { + "type": "literal", + "value": "Returns" + }, + "objectType": { + "type": "reference", + "id": 205, + "name": "Fn" + } + }, + "extendsType": { + "type": "array", + "elementType": { + "type": "intrinsic", + "name": "any" + } + }, + "trueType": { + "type": "conditional", + "checkType": { + "type": "indexedAccess", + "indexType": { + "type": "intrinsic", + "name": "number" + }, + "objectType": { + "type": "indexedAccess", + "indexType": { + "type": "intrinsic", + "name": "any" + }, + "objectType": { + "type": "intrinsic", + "name": "any" + } + } + }, + "extendsType": { + "type": "reference", + "typeArguments": [ + { + "type": "intrinsic", + "name": "string" + }, + { + "type": "intrinsic", + "name": "unknown" + } + ], + "qualifiedName": "Record", + "package": "typescript", + "name": "Record" + }, + "trueType": { + "type": "indexedAccess", + "indexType": { + "type": "intrinsic", + "name": "any" + }, + "objectType": { + "type": "intrinsic", + "name": "any" + } + }, + "falseType": { + "type": "intrinsic", + "name": "never" + } + }, + "falseType": { + "type": "intrinsic", + "name": "never" + } + }, + { + "type": "indexedAccess", + "indexType": { + "type": "literal", + "value": "Returns" + }, + "objectType": { + "type": "reference", + "id": 205, + "name": "Fn" + } + }, + { + "type": "reference", + "id": 204, + "name": "FnName" + }, + { + "type": "literal", + "value": null + }, + { + "type": "literal", + "value": "RPC" + } + ], + "qualifiedName": "PostgrestFilterBuilder", + "package": "@supabase/postgrest-js", + "name": "default" + } + } + ] + }, + { + "id": 198, + "name": "schema", + "kind": 2048, + "kindString": "Method", + "flags": {}, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 209, + "character": 2 + } + ], + "signatures": [ + { + "id": 199, + "name": "schema", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Select a schema to query or perform an function (rpc) call.", + "text": "The schema needs to be on the list of exposed schemas inside Supabase.\n" + }, + "typeParameter": [ + { + "id": 200, + "name": "DynamicSchema", + "kind": 131072, + "kindString": "Type parameter", + "flags": {}, + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "parameters": [ + { + "id": 201, + "name": "schema", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "comment": { + "shortText": "The schema to query\n" + }, + "type": { + "type": "reference", + "id": 200, + "name": "DynamicSchema" + } + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 144, + "name": "Database" + }, + { + "type": "reference", + "id": 160, + "name": "ClientOptions" + }, + { + "type": "reference", + "id": 200, + "name": "DynamicSchema" + }, + { + "type": "conditional", + "checkType": { + "type": "indexedAccess", + "indexType": { + "type": "reference", + "id": 200, + "name": "DynamicSchema" + }, + "objectType": { + "type": "reference", + "id": 144, + "name": "Database" + } + }, + "extendsType": { + "type": "reference", + "id": 127, + "name": "GenericSchema" + }, + "trueType": { + "type": "indexedAccess", + "indexType": { + "type": "intrinsic", + "name": "any" + }, + "objectType": { + "type": "intrinsic", + "name": "any" + } + }, + "falseType": { + "type": "intrinsic", + "name": "any" + } + } + ], + "qualifiedName": "PostgrestClient", + "package": "@supabase/postgrest-js", + "name": "default" + } + } + ] + } + ], + "groups": [ + { + "title": "Constructors", + "kind": 512, + "children": [ + 142 + ] + }, + { + "title": "Properties", + "kind": 1024, + "children": [ + 179, + 164, + 168, + 178, + 173, + 170, + 182, + 165, + 167, + 171, + 166, + 172, + 169, + 184, + 183 + ] + }, + { + "title": "Accessors", + "kind": 262144, + "children": [ + 185 + ] + }, + { + "title": "Methods", + "kind": 2048, + "children": [ + 224, + 241, + 235, + 226, + 238, + 213, + 187, + 217, + 222, + 219, + 202, + 198 + ] + } + ], + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 31, + "character": 21 + } + ], + "typeParameter": [ + { + "id": 246, + "name": "Database", + "kind": 131072, + "kindString": "Type parameter", + "flags": {}, + "default": { + "type": "intrinsic", + "name": "any" + } + }, + { + "id": 249, + "name": "SchemaNameOrClientOptions", + "kind": 131072, + "kindString": "Type parameter", + "flags": {}, + "type": { + "type": "union", + "types": [ + { + "type": "intersection", + "types": [ + { + "type": "intrinsic", + "name": "string" + }, + { + "type": "typeOperator", + "operator": "keyof", + "target": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 144, + "name": "Database" + }, + { + "type": "literal", + "value": "__InternalSupabase" + } + ], + "qualifiedName": "Omit", + "package": "typescript", + "name": "Omit" + } + } + ] + }, + { + "type": "reflection", + "declaration": { + "id": 247, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 248, + "name": "PostgrestVersion", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 38, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [ + 248 + ] + } + ], + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 38, + "character": 6 + } + ] + } + } + ] + }, + "default": { + "type": "conditional", + "checkType": { + "type": "literal", + "value": "public" + }, + "extendsType": { + "type": "typeOperator", + "operator": "keyof", + "target": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 144, + "name": "Database" + }, + { + "type": "literal", + "value": "__InternalSupabase" + } + ], + "qualifiedName": "Omit", + "package": "typescript", + "name": "Omit" + } + }, + "trueType": { + "type": "literal", + "value": "public" + }, + "falseType": { + "type": "intersection", + "types": [ + { + "type": "intrinsic", + "name": "string" + }, + { + "type": "typeOperator", + "operator": "keyof", + "target": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 144, + "name": "Database" + }, + { + "type": "literal", + "value": "__InternalSupabase" + } + ], + "qualifiedName": "Omit", + "package": "typescript", + "name": "Omit" + } + } + ] + } + } + }, + { + "id": 250, + "name": "SchemaName", + "kind": 131072, + "kindString": "Type parameter", + "flags": {}, + "type": { + "type": "intersection", + "types": [ + { + "type": "intrinsic", + "name": "string" + }, + { + "type": "typeOperator", + "operator": "keyof", + "target": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 144, + "name": "Database" + }, + { + "type": "literal", + "value": "__InternalSupabase" + } + ], + "qualifiedName": "Omit", + "package": "typescript", + "name": "Omit" + } + } + ] + }, + "default": { + "type": "conditional", + "checkType": { + "type": "reference", + "id": 147, + "name": "SchemaNameOrClientOptions" + }, + "extendsType": { + "type": "intersection", + "types": [ + { + "type": "intrinsic", + "name": "string" + }, + { + "type": "typeOperator", + "operator": "keyof", + "target": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 144, + "name": "Database" + }, + { + "type": "literal", + "value": "__InternalSupabase" + } + ], + "qualifiedName": "Omit", + "package": "typescript", + "name": "Omit" + } + } + ] + }, + "trueType": { + "type": "reference", + "id": 147, + "name": "SchemaNameOrClientOptions" + }, + "falseType": { + "type": "conditional", + "checkType": { + "type": "literal", + "value": "public" + }, + "extendsType": { + "type": "typeOperator", + "operator": "keyof", + "target": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 144, + "name": "Database" + }, + { + "type": "literal", + "value": "__InternalSupabase" + } + ], + "qualifiedName": "Omit", + "package": "typescript", + "name": "Omit" + } + }, + "trueType": { + "type": "literal", + "value": "public" + }, + "falseType": { + "type": "intersection", + "types": [ + { + "type": "intrinsic", + "name": "string" + }, + { + "type": "typeOperator", + "operator": "keyof", + "target": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 144, + "name": "Database" + }, + { + "type": "literal", + "value": "__InternalSupabase" + } + ], + "qualifiedName": "Omit", + "package": "typescript", + "name": "Omit" + }, + { + "type": "literal", + "value": "__InternalSupabase" + } + ], + "qualifiedName": "Omit", + "package": "typescript", + "name": "Omit" + } + } + ] + } + } + } + }, + { + "id": 251, + "name": "Schema", + "kind": 131072, + "kindString": "Type parameter", + "flags": {}, + "type": { + "type": "conditional", + "checkType": { + "type": "indexedAccess", + "indexType": { + "type": "reference", + "id": 148, + "name": "SchemaName" + }, + "objectType": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 144, + "name": "Database" + }, + { + "type": "literal", + "value": "__InternalSupabase" + } + ], + "qualifiedName": "Omit", + "package": "typescript", + "name": "Omit" + } + }, + "extendsType": { + "type": "reference", + "id": 127, + "name": "GenericSchema" + }, + "trueType": { + "type": "indexedAccess", + "indexType": { + "type": "reference", + "id": 148, + "name": "SchemaName" + }, + "objectType": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 144, + "name": "Database" + }, + { + "type": "literal", + "value": "__InternalSupabase" + } + ], + "qualifiedName": "Omit", + "package": "typescript", + "name": "Omit" + } + }, + "falseType": { + "type": "intrinsic", + "name": "never" + } + }, + "default": { + "type": "conditional", + "checkType": { + "type": "indexedAccess", + "indexType": { + "type": "reference", + "id": 148, + "name": "SchemaName" + }, + "objectType": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 144, + "name": "Database" + }, + { + "type": "literal", + "value": "__InternalSupabase" + } + ], + "qualifiedName": "Omit", + "package": "typescript", + "name": "Omit" + } + }, + "extendsType": { + "type": "reference", + "id": 127, + "name": "GenericSchema" + }, + "trueType": { + "type": "indexedAccess", + "indexType": { + "type": "reference", + "id": 148, + "name": "SchemaName" + }, + "objectType": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 144, + "name": "Database" + }, + { + "type": "literal", + "value": "__InternalSupabase" + } + ], + "qualifiedName": "Omit", + "package": "typescript", + "name": "Omit" + } + }, + "falseType": { + "type": "intrinsic", + "name": "never" + } + } + }, + { + "id": 262, + "name": "ClientOptions", + "kind": 131072, + "kindString": "Type parameter", + "flags": {}, + "type": { + "type": "reflection", + "declaration": { + "id": 252, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 253, + "name": "PostgrestVersion", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 53, + "character": 26 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [ + 253 + ] + } + ], + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 53, + "character": 24 + } + ] + } + }, + "default": { + "type": "conditional", + "checkType": { + "type": "reference", + "id": 147, + "name": "SchemaNameOrClientOptions" + }, + "extendsType": { + "type": "intersection", + "types": [ + { + "type": "intrinsic", + "name": "string" + }, + { + "type": "typeOperator", + "operator": "keyof", + "target": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 144, + "name": "Database" + }, + { + "type": "literal", + "value": "__InternalSupabase" + } + ], + "qualifiedName": "Omit", + "package": "typescript", + "name": "Omit" + } + } + ] + }, + "trueType": { + "type": "conditional", + "checkType": { + "type": "reference", + "id": 144, + "name": "Database" + }, + "extendsType": { + "type": "reflection", + "declaration": { + "id": 254, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 255, + "name": "__InternalSupabase", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 56, + "character": 25 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 256, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 257, + "name": "PostgrestVersion", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 56, + "character": 47 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [ + 257 + ] + } + ], + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 56, + "character": 45 + } + ] + } + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [ + 255 + ] + } + ], + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 56, + "character": 23 + } + ] + } + }, + "trueType": { + "type": "indexedAccess", + "indexType": { + "type": "literal", + "value": "__InternalSupabase" + }, + "objectType": { + "type": "reference", + "id": 144, + "name": "Database" + } + }, + "falseType": { + "type": "reflection", + "declaration": { + "id": 258, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 259, + "name": "PostgrestVersion", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 59, + "character": 10 + } + ], + "type": { + "type": "literal", + "value": "12" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [ + 259 + ] + } + ], + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 59, + "character": 8 + } + ] + } + } + }, + "falseType": { + "type": "conditional", + "checkType": { + "type": "reference", + "id": 147, + "name": "SchemaNameOrClientOptions" + }, + "extendsType": { + "type": "reflection", + "declaration": { + "id": 260, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 261, + "name": "PostgrestVersion", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 60, + "character": 42 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [ + 261 + ] + } + ], + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 60, + "character": 40 + } + ] + } + }, + "trueType": { + "type": "reference", + "id": 147, + "name": "SchemaNameOrClientOptions" + }, + "falseType": { + "type": "intrinsic", + "name": "never" + } + } + } + } + ] + }, + { + "id": 2, + "name": "createClient", + "kind": 64, + "kindString": "Function", + "flags": {}, + "sources": [ + { + "fileName": "src/index.ts", + "line": 27, + "character": 13 + } + ], + "signatures": [ + { + "id": 3, + "name": "createClient", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Creates a new Supabase Client." + }, + "typeParameter": [ + { + "id": 4, + "name": "Database", + "kind": 131072, + "kindString": "Type parameter", + "flags": {}, + "default": { + "type": "intrinsic", + "name": "any" + } + }, + { + "id": 7, + "name": "SchemaNameOrClientOptions", + "kind": 131072, + "kindString": "Type parameter", + "flags": {}, + "type": { + "type": "union", + "types": [ + { + "type": "intrinsic", + "name": "string" + }, + { + "type": "reflection", + "declaration": { + "id": 5, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 6, + "name": "PostgrestVersion", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/index.ts", + "line": 31, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [ + 6 + ] + } + ] + } + } + ] + }, + "default": { + "type": "conditional", + "checkType": { + "type": "literal", + "value": "public" + }, + "extendsType": { + "type": "reference", + "typeArguments": [ + { + "type": "typeOperator", + "operator": "keyof", + "target": { + "type": "reference", + "id": 4, + "name": "Database" + } + }, + { + "type": "literal", + "value": "__InternalSupabase" + } + ], + "qualifiedName": "Exclude", + "package": "typescript", + "name": "Exclude" + }, + "trueType": { + "type": "literal", + "value": "public" + }, + "falseType": { + "type": "intersection", + "types": [ + { + "type": "intrinsic", + "name": "string" + }, + { + "type": "reference", + "typeArguments": [ + { + "type": "typeOperator", + "operator": "keyof", + "target": { + "type": "reference", + "id": 4, + "name": "Database" + } + }, + { + "type": "literal", + "value": "__InternalSupabase" + } + ], + "qualifiedName": "Exclude", + "package": "typescript", + "name": "Exclude" + } + ] + } + } + }, + { + "id": 8, + "name": "SchemaName", + "kind": 131072, + "kindString": "Type parameter", + "flags": {}, + "type": { + "type": "intrinsic", + "name": "string" + }, + "default": { + "type": "conditional", + "checkType": { + "type": "reference", + "id": 7, + "name": "SchemaNameOrClientOptions" + }, + "extendsType": { + "type": "intersection", + "types": [ + { + "type": "intrinsic", + "name": "string" + }, + { + "type": "reference", + "typeArguments": [ + { + "type": "typeOperator", + "operator": "keyof", + "target": { + "type": "reference", + "id": 4, + "name": "Database" + } + }, + { + "type": "literal", + "value": "__InternalSupabase" + } + ], + "qualifiedName": "Exclude", + "package": "typescript", + "name": "Exclude" + } + ] + }, + "trueType": { + "type": "reference", + "name": "SchemaNameOrClientOptions" + }, + "falseType": { + "type": "conditional", + "checkType": { + "type": "literal", + "value": "public" + }, + "extendsType": { + "type": "reference", + "typeArguments": [ + { + "type": "typeOperator", + "operator": "keyof", + "target": { + "type": "reference", + "id": 4, + "name": "Database" + } + }, + { + "type": "literal", + "value": "__InternalSupabase" + } + ], + "qualifiedName": "Exclude", + "package": "typescript", + "name": "Exclude" + }, + "trueType": { + "type": "literal", + "value": "public" + }, + "falseType": { + "type": "intersection", + "types": [ + { + "type": "intrinsic", + "name": "string" + }, + { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "typeArguments": [ + { + "type": "typeOperator", + "operator": "keyof", + "target": { + "type": "reference", + "id": 4, + "name": "Database" + } + }, + { + "type": "literal", + "value": "__InternalSupabase" + } + ], + "qualifiedName": "Exclude", + "package": "typescript", + "name": "Exclude" + }, + { + "type": "literal", + "value": "__InternalSupabase" + } + ], + "qualifiedName": "Exclude", + "package": "typescript", + "name": "Exclude" + } + ] + } + } + } + } + ], + "parameters": [ + { + "id": 9, + "name": "supabaseUrl", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 10, + "name": "supabaseKey", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 11, + "name": "options", + "kind": 32768, + "kindString": "Parameter", + "flags": { + "isOptional": true + }, + "type": { + "type": "reference", + "id": 80, + "typeArguments": [ + { + "type": "reference", + "id": 8, + "name": "SchemaName" + } + ], + "name": "SupabaseClientOptions" + } + } + ], + "type": { + "type": "reference", + "id": 141, + "typeArguments": [ + { + "type": "reference", + "id": 4, + "name": "Database" + }, + { + "type": "reference", + "id": 7, + "name": "SchemaNameOrClientOptions" + }, + { + "type": "reference", + "id": 8, + "name": "SchemaName" + }, + { + "type": "conditional", + "checkType": { + "type": "indexedAccess", + "indexType": { + "type": "reference", + "id": 8, + "name": "SchemaName" + }, + "objectType": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 4, + "name": "Database" + }, + { + "type": "literal", + "value": "__InternalSupabase" + } + ], + "qualifiedName": "Omit", + "package": "typescript", + "name": "Omit" + } + }, + "extendsType": { + "type": "reference", + "id": 127, + "name": "GenericSchema" + }, + "trueType": { + "type": "indexedAccess", + "indexType": { + "type": "intrinsic", + "name": "any" + }, + "objectType": { + "type": "intrinsic", + "name": "any" + } + }, + "falseType": { + "type": "intrinsic", + "name": "never" + } + }, + { + "type": "conditional", + "checkType": { + "type": "reference", + "id": 7, + "name": "SchemaNameOrClientOptions" + }, + "extendsType": { + "type": "intersection", + "types": [ + { + "type": "intrinsic", + "name": "string" + }, + { + "type": "reference", + "typeArguments": [ + { + "type": "typeOperator", + "operator": "keyof", + "target": { + "type": "reference", + "id": 4, + "name": "Database" + } + }, + { + "type": "literal", + "value": "__InternalSupabase" + } + ], + "qualifiedName": "Exclude", + "package": "typescript", + "name": "Exclude" + } + ] + }, + "trueType": { + "type": "conditional", + "checkType": { + "type": "reference", + "id": 4, + "name": "Database" + }, + "extendsType": { + "type": "reflection", + "declaration": { + "id": 12, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 13, + "name": "__InternalSupabase", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 56, + "character": 25 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 14, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 15, + "name": "PostgrestVersion", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 56, + "character": 47 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [ + 15 + ] + } + ] + } + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [ + 13 + ] + } + ] + } + }, + "trueType": { + "type": "indexedAccess", + "indexType": { + "type": "literal", + "value": "__InternalSupabase" + }, + "objectType": { + "type": "reference", + "name": "Database" + } + }, + "falseType": { + "type": "reflection", + "declaration": { + "id": 16, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 17, + "name": "PostgrestVersion", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 59, + "character": 10 + } + ], + "type": { + "type": "literal", + "value": "12" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [ + 17 + ] + } + ] + } + } + }, + "falseType": { + "type": "conditional", + "checkType": { + "type": "reference", + "id": 7, + "name": "SchemaNameOrClientOptions" + }, + "extendsType": { + "type": "reflection", + "declaration": { + "id": 18, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 19, + "name": "PostgrestVersion", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/SupabaseClient.ts", + "line": 60, + "character": 42 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [ + 19 + ] + } + ] + } + }, + "trueType": { + "type": "reference", + "name": "SchemaNameOrClientOptions" + }, + "falseType": { + "type": "intrinsic", + "name": "never" + } + } + } + ], + "name": "default" + } + } + ] + } + ], + "groups": [ + { + "title": "References", + "kind": 16777216, + "children": [ + 265, + 266, + 264, + 263 + ] + }, + { + "title": "Classes", + "kind": 128, + "children": [ + 141 + ] + }, + { + "title": "Functions", + "kind": 64, + "children": [ + 2 + ] + } + ], + "sources": [ + { + "fileName": "src/index.ts", + "line": 1, + "character": 0 + } + ] + }, + { + "id": 20, + "name": "lib/constants", + "kind": 2, + "kindString": "Module", + "flags": {}, + "children": [ + { + "id": 32, + "name": "DEFAULT_AUTH_OPTIONS", + "kind": 32, + "kindString": "Variable", + "flags": { + "isConst": true + }, + "sources": [ + { + "fileName": "src/lib/constants.ts", + "line": 28, + "character": 13 + } + ], + "type": { + "type": "reference", + "id": 78, + "name": "SupabaseAuthClientOptions" + }, + "defaultValue": "..." + }, + { + "id": 29, + "name": "DEFAULT_DB_OPTIONS", + "kind": 32, + "kindString": "Variable", + "flags": { + "isConst": true + }, + "sources": [ + { + "fileName": "src/lib/constants.ts", + "line": 24, + "character": 13 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 30, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 31, + "name": "schema", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/constants.ts", + "line": 25, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + }, + "defaultValue": "'public'" + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [ + 31 + ] + } + ] + } + }, + "defaultValue": "..." + }, + { + "id": 24, + "name": "DEFAULT_GLOBAL_OPTIONS", + "kind": 32, + "kindString": "Variable", + "flags": { + "isConst": true + }, + "sources": [ + { + "fileName": "src/lib/constants.ts", + "line": 20, + "character": 13 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 25, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 26, + "name": "headers", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/constants.ts", + "line": 21, + "character": 2 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 27, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 28, + "name": "X-Client-Info", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/constants.ts", + "line": 18, + "character": 33 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + }, + "defaultValue": "..." + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [ + 28 + ] + } + ] + } + }, + "defaultValue": "DEFAULT_HEADERS" + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [ + 26 + ] + } + ] + } + }, + "defaultValue": "..." + }, + { + "id": 21, + "name": "DEFAULT_HEADERS", + "kind": 32, + "kindString": "Variable", + "flags": { + "isConst": true + }, + "sources": [ + { + "fileName": "src/lib/constants.ts", + "line": 18, + "character": 13 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 22, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 23, + "name": "X-Client-Info", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/constants.ts", + "line": 18, + "character": 33 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + }, + "defaultValue": "..." + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [ + 23 + ] + } + ] + } + }, + "defaultValue": "..." + }, + { + "id": 33, + "name": "DEFAULT_REALTIME_OPTIONS", + "kind": 32, + "kindString": "Variable", + "flags": { + "isConst": true + }, + "sources": [ + { + "fileName": "src/lib/constants.ts", + "line": 35, + "character": 13 + } + ], + "type": { + "type": "reference", + "qualifiedName": "RealtimeClientOptions", + "package": "@supabase/realtime-js", + "name": "RealtimeClientOptions" + }, + "defaultValue": "{}" + } + ], + "groups": [ + { + "title": "Variables", + "kind": 32, + "children": [ + 32, + 29, + 24, + 21, + 33 + ] + } + ], + "sources": [ + { + "fileName": "src/lib/constants.ts", + "line": 2, + "character": 0 + } + ] + }, + { + "id": 34, + "name": "lib/fetch", + "kind": 2, + "kindString": "Module", + "flags": {}, + "children": [ + { + "id": 48, + "name": "fetchWithAuth", + "kind": 64, + "kindString": "Function", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/fetch.ts", + "line": 26, + "character": 13 + } + ], + "signatures": [ + { + "id": 49, + "name": "fetchWithAuth", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "parameters": [ + { + "id": 50, + "name": "supabaseKey", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 51, + "name": "getAccessToken", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "type": { + "type": "reflection", + "declaration": { + "id": 52, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "signatures": [ + { + "id": 53, + "name": "__type", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "union", + "types": [ + { + "type": "literal", + "value": null + }, + { + "type": "intrinsic", + "name": "string" + } + ] + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + } + } + }, + { + "id": 54, + "name": "customFetch", + "kind": 32768, + "kindString": "Parameter", + "flags": { + "isOptional": true + }, + "type": { + "type": "reflection", + "declaration": { + "id": 55, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "signatures": [ + { + "id": 56, + "name": "__type", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "parameters": [ + { + "id": 57, + "name": "input", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "type": { + "type": "union", + "types": [ + { + "type": "reference", + "qualifiedName": "RequestInfo", + "package": "typescript", + "name": "RequestInfo" + }, + { + "type": "reference", + "qualifiedName": "URL", + "package": "typescript", + "name": "URL" + } + ] + } + }, + { + "id": 58, + "name": "init", + "kind": 32768, + "kindString": "Parameter", + "flags": { + "isOptional": true + }, + "type": { + "type": "reference", + "qualifiedName": "RequestInit", + "package": "typescript", + "name": "RequestInit" + } + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "qualifiedName": "Response", + "package": "typescript", + "name": "Response" + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + } + } + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 59, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "signatures": [ + { + "id": 60, + "name": "__type", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "parameters": [ + { + "id": 61, + "name": "input", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "type": { + "type": "union", + "types": [ + { + "type": "reference", + "qualifiedName": "RequestInfo", + "package": "typescript", + "name": "RequestInfo" + }, + { + "type": "reference", + "qualifiedName": "URL", + "package": "typescript", + "name": "URL" + } + ] + } + }, + { + "id": 62, + "name": "init", + "kind": 32768, + "kindString": "Parameter", + "flags": { + "isOptional": true + }, + "type": { + "type": "reference", + "qualifiedName": "RequestInit", + "package": "typescript", + "name": "RequestInit" + } + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "qualifiedName": "Response", + "package": "typescript", + "name": "Response" + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + } + } + } + ] + }, + { + "id": 35, + "name": "resolveFetch", + "kind": 64, + "kindString": "Function", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/fetch.ts", + "line": 6, + "character": 13 + } + ], + "signatures": [ + { + "id": 36, + "name": "resolveFetch", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "parameters": [ + { + "id": 37, + "name": "customFetch", + "kind": 32768, + "kindString": "Parameter", + "flags": { + "isOptional": true + }, + "type": { + "type": "reflection", + "declaration": { + "id": 38, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "signatures": [ + { + "id": 39, + "name": "__type", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "parameters": [ + { + "id": 40, + "name": "input", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "type": { + "type": "union", + "types": [ + { + "type": "reference", + "qualifiedName": "RequestInfo", + "package": "typescript", + "name": "RequestInfo" + }, + { + "type": "reference", + "qualifiedName": "URL", + "package": "typescript", + "name": "URL" + } + ] + } + }, + { + "id": 41, + "name": "init", + "kind": 32768, + "kindString": "Parameter", + "flags": { + "isOptional": true + }, + "type": { + "type": "reference", + "qualifiedName": "RequestInit", + "package": "typescript", + "name": "RequestInit" + } + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "qualifiedName": "Response", + "package": "typescript", + "name": "Response" + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + } + } + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 42, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "signatures": [ + { + "id": 43, + "name": "__type", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "parameters": [ + { + "id": 44, + "name": "input", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "type": { + "type": "union", + "types": [ + { + "type": "reference", + "qualifiedName": "RequestInfo", + "package": "typescript", + "name": "RequestInfo" + }, + { + "type": "reference", + "qualifiedName": "URL", + "package": "typescript", + "name": "URL" + } + ] + } + }, + { + "id": 45, + "name": "init", + "kind": 32768, + "kindString": "Parameter", + "flags": { + "isOptional": true + }, + "type": { + "type": "reference", + "qualifiedName": "RequestInit", + "package": "typescript", + "name": "RequestInit" + } + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "qualifiedName": "Response", + "package": "typescript", + "name": "Response" + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + } + } + } + ] + }, + { + "id": 46, + "name": "resolveHeadersConstructor", + "kind": 64, + "kindString": "Function", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/fetch.ts", + "line": 18, + "character": 13 + } + ], + "signatures": [ + { + "id": 47, + "name": "resolveHeadersConstructor", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "type": { + "type": "intrinsic", + "name": "any" + } + } + ] + } + ], + "groups": [ + { + "title": "Functions", + "kind": 64, + "children": [ + 48, + 35, + 46 + ] + } + ], + "sources": [ + { + "fileName": "src/lib/fetch.ts", + "line": 2, + "character": 0 + } + ] + }, + { + "id": 63, + "name": "lib/helpers", + "kind": 2, + "kindString": "Module", + "flags": {}, + "children": [ + { + "id": 69, + "name": "applySettingDefaults", + "kind": 64, + "kindString": "Function", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/helpers.ts", + "line": 18, + "character": 16 + } + ], + "signatures": [ + { + "id": 70, + "name": "applySettingDefaults", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "typeParameter": [ + { + "id": 71, + "name": "Database", + "kind": 131072, + "kindString": "Type parameter", + "flags": {}, + "default": { + "type": "intrinsic", + "name": "any" + } + }, + { + "id": 72, + "name": "SchemaName", + "kind": 131072, + "kindString": "Type parameter", + "flags": {}, + "type": { + "type": "intrinsic", + "name": "string" + }, + "default": { + "type": "conditional", + "checkType": { + "type": "literal", + "value": "public" + }, + "extendsType": { + "type": "typeOperator", + "operator": "keyof", + "target": { + "type": "reference", + "id": 71, + "name": "Database" + } + }, + "trueType": { + "type": "literal", + "value": "public" + }, + "falseType": { + "type": "intersection", + "types": [ + { + "type": "intrinsic", + "name": "string" + }, + { + "type": "typeOperator", + "operator": "keyof", + "target": { + "type": "reference", + "id": 71, + "name": "Database" + } + } + ] + } + } + } + ], + "parameters": [ + { + "id": 73, + "name": "options", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "type": { + "type": "reference", + "id": 80, + "typeArguments": [ + { + "type": "reference", + "id": 72, + "name": "SchemaName" + } + ], + "name": "SupabaseClientOptions" + } + }, + { + "id": 74, + "name": "defaults", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "type": { + "type": "reference", + "id": 80, + "typeArguments": [ + { + "type": "intrinsic", + "name": "any" + } + ], + "name": "SupabaseClientOptions" + } + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 80, + "typeArguments": [ + { + "type": "reference", + "id": 72, + "name": "SchemaName" + } + ], + "name": "SupabaseClientOptions" + } + ], + "qualifiedName": "Required", + "package": "typescript", + "name": "Required" + } + } + ] + }, + { + "id": 66, + "name": "ensureTrailingSlash", + "kind": 64, + "kindString": "Function", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/helpers.ts", + "line": 12, + "character": 16 + } + ], + "signatures": [ + { + "id": 67, + "name": "ensureTrailingSlash", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "parameters": [ + { + "id": 68, + "name": "url", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ] + }, + { + "id": 75, + "name": "isBrowser", + "kind": 64, + "kindString": "Function", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/helpers.ts", + "line": 16, + "character": 13 + } + ], + "signatures": [ + { + "id": 76, + "name": "isBrowser", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "type": { + "type": "intrinsic", + "name": "boolean" + } + } + ] + }, + { + "id": 64, + "name": "uuid", + "kind": 64, + "kindString": "Function", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/helpers.ts", + "line": 4, + "character": 16 + } + ], + "signatures": [ + { + "id": 65, + "name": "uuid", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "type": { + "type": "intrinsic", + "name": "string" + } + } + ] + } + ], + "groups": [ + { + "title": "Functions", + "kind": 64, + "children": [ + 69, + 66, + 75, + 64 + ] + } + ], + "sources": [ + { + "fileName": "src/lib/helpers.ts", + "line": 2, + "character": 0 + } + ] + }, + { + "id": 77, + "name": "lib/types", + "kind": 2, + "kindString": "Module", + "flags": {}, + "children": [ + { + "id": 78, + "name": "SupabaseAuthClientOptions", + "kind": 256, + "kindString": "Interface", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 8, + "character": 17 + } + ], + "extendedTypes": [ + { + "type": "reference", + "name": "AuthClientOptions" + } + ] + }, + { + "id": 79, + "name": "Fetch", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 10, + "character": 12 + } + ], + "type": { + "type": "query", + "queryType": { + "type": "reference", + "id": 38, + "qualifiedName": "fetch", + "package": "typescript", + "name": "fetch" + } + } + }, + { + "id": 123, + "name": "GenericFunction", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 109, + "character": 12 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 124, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 125, + "name": "Args", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 110, + "character": 2 + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "intrinsic", + "name": "string" + }, + { + "type": "intrinsic", + "name": "unknown" + } + ], + "qualifiedName": "Record", + "package": "typescript", + "name": "Record" + } + }, + { + "id": 126, + "name": "Returns", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 111, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "unknown" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [ + 125, + 126 + ] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 109, + "character": 30 + } + ] + } + } + }, + { + "id": 118, + "name": "GenericNonUpdatableView", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 102, + "character": 12 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 119, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 121, + "name": "Relationships", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 104, + "character": 2 + } + ], + "type": { + "type": "array", + "elementType": { + "type": "reference", + "id": 104, + "name": "GenericRelationship" + } + } + }, + { + "id": 120, + "name": "Row", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 103, + "character": 2 + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "intrinsic", + "name": "string" + }, + { + "type": "intrinsic", + "name": "unknown" + } + ], + "qualifiedName": "Record", + "package": "typescript", + "name": "Record" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [ + 121, + 120 + ] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 102, + "character": 38 + } + ] + } + } + }, + { + "id": 104, + "name": "GenericRelationship", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 85, + "character": 12 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 105, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 107, + "name": "columns", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 87, + "character": 2 + } + ], + "type": { + "type": "array", + "elementType": { + "type": "intrinsic", + "name": "string" + } + } + }, + { + "id": 106, + "name": "foreignKeyName", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 86, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 108, + "name": "isOneToOne", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 88, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "boolean" + } + }, + { + "id": 110, + "name": "referencedColumns", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 90, + "character": 2 + } + ], + "type": { + "type": "array", + "elementType": { + "type": "intrinsic", + "name": "string" + } + } + }, + { + "id": 109, + "name": "referencedRelation", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 89, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [ + 107, + 106, + 108, + 110, + 109 + ] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 85, + "character": 34 + } + ] + } + } + }, + { + "id": 127, + "name": "GenericSchema", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 114, + "character": 12 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 128, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 131, + "name": "Functions", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 117, + "character": 2 + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "intrinsic", + "name": "string" + }, + { + "type": "reference", + "id": 123, + "name": "GenericFunction" + } + ], + "qualifiedName": "Record", + "package": "typescript", + "name": "Record" + } + }, + { + "id": 129, + "name": "Tables", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 115, + "character": 2 + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "intrinsic", + "name": "string" + }, + { + "type": "reference", + "id": 111, + "name": "GenericTable" + } + ], + "qualifiedName": "Record", + "package": "typescript", + "name": "Record" + } + }, + { + "id": 130, + "name": "Views", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 116, + "character": 2 + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "intrinsic", + "name": "string" + }, + { + "type": "reference", + "id": 122, + "name": "GenericView" + } + ], + "qualifiedName": "Record", + "package": "typescript", + "name": "Record" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [ + 131, + 129, + 130 + ] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 114, + "character": 28 + } + ] + } + } + }, + { + "id": 111, + "name": "GenericTable", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 93, + "character": 12 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 112, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 114, + "name": "Insert", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 95, + "character": 2 + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "intrinsic", + "name": "string" + }, + { + "type": "intrinsic", + "name": "unknown" + } + ], + "qualifiedName": "Record", + "package": "typescript", + "name": "Record" + } + }, + { + "id": 116, + "name": "Relationships", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 97, + "character": 2 + } + ], + "type": { + "type": "array", + "elementType": { + "type": "reference", + "id": 104, + "name": "GenericRelationship" + } + } + }, + { + "id": 113, + "name": "Row", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 94, + "character": 2 + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "intrinsic", + "name": "string" + }, + { + "type": "intrinsic", + "name": "unknown" + } + ], + "qualifiedName": "Record", + "package": "typescript", + "name": "Record" + } + }, + { + "id": 115, + "name": "Update", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 96, + "character": 2 + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "intrinsic", + "name": "string" + }, + { + "type": "intrinsic", + "name": "unknown" + } + ], + "qualifiedName": "Record", + "package": "typescript", + "name": "Record" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [ + 114, + 116, + 113, + 115 + ] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 93, + "character": 27 + } + ] + } + } + }, + { + "id": 117, + "name": "GenericUpdatableView", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 100, + "character": 12 + } + ], + "type": { + "type": "reference", + "id": 111, + "name": "GenericTable" + } + }, + { + "id": 122, + "name": "GenericView", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 107, + "character": 12 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "reference", + "id": 117, + "name": "GenericUpdatableView" + }, + { + "type": "reference", + "id": 118, + "name": "GenericNonUpdatableView" + } + ] + } + }, + { + "id": 134, + "name": "QueryData", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 124, + "character": 12 + } + ], + "typeParameter": [ + { + "id": 137, + "name": "T", + "kind": 131072, + "kindString": "Type parameter", + "flags": {} + } + ], + "type": { + "type": "conditional", + "checkType": { + "type": "reference", + "id": 137, + "name": "T" + }, + "extendsType": { + "type": "reference", + "typeArguments": [ + { + "type": "reflection", + "declaration": { + "id": 135, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 136, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 124, + "character": 51 + } + ], + "type": { + "type": "inferred", + "name": "U" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [ + 136 + ] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 124, + "character": 49 + } + ] + } + } + ], + "qualifiedName": "PromiseLike", + "package": "typescript", + "name": "PromiseLike" + }, + "trueType": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "name": "U" + }, + { + "type": "literal", + "value": null + } + ], + "qualifiedName": "Exclude", + "package": "typescript", + "name": "Exclude" + }, + "falseType": { + "type": "intrinsic", + "name": "never" + } + } + }, + { + "id": 138, + "name": "QueryError", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 125, + "character": 12 + } + ], + "type": { + "type": "reference", + "qualifiedName": "PostgrestError", + "package": "@supabase/postgrest-js", + "name": "PostgrestError" + } + }, + { + "id": 132, + "name": "QueryResult", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "shortText": "Helper types for query results." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 123, + "character": 12 + } + ], + "typeParameter": [ + { + "id": 133, + "name": "T", + "kind": 131072, + "kindString": "Type parameter", + "flags": {} + } + ], + "type": { + "type": "conditional", + "checkType": { + "type": "reference", + "id": 133, + "name": "T" + }, + "extendsType": { + "type": "reference", + "typeArguments": [ + { + "type": "inferred", + "name": "U" + } + ], + "qualifiedName": "PromiseLike", + "package": "typescript", + "name": "PromiseLike" + }, + "trueType": { + "type": "reference", + "name": "U" + }, + "falseType": { + "type": "intrinsic", + "name": "never" + } + } + }, + { + "id": 80, + "name": "SupabaseClientOptions", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 12, + "character": 12 + } + ], + "typeParameter": [ + { + "id": 103, + "name": "SchemaName", + "kind": 131072, + "kindString": "Type parameter", + "flags": {} + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 81, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 85, + "name": "auth", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 20, + "character": 2 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 86, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 87, + "name": "autoRefreshToken", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "Automatically refreshes the token for logged-in users. Defaults to true." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 24, + "character": 4 + } + ], + "type": { + "type": "intrinsic", + "name": "boolean" + } + }, + { + "id": 93, + "name": "debug", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "If debug messages for authentication client are emitted. Can be used to inspect the behavior of the library." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 48, + "character": 4 + } + ], + "type": { + "type": "indexedAccess", + "indexType": { + "type": "literal", + "value": "debug" + }, + "objectType": { + "type": "reference", + "id": 78, + "name": "SupabaseAuthClientOptions" + } + } + }, + { + "id": 90, + "name": "detectSessionInUrl", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "Detect a session from the URL. Used for OAuth login callbacks. Defaults to true." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 36, + "character": 4 + } + ], + "type": { + "type": "intrinsic", + "name": "boolean" + } + }, + { + "id": 92, + "name": "flowType", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "OAuth flow to use - defaults to implicit flow. PKCE is recommended for mobile and server-side applications." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 44, + "character": 4 + } + ], + "type": { + "type": "indexedAccess", + "indexType": { + "type": "literal", + "value": "flowType" + }, + "objectType": { + "type": "reference", + "id": 78, + "name": "SupabaseAuthClientOptions" + } + } + }, + { + "id": 94, + "name": "lock", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "Provide your own locking mechanism based on the environment. By default no locking is done at this time.", + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 54, + "character": 4 + } + ], + "type": { + "type": "indexedAccess", + "indexType": { + "type": "literal", + "value": "lock" + }, + "objectType": { + "type": "reference", + "id": 78, + "name": "SupabaseAuthClientOptions" + } + } + }, + { + "id": 89, + "name": "persistSession", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "Whether to persist a logged-in session to storage. Defaults to true." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 32, + "character": 4 + } + ], + "type": { + "type": "intrinsic", + "name": "boolean" + } + }, + { + "id": 91, + "name": "storage", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "A storage provider. Used to store the logged-in session." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 40, + "character": 4 + } + ], + "type": { + "type": "indexedAccess", + "indexType": { + "type": "literal", + "value": "storage" + }, + "objectType": { + "type": "reference", + "id": 78, + "name": "SupabaseAuthClientOptions" + } + } + }, + { + "id": 88, + "name": "storageKey", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "Optional key name used for storing tokens in local storage." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 28, + "character": 4 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [ + 87, + 93, + 90, + 92, + 94, + 89, + 91, + 88 + ] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 20, + "character": 9 + } + ] + } + } + }, + { + "id": 82, + "name": "db", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "The Postgres schema which your tables belong to. Must be on the list of exposed schemas in Supabase. Defaults to `public`." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 16, + "character": 2 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 83, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 84, + "name": "schema", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 17, + "character": 4 + } + ], + "type": { + "type": "reference", + "id": 103, + "name": "SchemaName" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [ + 84 + ] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 16, + "character": 7 + } + ] + } + } + }, + { + "id": 97, + "name": "global", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 61, + "character": 2 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 98, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 99, + "name": "fetch", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "A custom `fetch` implementation." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 65, + "character": 4 + } + ], + "type": { + "type": "reference", + "id": 79, + "name": "Fetch" + } + }, + { + "id": 100, + "name": "headers", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "Optional headers for initializing the client." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 69, + "character": 4 + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "intrinsic", + "name": "string" + }, + { + "type": "intrinsic", + "name": "string" + } + ], + "qualifiedName": "Record", + "package": "typescript", + "name": "Record" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [ + 99, + 100 + ] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 61, + "character": 11 + } + ] + } + } + }, + { + "id": 95, + "name": "realtime", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "Options passed to the realtime-js instance" + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 59, + "character": 2 + } + ], + "type": { + "type": "reference", + "qualifiedName": "RealtimeClientOptions", + "package": "@supabase/realtime-js", + "name": "RealtimeClientOptions" + } + }, + { + "id": 96, + "name": "storage", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 60, + "character": 2 + } + ], + "type": { + "type": "reference", + "qualifiedName": "StorageClientOptions", + "package": "@supabase/storage-js", + "name": "StorageClientOptions" + } + }, + { + "id": 101, + "name": "accessToken", + "kind": 2048, + "kindString": "Method", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 82, + "character": 2 + } + ], + "signatures": [ + { + "id": 102, + "name": "accessToken", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Optional function for using a third-party authentication system with\nSupabase. The function should return an access token or ID token (JWT) by\nobtaining it from the third-party auth client library. Note that this\nfunction may be called concurrently and many times. Use memoization and\nlocking techniques if this is not supported by the client libraries.", + "text": "When set, the `auth` namespace of the Supabase client cannot be used.\nCreate another client if you wish to use Supabase Auth and third-party\nauthentications concurrently in the same application.\n" + }, + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "union", + "types": [ + { + "type": "literal", + "value": null + }, + { + "type": "intrinsic", + "name": "string" + } + ] + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [ + 85, + 82, + 97, + 95, + 96 + ] + }, + { + "title": "Methods", + "kind": 2048, + "children": [ + 101 + ] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 12, + "character": 48 + } + ] + } + } + } + ], + "groups": [ + { + "title": "Interfaces", + "kind": 256, + "children": [ + 78 + ] + }, + { + "title": "Type Aliases", + "kind": 4194304, + "children": [ + 79, + 123, + 118, + 104, + 127, + 111, + 117, + 122, + 134, + 138, + 132, + 80 + ] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 1, + "character": 0 + } + ] + }, + { + "id": 139, + "name": "lib/version", + "kind": 2, + "kindString": "Module", + "flags": {}, + "children": [ + { + "id": 140, + "name": "version", + "kind": 32, + "kindString": "Variable", + "flags": { + "isConst": true + }, + "sources": [ + { + "fileName": "src/lib/version.ts", + "line": 1, + "character": 13 + } + ], + "type": { + "type": "literal", + "value": "0.0.0-automated" + }, + "defaultValue": "'0.0.0-automated'" + } + ], + "groups": [ + { + "title": "Variables", + "kind": 32, + "children": [ + 140 + ] + } + ], + "sources": [ + { + "fileName": "src/lib/version.ts", + "line": 1, + "character": 0 + } + ] + } + ], + "groups": [ + { + "title": "Modules", + "kind": 2, + "children": [ + 1, + 20, + 34, + 63, + 77, + 139 + ] + } + ] +} \ No newline at end of file diff --git a/webpack.config.js b/webpack.config.js deleted file mode 100644 index fc170305..00000000 --- a/webpack.config.js +++ /dev/null @@ -1,30 +0,0 @@ -const webpack = require('webpack') -const path = require('path') - -module.exports = (env) => ({ - mode: env?.mode || 'production', - entry: './src/index.ts', - output: { - path: path.resolve(__dirname, 'dist/umd'), - filename: 'supabase.js', - library: { - type: 'umd', - name: 'supabase', - }, - }, - module: { - rules: [ - { - test: /\.ts$/, - loader: 'ts-loader', - options: { - transpileOnly: true, - }, - }, - ], - }, - resolve: { - extensions: ['.ts', '.js', '.json'], - }, - plugins: [], -})