diff --git a/.github/workflows/checkly.yaml b/.github/workflows/checkly.yaml new file mode 100644 index 00000000..f5982670 --- /dev/null +++ b/.github/workflows/checkly.yaml @@ -0,0 +1,52 @@ +name: "Checkly E2E" +on: [deployment_status] + +# Set the necessary credentials and export variables we can use to instrument our test run. Use the ENVIRONMENT_URL +# to run your checks against staging, preview or production. +env: + CHECKLY_API_KEY: ${{ secrets.CHECKLY_API_KEY }} + CHECKLY_ACCOUNT_ID: ${{ vars.CHECKLY_ACCOUNT_ID }} + ENVIRONMENT_URL: ${{ github.event.deployment_status.environment_url }} + CHECKLY_TEST_ENVIRONMENT: ${{ github.event.deployment_status.environment }} +jobs: + test-e2e: + if: github.event.deployment_status.state == 'success' # Only run when the deployment was successful. + name: Test E2E on Checkly + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - uses: actions/checkout@v4 + with: + ref: "${{ github.event.deployment_status.deployment.ref }}" + fetch-depth: 0 + - name: Set branch name # workaround to detect branch name in "deployment_status" actions + run: + echo "CHECKLY_TEST_REPO_BRANCH=$(git show -s --pretty=%D HEAD | tr -s + ',' '\n' | sed 's/^ //' | grep -e 'origin/' | head -1 | sed + 's/\origin\///g')" >> $GITHUB_ENV + - uses: actions/setup-node@v4 + with: + node-version-file: ".nvmrc" + - name: Restore or cache node_modules + id: cache-node-modules + uses: actions/cache@v3 + with: + path: node_modules + key: node-modules-${{ hashFiles('package-lock.json') }} + - name: Install dependencies + if: steps.cache-node-modules.outputs.cache-hit != 'true' + run: npm ci + env: + GITHUB_NPM_TOKEN: ${{ secrets.GH_NPM_PACKAGE_READ_TOKEN }} + - name: Run checks # run the checks passing in the ENVIRONMENT_URL and recording a test session. + id: run-checks + run: npx checkly test -e ENVIRONMENT_URL=${{ env.ENVIRONMENT_URL }} + --reporter=github --record + - name: Create summary # export the markdown report to the job summary. + id: create-summary + run: cat checkly-github-report.md > $GITHUB_STEP_SUMMARY + - name: Deploy checks # if the test run was successful and we are on Production, deploy the checks + id: deploy-checks + if: steps.run-checks.outcome == 'success' && + github.event.deployment_status.environment == 'Production' + run: npx checkly deploy --force diff --git a/__checks__/app/articles/api-keys.spec.ts b/__checks__/app/articles/api-keys.spec.ts new file mode 100644 index 00000000..026326a0 --- /dev/null +++ b/__checks__/app/articles/api-keys.spec.ts @@ -0,0 +1,20 @@ +import { expect, test } from '@playwright/test'; +import { appUrl } from '../../utils/app-url'; + +test.describe("API Keys", () => { + [ + { name: "Overview", href: "/articles/api-key-management" }, + { name: "Authentication", href: "/articles/api-key-authentication" }, + { name: "End User Access", href: "/articles/api-key-end-users" }, + { name: "Using the API", href: "/articles/api-key-api" }, + { name: "React Component", href: "/articles/api-key-react-component" }, + { name: "Leak Detection", href: "/articles/api-key-leak-detection" }, + { name: "Service Limits", href: "/articles/api-key-service-limits" }, + { name: "Buckets & Environments", href: "/articles/api-key-buckets" } + ].forEach(({ name, href }) => { + test(`${name} Page Visitable`, async ({ page }) => { + const response = await page.goto(appUrl(href)); + expect(response?.status()).toBeLessThan(400); + }); + }) +}); diff --git a/__checks__/app/articles/getting-started.spec.ts b/__checks__/app/articles/getting-started.spec.ts new file mode 100644 index 00000000..78ad1f23 --- /dev/null +++ b/__checks__/app/articles/getting-started.spec.ts @@ -0,0 +1,16 @@ +import { expect, test } from '@playwright/test'; +import { appUrl } from '../../utils/app-url'; + +test.describe("Getting Started", () => { + [ + { name: "Step 1", href: "/articles/step-1-setup-basic-gateway" }, + { name: "Step 2", href: "/articles/step-2-add-api-key-auth" }, + { name: "Step 3", href: "/articles/step-3-add-rate-limiting" }, + { name: "Step 4", href: "/articles/step-4-deploying-to-the-edge" } + ].forEach(({ name, href }) => { + test(`${name} Page Visitable`, async ({ page }) => { + const response = await page.goto(appUrl(href)); + expect(response?.status()).toBeLessThan(400); + }); + }) +}); diff --git a/__checks__/app/articles/getting-to-production.spec.ts b/__checks__/app/articles/getting-to-production.spec.ts new file mode 100644 index 00000000..85145025 --- /dev/null +++ b/__checks__/app/articles/getting-to-production.spec.ts @@ -0,0 +1,20 @@ +import { expect, test } from '@playwright/test'; +import { appUrl } from '../../utils/app-url'; + +test.describe("Getting To Production", () => { + [ + { name: "Environments", href: "/articles/environments" }, + { name: "GitHub Integration", href: "/articles/source-control" }, + { name: "Securing your backend", href: "/articles/securing-your-backend" }, + { name: "Custom Domains", href: "/articles/custom-domains" }, + { name: "Testing", href: "/articles/testing" }, + { name: "Zuplo in your stack", href: "/articles/zuplo-in-your-stack" }, + { name: "Log Plugins", href: "/articles/log-plugins" }, + { name: "Metrics Plugins", href: "/articles/metrics-plugins" } + ].forEach(({ name, href }) => { + test(`${name} Page Visitable`, async ({ page }) => { + const response = await page.goto(appUrl(href)); + expect(response?.status()).toBeLessThan(400); + }); + }) +}); diff --git a/__checks__/app/articles/introduction.spec.ts b/__checks__/app/articles/introduction.spec.ts new file mode 100644 index 00000000..e3f63927 --- /dev/null +++ b/__checks__/app/articles/introduction.spec.ts @@ -0,0 +1,15 @@ +import { expect, test } from '@playwright/test'; +import { appUrl } from '../../utils/app-url'; + +test.describe("Introduction", () => { + [ + { name: "What is Zuplo?", href: "/articles/what-is-zuplo" }, + { name: "Who uses Zuplo, and why?", href: "/articles/who-uses-and-why" }, + { name: "Zuplo in your stack", href: "/articles/zuplo-in-your-stack" } + ].forEach(({ name, href }) => { + test(`${name} Page Visitable`, async ({ page }) => { + const response = await page.goto(appUrl(href)); + expect(response?.status()).toBeLessThan(400); + }); + }) +}); diff --git a/__checks__/app/articles/open-api.spec.ts b/__checks__/app/articles/open-api.spec.ts new file mode 100644 index 00000000..2f9c79c0 --- /dev/null +++ b/__checks__/app/articles/open-api.spec.ts @@ -0,0 +1,9 @@ +import { expect, test } from '@playwright/test'; +import { appUrl } from '../../utils/app-url'; + +test.describe("Open API Page", () => { + test("Visitable", async ({ page }) => { + const response = await page.goto(appUrl("/articles/open-api")); + expect(response?.status()).toBeLessThan(400); + }) +}); diff --git a/__checks__/app/articles/security.spec.ts b/__checks__/app/articles/security.spec.ts new file mode 100644 index 00000000..5f66fe40 --- /dev/null +++ b/__checks__/app/articles/security.spec.ts @@ -0,0 +1,9 @@ +import { expect, test } from '@playwright/test'; +import { appUrl } from '../../utils/app-url'; + +test.describe("Security Page", () => { + test("Visitable", async ({ page }) => { + const response = await page.goto(appUrl("/articles/security")); + expect(response?.status()).toBeLessThan(400); + }) +}); diff --git a/__checks__/app/articles/support.spec.ts b/__checks__/app/articles/support.spec.ts new file mode 100644 index 00000000..8060591b --- /dev/null +++ b/__checks__/app/articles/support.spec.ts @@ -0,0 +1,9 @@ +import { expect, test } from '@playwright/test'; +import { appUrl } from '../../utils/app-url'; + +test.describe("Support Page", () => { + test("Visitable", async ({ page }) => { + const response = await page.goto(appUrl("/articles/support")); + expect(response?.status()).toBeLessThan(400); + }) +}); diff --git a/__checks__/app/cli/cli.spec.ts b/__checks__/app/cli/cli.spec.ts new file mode 100644 index 00000000..f64e9227 --- /dev/null +++ b/__checks__/app/cli/cli.spec.ts @@ -0,0 +1,29 @@ +import { expect, test } from '@playwright/test'; +import { appUrl } from '../../utils/app-url'; + +test.describe("CLI", () => { + test.describe("Root Page", () => { + test("Visitable", async ({ page }) => { + const response = await page.goto(appUrl("/cli")); + expect(response?.status()).toBeLessThan(400); + }); + }); + + [ + { name: "Analytics", href: "/cli/analytics" }, + { name: "Authentication", href: "/cli/authentication" }, + { name: "Conversion Commands", href: "/cli/convert" }, + { name: "Deployment Commands", href: "/cli/deployments" }, + { name: "Installing the Zuplo CLI", href: "/cli/installation" }, + { name: "Local Development Commands", href: "/cli/local-development" }, + { name: "Project Commands", href: "/cli/project" }, + { name: "Test Command", href: "/cli/test" }, + { name: "Tunnel Commands", href: "/cli/tunnels" }, + { name: "Environment Variables Commands", href: "/cli/variables" }, + ].forEach(({ name, href }) => { + test(`${name} Page Visitable`, async ({ page }) => { + const response = await page.goto(appUrl(href)); + expect(response?.status()).toBeLessThan(400); + }); + }) +}); diff --git a/__checks__/app/conferences/conferences.spec.ts b/__checks__/app/conferences/conferences.spec.ts new file mode 100644 index 00000000..86ee5396 --- /dev/null +++ b/__checks__/app/conferences/conferences.spec.ts @@ -0,0 +1,13 @@ +import { expect, test } from '@playwright/test'; +import { appUrl } from '../../utils/app-url'; + +test.describe("Conferences", () => { + [ + { name: "Conference Prize Terms", href: "/conferences/conference-prize-terms" }, + ].forEach(({ name, href }) => { + test(`${name} Page Visitable`, async ({ page }) => { + const response = await page.goto(appUrl(href)); + expect(response?.status()).toBeLessThan(400); + }); + }) +}); diff --git a/__checks__/app/handlers/handlers.spec.ts b/__checks__/app/handlers/handlers.spec.ts new file mode 100644 index 00000000..3ee1bbcd --- /dev/null +++ b/__checks__/app/handlers/handlers.spec.ts @@ -0,0 +1,44 @@ +import { expect, test } from '@playwright/test'; +import { appUrl } from '../../utils/app-url'; + +test.describe("Handlers", () => { + test.describe("Root Page", () => { + test("Visitable", async ({ page }) => { + const response = await page.goto(appUrl("/handlers")); + expect(response?.status()).toBeLessThan(400); + }); + + test("Content loaded", async ({ page }) => { + await page.goto(appUrl("/handlers")); + + const handlers = await page.getByTestId("handlers-grid").getByTestId("handler-card").all(); + expect(handlers.length).toBeGreaterThan(0); + + const firstHandler = handlers[0]; + const firstHandlerName = await firstHandler.getByRole('heading').textContent(); + const firstHandlerHref = await firstHandler.getAttribute('href'); + expect(firstHandlerName).toBeTruthy(); + expect(firstHandlerHref).toBeTruthy(); + await firstHandler.click(); + + const response = await page.goto(appUrl(firstHandlerHref!)); + expect(response?.status()).toBeLessThan(400); + }); + }); + + [ + { name: "AWS Lambda Handler", href: "/handlers/aws-lambda" }, + { name: "Custom Request Handlers", href: "/handlers/custom-handler" }, + { name: "OpenAPI Spec Handler", href: "/handlers/openapi" }, + { name: "Redirect Handler", href: "/handlers/redirect" }, + { name: "Internal Route Handlers", href: "/handlers/system-handlers" }, + { name: "URL Forward Handler", href: "/handlers/url-forward" }, + { name: "URL Rewrite Handler", href: "/handlers/url-rewrite" }, + { name: "WebSocket Handler", href: "/handlers/websocket-handler" } + ].forEach(({ name, href }) => { + test(`${name} Page Visitable`, async ({ page }) => { + const response = await page.goto(appUrl(href)); + expect(response?.status()).toBeLessThan(400); + }); + }); +}); diff --git a/__checks__/app/intro/intro.spec.ts b/__checks__/app/intro/intro.spec.ts new file mode 100644 index 00000000..b5651076 --- /dev/null +++ b/__checks__/app/intro/intro.spec.ts @@ -0,0 +1,9 @@ +import { expect, test } from '@playwright/test'; +import { appUrl } from '../../utils/app-url'; + +test.describe("Intro Page", () => { + test("Visitable", async ({ page }) => { + const response = await page.goto(appUrl("/intro")); + expect(response?.status()).toBeLessThan(400); + }) +}); diff --git a/__checks__/app/policies/async-and-archival.spec.ts b/__checks__/app/policies/async-and-archival.spec.ts new file mode 100644 index 00000000..0b9ae9a7 --- /dev/null +++ b/__checks__/app/policies/async-and-archival.spec.ts @@ -0,0 +1,18 @@ +import { expect, test } from '@playwright/test'; +import { appUrl } from '../../utils/app-url'; + +test.describe("Policies", () => { + test.describe("Async & Archival", () => { + [ + { name: "Archive Request to Azure Storage", href: "/policies/archive-request-azure-storage-inbound" }, + { name: "Archive Request to AWS S3", href: "/policies/archive-request-aws-s3-inbound" }, + { name: "Archive Response to Azure Storage", href: "/policies/archive-response-azure-storage-outbound" }, + { name: "Archive Response to AWS S3", href: "/policies/archive-response-aws-s3-outbound" } + ].forEach(({ name, href }) => { + test(`${name} Page Visitable`, async ({ page }) => { + const response = await page.goto(appUrl(href)); + expect(response?.status()).toBeLessThan(400); + }); + }); + }); +}); diff --git a/__checks__/app/policies/authentication.spec.ts b/__checks__/app/policies/authentication.spec.ts new file mode 100644 index 00000000..4189d556 --- /dev/null +++ b/__checks__/app/policies/authentication.spec.ts @@ -0,0 +1,18 @@ +import { expect, test } from '@playwright/test'; +import { appUrl } from '../../utils/app-url'; + +test.describe("Policies", () => { + test.describe("Authentication", () => { + [ + { name: "API Key Authentication", href: "/policies/api-key-inbound" }, + { name: "Auth0 JWT Auth", href: "/policies/auth0-jwt-auth-inbound" }, + { name: "Clerk JWT Auth", href: "/policies/clerk-jwt-auth-inbound" }, + { name: "AWS Cognito JWT Auth", href: "/policies/cognito-jwt-auth-inbound" } + ].forEach(({ name, href }) => { + test(`${name} Page Visitable`, async ({ page }) => { + const response = await page.goto(appUrl(href)); + expect(response?.status()).toBeLessThan(400); + }); + }); + }); +}); diff --git a/__checks__/app/policies/authorization.spec.ts b/__checks__/app/policies/authorization.spec.ts new file mode 100644 index 00000000..11500098 --- /dev/null +++ b/__checks__/app/policies/authorization.spec.ts @@ -0,0 +1,18 @@ +import { expect, test } from '@playwright/test'; +import { appUrl } from '../../utils/app-url'; + +test.describe("Policies", () => { + test.describe("Authorization", () => { + [ + { name: "Access Control List", href: "/policies/acl-policy-inbound" }, + { name: "RBAC Authorization", href: "/policies/rbac-policy-inbound" }, + { name: "Geo-location filtering", href: "/policies/geo-filter-inbound" }, + { name: "IP Restriction", href: "/policies/ip-restriction-inbound" } + ].forEach(({ name, href }) => { + test(`${name} Page Visitable`, async ({ page }) => { + const response = await page.goto(appUrl(href)); + expect(response?.status()).toBeLessThan(400); + }); + }); + }); +}); diff --git a/__checks__/app/policies/metrics-billings-quotas.spec.ts b/__checks__/app/policies/metrics-billings-quotas.spec.ts new file mode 100644 index 00000000..22d50846 --- /dev/null +++ b/__checks__/app/policies/metrics-billings-quotas.spec.ts @@ -0,0 +1,18 @@ +import { expect, test } from '@playwright/test'; +import { appUrl } from '../../utils/app-url'; + +test.describe("Policies", () => { + test.describe("Metrics, Billing & Quotas", () => { + [ + { name: "Quota", href: "/policies/quota-inbound" }, + { name: "Moesif Analytics & Billing", href: "/policies/moesif-inbound" }, + { name: "Amberflo Metering / Billing", href: "/policies/amberflo-metering-inbound" }, + { name: "Readme Metrics", href: "/policies/readme-metrics-inbound" } + ].forEach(({ name, href }) => { + test(`${name} Page Visitable`, async ({ page }) => { + const response = await page.goto(appUrl(href)); + expect(response?.status()).toBeLessThan(400); + }); + }); + }); +}); diff --git a/__checks__/app/policies/other.spec.ts b/__checks__/app/policies/other.spec.ts new file mode 100644 index 00000000..52ef51a6 --- /dev/null +++ b/__checks__/app/policies/other.spec.ts @@ -0,0 +1,19 @@ +import { expect, test } from '@playwright/test'; +import { appUrl } from '../../utils/app-url'; + +test.describe("Policies", () => { + test.describe("Other", () => { + [ + { name: "Composite Inbound", href: "/policies/composite-inbound" }, + { name: "Brown Out", href: "/policies/brownout-inbound" }, + { name: "Caching", href: "/policies/caching-inbound" }, + { name: "Custom Code Inbound", href: "/policies/custom-code-inbound" }, + { name: "Custom Code Outbound", href: "/policies/custom-code-outbound" } + ].forEach(({ name, href }) => { + test(`${name} Page Visitable`, async ({ page }) => { + const response = await page.goto(appUrl(href)); + expect(response?.status()).toBeLessThan(400); + }); + }); + }); +}); diff --git a/__checks__/app/policies/page.spec.ts b/__checks__/app/policies/page.spec.ts new file mode 100644 index 00000000..e6e1d038 --- /dev/null +++ b/__checks__/app/policies/page.spec.ts @@ -0,0 +1,26 @@ +import { expect, test } from '@playwright/test'; +import { appUrl } from '../../utils/app-url'; + +test.describe("Policies Page", () => { + test("Visitable", async ({ page }) => { + const response = await page.goto(appUrl("/policies")); + expect(response?.status()).toBeLessThan(400); + }); + + test("Content loaded", async ({ page }) => { + await page.goto(appUrl("/policies")); + + const policies = await page.getByTestId("policies-grid").getByTestId("policy-card").all(); + expect(policies.length).toBeGreaterThan(0); + + const firstPolicy = policies[0]; + const firstPolicyName = await firstPolicy.getByRole('heading').textContent(); + const firstPolicyHref = await firstPolicy.getAttribute('href'); + expect(firstPolicyName).toBeTruthy(); + expect(firstPolicyHref).toBeTruthy(); + await firstPolicy.click(); + + const response = await page.goto(appUrl(firstPolicyHref!)); + expect(response?.status()).toBeLessThan(400); + }); +}); diff --git a/__checks__/app/policies/request-modification.spec.ts b/__checks__/app/policies/request-modification.spec.ts new file mode 100644 index 00000000..c4b17d4f --- /dev/null +++ b/__checks__/app/policies/request-modification.spec.ts @@ -0,0 +1,18 @@ +import { expect, test } from '@playwright/test'; +import { appUrl } from '../../utils/app-url'; + +test.describe("Policies", () => { + test.describe("Request Modification", () => { + [ + { name: "Transform Request Body", href: "/policies/transform-body-inbound" }, + { name: "Remove Request Headers", href: "/policies/remove-headers-inbound" }, + { name: "Clear Request Headers", href: "/policies/clear-headers-inbound" }, + { name: "Change Method", href: "/policies/change-method-inbound" } + ].forEach(({ name, href }) => { + test(`${name} Page Visitable`, async ({ page }) => { + const response = await page.goto(appUrl(href)); + expect(response?.status()).toBeLessThan(400); + }); + }); + }); +}); diff --git a/__checks__/app/policies/response-modification.spec.ts b/__checks__/app/policies/response-modification.spec.ts new file mode 100644 index 00000000..dc5d1408 --- /dev/null +++ b/__checks__/app/policies/response-modification.spec.ts @@ -0,0 +1,19 @@ +import { expect, test } from '@playwright/test'; +import { appUrl } from '../../utils/app-url'; + +test.describe("Policies", () => { + test.describe("Response Modification", () => { + [ + { name: "Transform Response Body", href: "/policies/transform-body-outbound" }, + { name: "Remove Response Headers", href: "/policies/remove-headers-outbound" }, + { name: "Clear Response Headers", href: "/policies/clear-headers-outbound" }, + { name: "Set Headers", href: "/policies/set-headers-outbound" }, + { name: "Set Status Code", href: "/policies/set-status-outbound" } + ].forEach(({ name, href }) => { + test(`${name} Page Visitable`, async ({ page }) => { + const response = await page.goto(appUrl(href)); + expect(response?.status()).toBeLessThan(400); + }); + }); + }); +}); diff --git a/__checks__/app/policies/security-and-validation.spec.ts b/__checks__/app/policies/security-and-validation.spec.ts new file mode 100644 index 00000000..1061c2f6 --- /dev/null +++ b/__checks__/app/policies/security-and-validation.spec.ts @@ -0,0 +1,20 @@ +import { expect, test } from '@playwright/test'; +import { appUrl } from '../../utils/app-url'; + +test.describe("Policies", () => { + test.describe("Security & Validation", () => { + [ + { name: "Rate Limiting", href: "/policies/rate-limit-inbound" }, + { name: "Audit Logs", href: "/policies/audit-log-inbound" }, + { name: "Request Validation", href: "/policies/request-validation-inbound" }, + { name: "Bot Detection", href: "/policies/bot-detection-inbound" }, + { name: "Require Origin", href: "/policies/require-origin-inbound" }, + { name: "Request Size Limit", href: "/policies/request-size-limit-inbound" } + ].forEach(({ name, href }) => { + test(`${name} Page Visitable`, async ({ page }) => { + const response = await page.goto(appUrl(href)); + expect(response?.status()).toBeLessThan(400); + }); + }); + }); +}); diff --git a/__checks__/app/policies/testing.spec.ts b/__checks__/app/policies/testing.spec.ts new file mode 100644 index 00000000..befe7bac --- /dev/null +++ b/__checks__/app/policies/testing.spec.ts @@ -0,0 +1,17 @@ +import { expect, test } from '@playwright/test'; +import { appUrl } from '../../utils/app-url'; + +test.describe("Policies", () => { + test.describe("Testing", () => { + [ + { name: "A/B Test Inbound", href: "/policies/ab-test-inbound" }, + { name: "Mock API Response", href: "/policies/mock-api-inbound" }, + { name: "Sleep / Delay", href: "/policies/sleep-inbound" }, + ].forEach(({ name, href }) => { + test(`${name} Page Visitable`, async ({ page }) => { + const response = await page.goto(appUrl(href)); + expect(response?.status()).toBeLessThan(400); + }); + }); + }); +}); diff --git a/__checks__/app/policies/upstream-authentication.spec.ts b/__checks__/app/policies/upstream-authentication.spec.ts new file mode 100644 index 00000000..f7599069 --- /dev/null +++ b/__checks__/app/policies/upstream-authentication.spec.ts @@ -0,0 +1,19 @@ +import { expect, test } from '@playwright/test'; +import { appUrl } from '../../utils/app-url'; + +test.describe("Policies", () => { + test.describe("Upstream Authentication", () => { + [ + { name: "Upstream Azure AD Service Auth", href: "/policies/upstream-azure-ad-service-auth-inbound" }, + { name: "Upstream GCP Service Auth", href: "/policies/upstream-gcp-service-auth-inbound" }, + { name: "Upstream GCP Self-Signed JWT", href: "/policies/upstream-gcp-jwt-inbound" }, + { name: "Upstream Firebase Admin Auth", href: "/policies/upstream-firebase-admin-auth-inbound" }, + { name: "Upstream Firebase User Auth", href: "/policies/upstream-firebase-user-auth-inbound" } + ].forEach(({ name, href }) => { + test(`${name} Page Visitable`, async ({ page }) => { + const response = await page.goto(appUrl(href)); + expect(response?.status()).toBeLessThan(400); + }); + }); + }); +}); diff --git a/__checks__/utils/app-url.ts b/__checks__/utils/app-url.ts new file mode 100644 index 00000000..abe6180a --- /dev/null +++ b/__checks__/utils/app-url.ts @@ -0,0 +1,5 @@ +export const appUrl = (_route: string = "/") => { + const route = `/docs${_route.replace(/^\/docs/, "")}`; + + return `${process.env.ENVIRONMENT_URL || "https://zuplo.com"}${route}`; +} diff --git a/checkly.config.ts b/checkly.config.ts new file mode 100644 index 00000000..cb354664 --- /dev/null +++ b/checkly.config.ts @@ -0,0 +1,19 @@ +import { defineConfig } from "checkly"; +import { Frequency } from "checkly/constructs"; + +const config = defineConfig({ + projectName: "@zuplo/docs", + logicalId: "zuplo/docs", + repoUrl: "https://github.com/zuplo/docs", + checks: { + frequency: Frequency.EVERY_24H, + locations: ["us-east-1"], + runtimeId: "2023.02", + checkMatch: "**/__checks__/**/*.check.ts", + browserChecks: { + testMatch: "**/__checks__/**/*.spec.ts", + }, + }, +}); + +export default config; diff --git a/docs/articles/add-project-collaborators.md b/docs/articles/add-project-collaborators.mdx similarity index 100% rename from docs/articles/add-project-collaborators.md rename to docs/articles/add-project-collaborators.mdx diff --git a/docs/articles/advanced-path-matching.md b/docs/articles/advanced-path-matching.mdx similarity index 100% rename from docs/articles/advanced-path-matching.md rename to docs/articles/advanced-path-matching.mdx diff --git a/docs/articles/api-key-administration.md b/docs/articles/api-key-administration.mdx similarity index 100% rename from docs/articles/api-key-administration.md rename to docs/articles/api-key-administration.mdx diff --git a/docs/articles/api-key-api.md b/docs/articles/api-key-api.mdx similarity index 100% rename from docs/articles/api-key-api.md rename to docs/articles/api-key-api.mdx diff --git a/docs/articles/api-key-authentication.md b/docs/articles/api-key-authentication.mdx similarity index 100% rename from docs/articles/api-key-authentication.md rename to docs/articles/api-key-authentication.mdx diff --git a/docs/articles/api-key-buckets.md b/docs/articles/api-key-buckets.mdx similarity index 100% rename from docs/articles/api-key-buckets.md rename to docs/articles/api-key-buckets.mdx diff --git a/docs/articles/api-key-end-users.md b/docs/articles/api-key-end-users.mdx similarity index 100% rename from docs/articles/api-key-end-users.md rename to docs/articles/api-key-end-users.mdx diff --git a/docs/articles/api-key-leak-detection.md b/docs/articles/api-key-leak-detection.mdx similarity index 100% rename from docs/articles/api-key-leak-detection.md rename to docs/articles/api-key-leak-detection.mdx diff --git a/docs/articles/api-key-management.md b/docs/articles/api-key-management.mdx similarity index 100% rename from docs/articles/api-key-management.md rename to docs/articles/api-key-management.mdx diff --git a/docs/articles/api-key-react-component.md b/docs/articles/api-key-react-component.mdx similarity index 100% rename from docs/articles/api-key-react-component.md rename to docs/articles/api-key-react-component.mdx diff --git a/docs/articles/api-key-service-limits.md b/docs/articles/api-key-service-limits.mdx similarity index 100% rename from docs/articles/api-key-service-limits.md rename to docs/articles/api-key-service-limits.mdx diff --git a/docs/articles/archiving-requests-to-storage.md b/docs/articles/archiving-requests-to-storage.mdx similarity index 100% rename from docs/articles/archiving-requests-to-storage.md rename to docs/articles/archiving-requests-to-storage.mdx diff --git a/docs/articles/audit-log.md b/docs/articles/audit-log.mdx similarity index 100% rename from docs/articles/audit-log.md rename to docs/articles/audit-log.mdx diff --git a/docs/articles/cache.md b/docs/articles/cache.mdx similarity index 99% rename from docs/articles/cache.md rename to docs/articles/cache.mdx index 157bdb91..b25ddfa3 100644 --- a/docs/articles/cache.md +++ b/docs/articles/cache.mdx @@ -69,7 +69,7 @@ interface CacheQueryOptions { } ``` -:::warning +:::caution At this time, the `options` parameter will be ignored entirely when running on in a developer environment (i.e. working copy). In non-developer environments, diff --git a/docs/articles/check-ip-address.md b/docs/articles/check-ip-address.mdx similarity index 100% rename from docs/articles/check-ip-address.md rename to docs/articles/check-ip-address.mdx diff --git a/docs/articles/cloudflare-settings.md b/docs/articles/cloudflare-settings.mdx similarity index 100% rename from docs/articles/cloudflare-settings.md rename to docs/articles/cloudflare-settings.mdx diff --git a/docs/articles/configure-ide-for-local-development.md b/docs/articles/configure-ide-for-local-development.mdx similarity index 100% rename from docs/articles/configure-ide-for-local-development.md rename to docs/articles/configure-ide-for-local-development.mdx diff --git a/docs/articles/context-data.md b/docs/articles/context-data.mdx similarity index 100% rename from docs/articles/context-data.md rename to docs/articles/context-data.mdx diff --git a/docs/articles/custom-audit-log-policy.md b/docs/articles/custom-audit-log-policy.mdx similarity index 100% rename from docs/articles/custom-audit-log-policy.md rename to docs/articles/custom-audit-log-policy.mdx diff --git a/docs/articles/custom-ci-cd.md b/docs/articles/custom-ci-cd.mdx similarity index 100% rename from docs/articles/custom-ci-cd.md rename to docs/articles/custom-ci-cd.mdx diff --git a/docs/articles/custom-cors-policy.md b/docs/articles/custom-cors-policy.mdx similarity index 99% rename from docs/articles/custom-cors-policy.md rename to docs/articles/custom-cors-policy.mdx index f7b17f50..87f8a152 100644 --- a/docs/articles/custom-cors-policy.md +++ b/docs/articles/custom-cors-policy.mdx @@ -22,7 +22,7 @@ policies: A CORS policy consists of a name and set of CORS headers to be returned for cross-origin requests (both the simple type and pre-flight request). -:::warning +:::caution Make sure to not have a trailing `/` on your allowedOrigins. e.g. `https://example.com` is valid, `https://example.com/` will not work. diff --git a/docs/articles/custom-domains.md b/docs/articles/custom-domains.mdx similarity index 100% rename from docs/articles/custom-domains.md rename to docs/articles/custom-domains.mdx diff --git a/docs/articles/custom-log-level.md b/docs/articles/custom-log-level.mdx similarity index 93% rename from docs/articles/custom-log-level.md rename to docs/articles/custom-log-level.mdx index b8fd1655..106750f7 100644 --- a/docs/articles/custom-log-level.md +++ b/docs/articles/custom-log-level.mdx @@ -17,7 +17,7 @@ else. You can override this by setting an [environment variable](../articles/environment-variables) called `ZUPLO_LOG_LEVEL` to one of the values above. -:::warning The log levels are case sensitive - they must be entered correctly, +:::caution The log levels are case sensitive - they must be entered correctly, in lower case for logging to work. ::: The log levels map to the different methods on `context.log`, e.g. diff --git a/docs/articles/custom-logging-example.md b/docs/articles/custom-logging-example.mdx similarity index 100% rename from docs/articles/custom-logging-example.md rename to docs/articles/custom-logging-example.mdx diff --git a/docs/articles/dev-portal-adding-pages.md b/docs/articles/dev-portal-adding-pages.mdx similarity index 100% rename from docs/articles/dev-portal-adding-pages.md rename to docs/articles/dev-portal-adding-pages.mdx diff --git a/docs/articles/dev-portal-auth.md b/docs/articles/dev-portal-auth.mdx similarity index 100% rename from docs/articles/dev-portal-auth.md rename to docs/articles/dev-portal-auth.mdx diff --git a/docs/articles/dev-portal-configuration.md b/docs/articles/dev-portal-configuration.mdx similarity index 100% rename from docs/articles/dev-portal-configuration.md rename to docs/articles/dev-portal-configuration.mdx diff --git a/docs/articles/dev-portal-configuring-sidebar.md b/docs/articles/dev-portal-configuring-sidebar.mdx similarity index 100% rename from docs/articles/dev-portal-configuring-sidebar.md rename to docs/articles/dev-portal-configuring-sidebar.mdx diff --git a/docs/articles/dev-portal-create-consumer-on-auth.md b/docs/articles/dev-portal-create-consumer-on-auth.mdx similarity index 100% rename from docs/articles/dev-portal-create-consumer-on-auth.md rename to docs/articles/dev-portal-create-consumer-on-auth.mdx diff --git a/docs/articles/dev-portal-json.md b/docs/articles/dev-portal-json.mdx similarity index 100% rename from docs/articles/dev-portal-json.md rename to docs/articles/dev-portal-json.mdx diff --git a/docs/articles/dev-portal-setup.md b/docs/articles/dev-portal-setup.mdx similarity index 100% rename from docs/articles/dev-portal-setup.md rename to docs/articles/dev-portal-setup.mdx diff --git a/docs/articles/dev-portal-supabase-auth.md b/docs/articles/dev-portal-supabase-auth.mdx similarity index 100% rename from docs/articles/dev-portal-supabase-auth.md rename to docs/articles/dev-portal-supabase-auth.mdx diff --git a/docs/articles/dev-portal-theme.md b/docs/articles/dev-portal-theme.mdx similarity index 100% rename from docs/articles/dev-portal-theme.md rename to docs/articles/dev-portal-theme.mdx diff --git a/docs/articles/developer-api.md b/docs/articles/developer-api.mdx similarity index 100% rename from docs/articles/developer-api.md rename to docs/articles/developer-api.mdx diff --git a/docs/articles/developer-portal.md b/docs/articles/developer-portal.mdx similarity index 100% rename from docs/articles/developer-portal.md rename to docs/articles/developer-portal.mdx diff --git a/docs/articles/environment-variables.md b/docs/articles/environment-variables.mdx similarity index 100% rename from docs/articles/environment-variables.md rename to docs/articles/environment-variables.mdx diff --git a/docs/articles/environments.md b/docs/articles/environments.mdx similarity index 98% rename from docs/articles/environments.md rename to docs/articles/environments.mdx index 988aba63..a028c52d 100644 --- a/docs/articles/environments.md +++ b/docs/articles/environments.mdx @@ -23,7 +23,7 @@ There are two distinct types of environment: shared with anybody else. If you share a project with another person, they will have their own working-copy environment. -:::warning Never use a working-copy environment in a production setting. They +:::caution Never use a working-copy environment in a production setting. They offer no SLA, and will often sleep after inactivity leading to slower cold-start times. There can be occasional downtime of a few seconds for upgrades. ::: diff --git a/docs/articles/github-source-control.md b/docs/articles/github-source-control.mdx similarity index 100% rename from docs/articles/github-source-control.md rename to docs/articles/github-source-control.mdx diff --git a/docs/articles/gke-with-upstream-auth-policy.md b/docs/articles/gke-with-upstream-auth-policy.mdx similarity index 100% rename from docs/articles/gke-with-upstream-auth-policy.md rename to docs/articles/gke-with-upstream-auth-policy.mdx diff --git a/docs/articles/going-live.md b/docs/articles/going-live.mdx similarity index 100% rename from docs/articles/going-live.md rename to docs/articles/going-live.mdx diff --git a/docs/articles/graphql-security.md b/docs/articles/graphql-security.mdx similarity index 100% rename from docs/articles/graphql-security.md rename to docs/articles/graphql-security.mdx diff --git a/docs/articles/handling-form-data.md b/docs/articles/handling-form-data.mdx similarity index 100% rename from docs/articles/handling-form-data.md rename to docs/articles/handling-form-data.mdx diff --git a/docs/articles/how-to-upgrade.md b/docs/articles/how-to-upgrade.mdx similarity index 100% rename from docs/articles/how-to-upgrade.md rename to docs/articles/how-to-upgrade.mdx diff --git a/docs/articles/http-problems.md b/docs/articles/http-problems.mdx similarity index 100% rename from docs/articles/http-problems.md rename to docs/articles/http-problems.mdx diff --git a/docs/articles/key-value-store.md b/docs/articles/key-value-store.mdx similarity index 100% rename from docs/articles/key-value-store.md rename to docs/articles/key-value-store.mdx diff --git a/docs/articles/lazy-load-configuration-into-cache.md b/docs/articles/lazy-load-configuration-into-cache.mdx similarity index 99% rename from docs/articles/lazy-load-configuration-into-cache.md rename to docs/articles/lazy-load-configuration-into-cache.mdx index f7213428..1b3d3a71 100644 --- a/docs/articles/lazy-load-configuration-into-cache.md +++ b/docs/articles/lazy-load-configuration-into-cache.mdx @@ -18,7 +18,7 @@ single location worldwide). The MemoryZoneReadthroughCache offers the best of both worlds - it uses memory and zone cache in combination to afford the lowest possible latency. -:::warning +:::caution Do take care not to load so much data into memory that you OOM (out-of-memory) your process. Processes in Zuplo typically have ~120MB of memory to perform all diff --git a/docs/articles/local-development.md b/docs/articles/local-development.mdx similarity index 99% rename from docs/articles/local-development.md rename to docs/articles/local-development.mdx index 395dd380..541e75e9 100644 --- a/docs/articles/local-development.md +++ b/docs/articles/local-development.mdx @@ -122,7 +122,7 @@ locally. ## Configuring API Keys -:::warning +:::caution As the .env.zuplo file could contain sensitive information, it should not be committed to your version system. Consider adding .env to your .gitignore file. @@ -146,7 +146,7 @@ You will be using the API keys from the working-copy of your project. ## Configuring Environment variables -:::warning +:::caution As the .env file could contain sensitive information, it should not be committed to your version system. Consider adding .env to your .gitignore file. diff --git a/docs/articles/log-export.md b/docs/articles/log-export.mdx similarity index 100% rename from docs/articles/log-export.md rename to docs/articles/log-export.mdx diff --git a/docs/articles/log-plugin-vmware-log-insight.md b/docs/articles/log-plugin-vmware-log-insight.mdx similarity index 100% rename from docs/articles/log-plugin-vmware-log-insight.md rename to docs/articles/log-plugin-vmware-log-insight.mdx diff --git a/docs/articles/log-plugins.md b/docs/articles/log-plugins.mdx similarity index 100% rename from docs/articles/log-plugins.md rename to docs/articles/log-plugins.mdx diff --git a/docs/articles/metrics-plugins.md b/docs/articles/metrics-plugins.mdx similarity index 99% rename from docs/articles/metrics-plugins.md rename to docs/articles/metrics-plugins.mdx index 238ce643..d859ed70 100644 --- a/docs/articles/metrics-plugins.md +++ b/docs/articles/metrics-plugins.mdx @@ -123,7 +123,7 @@ export default async function (request: ZuploRequest, context: ZuploContext) { By default, we send all metrics to Dynatrace. However, you have the option below to configure which metrics you want to send. -:::warning Strict format +:::caution Strict format Dynatrace has a strict format for its payload, which has some _surprising_ requirements. diff --git a/docs/articles/multiple-auth-policies.md b/docs/articles/multiple-auth-policies.mdx similarity index 99% rename from docs/articles/multiple-auth-policies.md rename to docs/articles/multiple-auth-policies.mdx index eed88f43..22f9ed4f 100644 --- a/docs/articles/multiple-auth-policies.md +++ b/docs/articles/multiple-auth-policies.mdx @@ -18,7 +18,7 @@ everything organized). The three policies required are: 1. [Any JWT Authentication Policy](../policies/open-id-jwt-auth-inbound.md) 1. [A Custom Policy](../policies/custom-code-inbound.md) -:::warning +:::caution The order of these policies is critical. Placing them in the wrong order can cause errors or lead to security issues. diff --git a/docs/articles/node-modules.mdx b/docs/articles/node-modules.mdx new file mode 100644 index 00000000..b70a9f86 --- /dev/null +++ b/docs/articles/node-modules.mdx @@ -0,0 +1,15 @@ +--- +title: Node Modules +--- + +import BundlesTable from "@site/src/components/mdx/BundlesTable"; + +Zuplo generally supports node modules, but to ensure the security and +performance of each API Gateway we must approve each module. This process only +takes a few hours so if you need something new please reach out to use on +twitter [@zuplo](https://twitter.com/zuplo) or through email +[whatzup@zuplo.com](mailto:whatzup@zuplo.com) + +Below are the currently installed modules. + + diff --git a/docs/articles/not-found-handler.md b/docs/articles/not-found-handler.mdx similarity index 99% rename from docs/articles/not-found-handler.md rename to docs/articles/not-found-handler.mdx index 10d818a0..1d462d04 100644 --- a/docs/articles/not-found-handler.md +++ b/docs/articles/not-found-handler.mdx @@ -36,7 +36,7 @@ export function runtimeInit(runtime: RuntimeExtensions) { ``` -:::warning +:::caution An error in your `zuplo.runtime.ts` can break your gateway for all requests. Be sure to carefully review any custom code in this file and add generous error diff --git a/docs/articles/oauth-authentication.md b/docs/articles/oauth-authentication.mdx similarity index 100% rename from docs/articles/oauth-authentication.md rename to docs/articles/oauth-authentication.mdx diff --git a/docs/articles/open-api.md b/docs/articles/open-api.mdx similarity index 100% rename from docs/articles/open-api.md rename to docs/articles/open-api.mdx diff --git a/docs/articles/partials/github-setup.md b/docs/articles/partials/github-setup.mdx similarity index 100% rename from docs/articles/partials/github-setup.md rename to docs/articles/partials/github-setup.mdx diff --git a/docs/articles/per-user-rate-limits-using-db.md b/docs/articles/per-user-rate-limits-using-db.mdx similarity index 100% rename from docs/articles/per-user-rate-limits-using-db.md rename to docs/articles/per-user-rate-limits-using-db.mdx diff --git a/docs/articles/policies.md b/docs/articles/policies.mdx similarity index 100% rename from docs/articles/policies.md rename to docs/articles/policies.mdx diff --git a/docs/articles/rename-or-move-project.md b/docs/articles/rename-or-move-project.mdx similarity index 100% rename from docs/articles/rename-or-move-project.md rename to docs/articles/rename-or-move-project.mdx diff --git a/docs/articles/reusing-code.md b/docs/articles/reusing-code.mdx similarity index 100% rename from docs/articles/reusing-code.md rename to docs/articles/reusing-code.mdx diff --git a/docs/articles/rick-and-morty-api-developer-portal-example.md b/docs/articles/rick-and-morty-api-developer-portal-example.mdx similarity index 100% rename from docs/articles/rick-and-morty-api-developer-portal-example.md rename to docs/articles/rick-and-morty-api-developer-portal-example.mdx diff --git a/docs/articles/route-raw.md b/docs/articles/route-raw.mdx similarity index 100% rename from docs/articles/route-raw.md rename to docs/articles/route-raw.mdx diff --git a/docs/articles/routes-json-deprecation-for-openapi.md b/docs/articles/routes-json-deprecation-for-openapi.mdx similarity index 100% rename from docs/articles/routes-json-deprecation-for-openapi.md rename to docs/articles/routes-json-deprecation-for-openapi.mdx diff --git a/docs/articles/runtime-behaviors.md b/docs/articles/runtime-behaviors.mdx similarity index 100% rename from docs/articles/runtime-behaviors.md rename to docs/articles/runtime-behaviors.mdx diff --git a/docs/articles/runtime-extensions.md b/docs/articles/runtime-extensions.mdx similarity index 99% rename from docs/articles/runtime-extensions.md rename to docs/articles/runtime-extensions.mdx index 9cda747b..326a0326 100644 --- a/docs/articles/runtime-extensions.md +++ b/docs/articles/runtime-extensions.mdx @@ -7,7 +7,7 @@ per-policy basis, there are times when behaviors need to be modified globally. To plug into the global initialization of your gateway, create a file called `zuplo.runtime.ts` in the `modules` folder with the following code. -:::warning +:::caution Any error thrown in the `runtimeInit` method will prevent the gateway from starting and yield a 500 error for all requests. Be sure to add only reliable diff --git a/docs/articles/safely-clone-a-request-or-response.md b/docs/articles/safely-clone-a-request-or-response.mdx similarity index 100% rename from docs/articles/safely-clone-a-request-or-response.md rename to docs/articles/safely-clone-a-request-or-response.mdx diff --git a/docs/articles/secure-tunnel.md b/docs/articles/secure-tunnel.mdx similarity index 100% rename from docs/articles/secure-tunnel.md rename to docs/articles/secure-tunnel.mdx diff --git a/docs/articles/securing-your-backend.md b/docs/articles/securing-your-backend.mdx similarity index 100% rename from docs/articles/securing-your-backend.md rename to docs/articles/securing-your-backend.mdx diff --git a/docs/articles/security.md b/docs/articles/security.mdx similarity index 100% rename from docs/articles/security.md rename to docs/articles/security.mdx diff --git a/docs/articles/source-control.md b/docs/articles/source-control.mdx similarity index 89% rename from docs/articles/source-control.md rename to docs/articles/source-control.mdx index 98879393..d10c6c75 100644 --- a/docs/articles/source-control.md +++ b/docs/articles/source-control.mdx @@ -2,8 +2,6 @@ title: Source Control --- -import GithubSetup from './\_github-setup.md'; - :::info Gitlab and Bitbucket Support @@ -23,8 +21,6 @@ benefits, including: - ability to deploy an [edge-deployment](../articles/environments.md) just by adding a branch or making a commit. - - ## Connecting Existing Repositories If you have an existing GitHub repository that contains a Zuplo project, you can @@ -32,8 +28,9 @@ connect to that repository when you create a new project. Select **Advanced** then select your GitHub organization and repository. + src="https://cdn.zuplo.com/assets/f09aa7ac-abc0-4f20-9e41-df42b7761748.png" + size="sm" +/> ## Limitations diff --git a/docs/articles/step-1-setup-basic-gateway.md b/docs/articles/step-1-setup-basic-gateway.mdx similarity index 100% rename from docs/articles/step-1-setup-basic-gateway.md rename to docs/articles/step-1-setup-basic-gateway.mdx diff --git a/docs/articles/step-2-add-api-key-auth.md b/docs/articles/step-2-add-api-key-auth.mdx similarity index 100% rename from docs/articles/step-2-add-api-key-auth.md rename to docs/articles/step-2-add-api-key-auth.mdx diff --git a/docs/articles/step-3-add-rate-limiting.md b/docs/articles/step-3-add-rate-limiting.mdx similarity index 100% rename from docs/articles/step-3-add-rate-limiting.md rename to docs/articles/step-3-add-rate-limiting.mdx diff --git a/docs/articles/step-4-deploying-to-the-edge.md b/docs/articles/step-4-deploying-to-the-edge.mdx similarity index 100% rename from docs/articles/step-4-deploying-to-the-edge.md rename to docs/articles/step-4-deploying-to-the-edge.mdx diff --git a/docs/articles/support.md b/docs/articles/support.mdx similarity index 99% rename from docs/articles/support.md rename to docs/articles/support.mdx index 4a1a0ce6..2ee9ba90 100644 --- a/docs/articles/support.md +++ b/docs/articles/support.mdx @@ -106,7 +106,7 @@ After entering your support code a ticket will be opened and our on call support team will reach out to you within a few minutes. We suggest you sign in to discord as well so we can chat in real time. -:::warning +:::caution Calling this number will alert our on call team at any hour. Please only use this number for urgent, business critical issues. diff --git a/docs/articles/testing-graphql.md b/docs/articles/testing-graphql.mdx similarity index 100% rename from docs/articles/testing-graphql.md rename to docs/articles/testing-graphql.mdx diff --git a/docs/articles/testing.md b/docs/articles/testing.mdx similarity index 100% rename from docs/articles/testing.md rename to docs/articles/testing.mdx diff --git a/docs/articles/tunnel-setup.md b/docs/articles/tunnel-setup.mdx similarity index 100% rename from docs/articles/tunnel-setup.md rename to docs/articles/tunnel-setup.mdx diff --git a/docs/articles/web-crypto-apis.md b/docs/articles/web-crypto-apis.mdx similarity index 100% rename from docs/articles/web-crypto-apis.md rename to docs/articles/web-crypto-apis.mdx diff --git a/docs/articles/web-standard-apis.md b/docs/articles/web-standard-apis.mdx similarity index 100% rename from docs/articles/web-standard-apis.md rename to docs/articles/web-standard-apis.mdx diff --git a/docs/articles/what-is-zuplo.md b/docs/articles/what-is-zuplo.mdx similarity index 100% rename from docs/articles/what-is-zuplo.md rename to docs/articles/what-is-zuplo.mdx diff --git a/docs/articles/who-uses-and-why.md b/docs/articles/who-uses-and-why.mdx similarity index 100% rename from docs/articles/who-uses-and-why.md rename to docs/articles/who-uses-and-why.mdx diff --git a/docs/articles/zone-cache.md b/docs/articles/zone-cache.mdx similarity index 100% rename from docs/articles/zone-cache.md rename to docs/articles/zone-cache.mdx diff --git a/docs/articles/zp-body-removed.md b/docs/articles/zp-body-removed.mdx similarity index 100% rename from docs/articles/zp-body-removed.md rename to docs/articles/zp-body-removed.mdx diff --git a/docs/articles/zup-its.md b/docs/articles/zup-its.mdx similarity index 100% rename from docs/articles/zup-its.md rename to docs/articles/zup-its.mdx diff --git a/docs/articles/zuplo-context.md b/docs/articles/zuplo-context.mdx similarity index 100% rename from docs/articles/zuplo-context.md rename to docs/articles/zuplo-context.mdx diff --git a/docs/articles/zuplo-in-your-stack.md b/docs/articles/zuplo-in-your-stack.mdx similarity index 100% rename from docs/articles/zuplo-in-your-stack.md rename to docs/articles/zuplo-in-your-stack.mdx diff --git a/docs/articles/zuplo-json.md b/docs/articles/zuplo-json.mdx similarity index 99% rename from docs/articles/zuplo-json.md rename to docs/articles/zuplo-json.mdx index b5a20b68..dd930f8e 100644 --- a/docs/articles/zuplo-json.md +++ b/docs/articles/zuplo-json.mdx @@ -17,7 +17,7 @@ of the file is `1`. } ``` -:::warning +:::caution The `zuplo.jsonc` file is not currently shown or editable in the Zuplo portal. Connect your project to source control and edit inside your source control diff --git a/docs/articles/zuplo-request.md b/docs/articles/zuplo-request.mdx similarity index 100% rename from docs/articles/zuplo-request.md rename to docs/articles/zuplo-request.mdx diff --git a/docs/cli/analytics.md b/docs/cli/analytics.mdx similarity index 100% rename from docs/cli/analytics.md rename to docs/cli/analytics.mdx diff --git a/docs/cli/authentication.md b/docs/cli/authentication.mdx similarity index 100% rename from docs/cli/authentication.md rename to docs/cli/authentication.mdx diff --git a/docs/cli/convert.md b/docs/cli/convert.mdx similarity index 100% rename from docs/cli/convert.md rename to docs/cli/convert.mdx diff --git a/docs/cli/deployments.md b/docs/cli/deployments.mdx similarity index 100% rename from docs/cli/deployments.md rename to docs/cli/deployments.mdx diff --git a/docs/cli/index.md b/docs/cli/index.md deleted file mode 100644 index 28606361..00000000 --- a/docs/cli/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Zuplo CLI ---- - -The Zuplo CLI, `zup`, provides convenient tooling for common tasks that you -might want to automate. You can use it to deploy zups through CI/CD, create and -update environment variables, manage your tunnels, and more! It is powered by -the [Zuplo Developer API](https://dev.zuplo.com/docs), which you can also call -directly, if you want to create your own tooling. diff --git a/docs/cli/installation.md b/docs/cli/installation.mdx similarity index 100% rename from docs/cli/installation.md rename to docs/cli/installation.mdx diff --git a/docs/cli/local-development.md b/docs/cli/local-development.mdx similarity index 100% rename from docs/cli/local-development.md rename to docs/cli/local-development.mdx diff --git a/docs/cli/project.md b/docs/cli/project.mdx similarity index 100% rename from docs/cli/project.md rename to docs/cli/project.mdx diff --git a/docs/cli/test.md b/docs/cli/test.mdx similarity index 100% rename from docs/cli/test.md rename to docs/cli/test.mdx diff --git a/docs/cli/tunnels.md b/docs/cli/tunnels.mdx similarity index 100% rename from docs/cli/tunnels.md rename to docs/cli/tunnels.mdx diff --git a/docs/cli/variables.md b/docs/cli/variables.mdx similarity index 100% rename from docs/cli/variables.md rename to docs/cli/variables.mdx diff --git a/docs/conferences/conference-prize-terms.md b/docs/conferences/conference-prize-terms.mdx similarity index 100% rename from docs/conferences/conference-prize-terms.md rename to docs/conferences/conference-prize-terms.mdx diff --git a/docs/errors/bad-request.md b/docs/errors/bad-request.mdx similarity index 100% rename from docs/errors/bad-request.md rename to docs/errors/bad-request.mdx diff --git a/docs/errors/build-error.md b/docs/errors/build-error.mdx similarity index 100% rename from docs/errors/build-error.md rename to docs/errors/build-error.mdx diff --git a/docs/errors/fatal-project-error.md b/docs/errors/fatal-project-error.mdx similarity index 100% rename from docs/errors/fatal-project-error.md rename to docs/errors/fatal-project-error.mdx diff --git a/docs/errors/get-head-body-error.md b/docs/errors/get-head-body-error.mdx similarity index 100% rename from docs/errors/get-head-body-error.md rename to docs/errors/get-head-body-error.mdx diff --git a/docs/errors/invalid-settings-dev-portal-auth-audience.md b/docs/errors/invalid-settings-dev-portal-auth-audience.mdx similarity index 100% rename from docs/errors/invalid-settings-dev-portal-auth-audience.md rename to docs/errors/invalid-settings-dev-portal-auth-audience.mdx diff --git a/docs/errors/invalid-settings-dev-portal-auth.md b/docs/errors/invalid-settings-dev-portal-auth.mdx similarity index 100% rename from docs/errors/invalid-settings-dev-portal-auth.md rename to docs/errors/invalid-settings-dev-portal-auth.mdx diff --git a/docs/errors/main-mod-error.md b/docs/errors/main-mod-error.mdx similarity index 100% rename from docs/errors/main-mod-error.md rename to docs/errors/main-mod-error.mdx diff --git a/docs/errors/no-project-set.md b/docs/errors/no-project-set.mdx similarity index 100% rename from docs/errors/no-project-set.md rename to docs/errors/no-project-set.mdx diff --git a/docs/errors/not-found.md b/docs/errors/not-found.mdx similarity index 100% rename from docs/errors/not-found.md rename to docs/errors/not-found.mdx diff --git a/docs/errors/schema-validation-failed.md b/docs/errors/schema-validation-failed.mdx similarity index 100% rename from docs/errors/schema-validation-failed.md rename to docs/errors/schema-validation-failed.mdx diff --git a/docs/errors/settings-to-dev-portal-migration.md b/docs/errors/settings-to-dev-portal-migration.mdx similarity index 100% rename from docs/errors/settings-to-dev-portal-migration.md rename to docs/errors/settings-to-dev-portal-migration.mdx diff --git a/docs/errors/system-configuration-error.md b/docs/errors/system-configuration-error.mdx similarity index 100% rename from docs/errors/system-configuration-error.md rename to docs/errors/system-configuration-error.mdx diff --git a/docs/errors/unauthorized.md b/docs/errors/unauthorized.mdx similarity index 100% rename from docs/errors/unauthorized.md rename to docs/errors/unauthorized.mdx diff --git a/docs/errors/unknown-error.md b/docs/errors/unknown-error.mdx similarity index 100% rename from docs/errors/unknown-error.md rename to docs/errors/unknown-error.mdx diff --git a/docs/handlers/aws-lambda.md b/docs/handlers/aws-lambda.mdx similarity index 99% rename from docs/handlers/aws-lambda.md rename to docs/handlers/aws-lambda.mdx index bf568ac2..58424576 100644 --- a/docs/handlers/aws-lambda.md +++ b/docs/handlers/aws-lambda.mdx @@ -33,7 +33,7 @@ on any route. Configure the properties for your AWS Lambda function. -:::warning +:::caution Don't add the AWS Secure Access Key directly in the `routes.oas.json` file. Instead use environment variables like `$env(AWS_SECURE_ACCESS_KEY)` diff --git a/docs/handlers/custom-handler.md b/docs/handlers/custom-handler.mdx similarity index 100% rename from docs/handlers/custom-handler.md rename to docs/handlers/custom-handler.mdx diff --git a/docs/handlers/index.mdx b/docs/handlers/index.mdx deleted file mode 100644 index 1ce70b58..00000000 --- a/docs/handlers/index.mdx +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Handlers ---- - -import ItemCatalog from "@site/src/components/ItemCatalog"; -import handlers from "@site/src/data/handlers"; - -Handlers are the core of the Zuplo API gateway. Handlers are responsible for streaming a response from your downstream API or a place where you can write custom code for any scenario. - -Handlers are in the middle of the request lifecycle of Zuplo between inbound and outbound [policies](/docs/policies). - -Zuplo comes with several built-in handlers as well as the ability to write your own with a custom module. - - diff --git a/docs/handlers/openapi.md b/docs/handlers/openapi.mdx similarity index 100% rename from docs/handlers/openapi.md rename to docs/handlers/openapi.mdx diff --git a/docs/handlers/redirect.md b/docs/handlers/redirect.mdx similarity index 100% rename from docs/handlers/redirect.md rename to docs/handlers/redirect.mdx diff --git a/docs/handlers/system-handlers.md b/docs/handlers/system-handlers.mdx similarity index 100% rename from docs/handlers/system-handlers.md rename to docs/handlers/system-handlers.mdx diff --git a/docs/handlers/url-forward.md b/docs/handlers/url-forward.mdx similarity index 100% rename from docs/handlers/url-forward.md rename to docs/handlers/url-forward.mdx diff --git a/docs/handlers/url-rewrite.md b/docs/handlers/url-rewrite.mdx similarity index 100% rename from docs/handlers/url-rewrite.md rename to docs/handlers/url-rewrite.mdx diff --git a/docs/handlers/websocket-handler.md b/docs/handlers/websocket-handler.mdx similarity index 100% rename from docs/handlers/websocket-handler.md rename to docs/handlers/websocket-handler.mdx diff --git a/docs/intro.mdx b/docs/intro.mdx deleted file mode 100644 index e942b970..00000000 --- a/docs/intro.mdx +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Zuplo Docs ---- - -import Link from "@docusaurus/Link"; - -import { - CustomTOCList, - CustomTOCListSection, - CustomTOCListHead, - CustomTOCListContent, -} from "@site/src/components/CustomTOCList"; - -Learn how to use Zuplo to add API-key management, developer documentation, and rate-limiting, for any stack. - - - - OVERVIEW - - What is Zuplo? - Who uses Zuplo, and why? - Zuplo in your stack - - - - Getting Started - - - Step 1 - Setup Basic Gateway - - - Step 2 - API Key Auth - - - Step 3 - Rate Limiting - - - Step 4 - Deploying to the Edge - - - - diff --git a/docs/overview/policies.md b/docs/overview/policies.mdx similarity index 100% rename from docs/overview/policies.md rename to docs/overview/policies.mdx diff --git a/docs/sample-apis.md b/docs/sample-apis.mdx similarity index 100% rename from docs/sample-apis.md rename to docs/sample-apis.mdx diff --git a/package-lock.json b/package-lock.json index 159b2f59..05acea10 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,6 @@ "@algolia/autocomplete-core": "^1.9.2", "@apidevtools/json-schema-ref-parser": "^10.1.0", "@headlessui/react": "^1.7.13", - "@heroicons/react": "^2.0.18", "@markdoc/markdoc": "^0.3.2", "@sindresorhus/slugify": "^2.1.0", "@svgr/webpack": "^8.1.0", @@ -23,7 +22,7 @@ "autoprefixer": "^10.4.12", "class-variance-authority": "^0.7.0", "classnames": "^2.3.2", - "esbuild": "^0.19.8", + "esbuild": "^0.19.10", "flexsearch": "^0.7.31", "glob": "^10.3.10", "gray-matter": "^4.0.3", @@ -32,6 +31,7 @@ "hastscript": "^8.0.0", "json-schema": "^0.4.0", "jsonc-parser": "^3.2.0", + "lucide-react": "^0.299.0", "mdast-util-to-string": "^4.0.0", "mermaid": "^10.5.0", "nanoid": "^5.0.4", @@ -42,7 +42,6 @@ "posthog-js": "^1.96.1", "react": "18.2.0", "react-dom": "18.2.0", - "react-feather": "^2.0.10", "react-highlight-words": "^0.20.0", "rehype-autolink-headings": "^7.0.0", "rehype-pretty-code": "^0.10.1", @@ -60,8 +59,10 @@ "video.js": "^8.3.0" }, "devDependencies": { - "@types/json-schema": "^7.0.15", + "@playwright/test": "^1.40.1", + "@types/json-schema": "^7.0.13", "@types/node": "^18.18.4", + "checkly": "^4.5.2", "eslint": "^8.51.0", "eslint-config-next": "^13.5.4", "eslint-config-prettier": "^9.0.0", @@ -2165,8 +2166,7 @@ "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==", - "optional": true, - "peer": true, + "devOptional": true, "dependencies": { "@jridgewell/trace-mapping": "0.3.9" }, @@ -2178,17 +2178,31 @@ "version": "0.3.9", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "optional": true, - "peer": true, + "devOptional": true, "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.10.tgz", + "integrity": "sha512-Q+mk96KJ+FZ30h9fsJl+67IjNJm3x2eX+GBWGmocAKgzp27cowCOOqSdscX80s0SpdFXZnIv/+1xD1EctFx96Q==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@esbuild/android-arm": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.8.tgz", - "integrity": "sha512-31E2lxlGM1KEfivQl8Yf5aYU/mflz9g06H6S15ITUFQueMFtFjESRMoDSkvMo8thYvLBax+VKTPlpnx+sPicOA==", + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.10.tgz", + "integrity": "sha512-7W0bK7qfkw1fc2viBfrtAEkDKHatYfHzr/jKAHNr9BvkYDXPcC6bodtm8AyLJNNuqClLNaeTLuwURt4PRT9d7w==", "cpu": [ "arm" ], @@ -2201,9 +2215,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.8.tgz", - "integrity": "sha512-B8JbS61bEunhfx8kasogFENgQfr/dIp+ggYXwTqdbMAgGDhRa3AaPpQMuQU0rNxDLECj6FhDzk1cF9WHMVwrtA==", + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.10.tgz", + "integrity": "sha512-1X4CClKhDgC3by7k8aOWZeBXQX8dHT5QAMCAQDArCLaYfkppoARvh0fit3X2Qs+MXDngKcHv6XXyQCpY0hkK1Q==", "cpu": [ "arm64" ], @@ -2216,9 +2230,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.8.tgz", - "integrity": "sha512-rdqqYfRIn4jWOp+lzQttYMa2Xar3OK9Yt2fhOhzFXqg0rVWEfSclJvZq5fZslnz6ypHvVf3CT7qyf0A5pM682A==", + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.10.tgz", + "integrity": "sha512-O/nO/g+/7NlitUxETkUv/IvADKuZXyH4BHf/g/7laqKC4i/7whLpB0gvpPc2zpF0q9Q6FXS3TS75QHac9MvVWw==", "cpu": [ "x64" ], @@ -2231,9 +2245,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.8.tgz", - "integrity": "sha512-RQw9DemMbIq35Bprbboyf8SmOr4UXsRVxJ97LgB55VKKeJOOdvsIPy0nFyF2l8U+h4PtBx/1kRf0BelOYCiQcw==", + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.10.tgz", + "integrity": "sha512-YSRRs2zOpwypck+6GL3wGXx2gNP7DXzetmo5pHXLrY/VIMsS59yKfjPizQ4lLt5vEI80M41gjm2BxrGZ5U+VMA==", "cpu": [ "arm64" ], @@ -2246,9 +2260,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.8.tgz", - "integrity": "sha512-3sur80OT9YdeZwIVgERAysAbwncom7b4bCI2XKLjMfPymTud7e/oY4y+ci1XVp5TfQp/bppn7xLw1n/oSQY3/Q==", + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.10.tgz", + "integrity": "sha512-alfGtT+IEICKtNE54hbvPg13xGBe4GkVxyGWtzr+yHO7HIiRJppPDhOKq3zstTcVf8msXb/t4eavW3jCDpMSmA==", "cpu": [ "x64" ], @@ -2261,9 +2275,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.8.tgz", - "integrity": "sha512-WAnPJSDattvS/XtPCTj1tPoTxERjcTpH6HsMr6ujTT+X6rylVe8ggxk8pVxzf5U1wh5sPODpawNicF5ta/9Tmw==", + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.10.tgz", + "integrity": "sha512-dMtk1wc7FSH8CCkE854GyGuNKCewlh+7heYP/sclpOG6Cectzk14qdUIY5CrKDbkA/OczXq9WesqnPl09mj5dg==", "cpu": [ "arm64" ], @@ -2276,9 +2290,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.8.tgz", - "integrity": "sha512-ICvZyOplIjmmhjd6mxi+zxSdpPTKFfyPPQMQTK/w+8eNK6WV01AjIztJALDtwNNfFhfZLux0tZLC+U9nSyA5Zg==", + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.10.tgz", + "integrity": "sha512-G5UPPspryHu1T3uX8WiOEUa6q6OlQh6gNl4CO4Iw5PS+Kg5bVggVFehzXBJY6X6RSOMS8iXDv2330VzaObm4Ag==", "cpu": [ "x64" ], @@ -2291,9 +2305,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.8.tgz", - "integrity": "sha512-H4vmI5PYqSvosPaTJuEppU9oz1dq2A7Mr2vyg5TF9Ga+3+MGgBdGzcyBP7qK9MrwFQZlvNyJrvz6GuCaj3OukQ==", + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.10.tgz", + "integrity": "sha512-j6gUW5aAaPgD416Hk9FHxn27On28H4eVI9rJ4az7oCGTFW48+LcgNDBN+9f8rKZz7EEowo889CPKyeaD0iw9Kg==", "cpu": [ "arm" ], @@ -2306,9 +2320,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.8.tgz", - "integrity": "sha512-z1zMZivxDLHWnyGOctT9JP70h0beY54xDDDJt4VpTX+iwA77IFsE1vCXWmprajJGa+ZYSqkSbRQ4eyLCpCmiCQ==", + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.10.tgz", + "integrity": "sha512-QxaouHWZ+2KWEj7cGJmvTIHVALfhpGxo3WLmlYfJ+dA5fJB6lDEIg+oe/0//FuyVHuS3l79/wyBxbHr0NgtxJQ==", "cpu": [ "arm64" ], @@ -2321,9 +2335,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.8.tgz", - "integrity": "sha512-1a8suQiFJmZz1khm/rDglOc8lavtzEMRo0v6WhPgxkrjcU0LkHj+TwBrALwoz/OtMExvsqbbMI0ChyelKabSvQ==", + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.10.tgz", + "integrity": "sha512-4ub1YwXxYjj9h1UIZs2hYbnTZBtenPw5NfXCRgEkGb0b6OJ2gpkMvDqRDYIDRjRdWSe/TBiZltm3Y3Q8SN1xNg==", "cpu": [ "ia32" ], @@ -2336,9 +2350,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.8.tgz", - "integrity": "sha512-fHZWS2JJxnXt1uYJsDv9+b60WCc2RlvVAy1F76qOLtXRO+H4mjt3Tr6MJ5l7Q78X8KgCFudnTuiQRBhULUyBKQ==", + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.10.tgz", + "integrity": "sha512-lo3I9k+mbEKoxtoIbM0yC/MZ1i2wM0cIeOejlVdZ3D86LAcFXFRdeuZmh91QJvUTW51bOK5W2BznGNIl4+mDaA==", "cpu": [ "loong64" ], @@ -2351,9 +2365,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.8.tgz", - "integrity": "sha512-Wy/z0EL5qZYLX66dVnEg9riiwls5IYnziwuju2oUiuxVc+/edvqXa04qNtbrs0Ukatg5HEzqT94Zs7J207dN5Q==", + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.10.tgz", + "integrity": "sha512-J4gH3zhHNbdZN0Bcr1QUGVNkHTdpijgx5VMxeetSk6ntdt+vR1DqGmHxQYHRmNb77tP6GVvD+K0NyO4xjd7y4A==", "cpu": [ "mips64el" ], @@ -2366,9 +2380,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.8.tgz", - "integrity": "sha512-ETaW6245wK23YIEufhMQ3HSeHO7NgsLx8gygBVldRHKhOlD1oNeNy/P67mIh1zPn2Hr2HLieQrt6tWrVwuqrxg==", + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.10.tgz", + "integrity": "sha512-tgT/7u+QhV6ge8wFMzaklOY7KqiyitgT1AUHMApau32ZlvTB/+efeCtMk4eXS+uEymYK249JsoiklZN64xt6oQ==", "cpu": [ "ppc64" ], @@ -2381,9 +2395,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.8.tgz", - "integrity": "sha512-T2DRQk55SgoleTP+DtPlMrxi/5r9AeFgkhkZ/B0ap99zmxtxdOixOMI570VjdRCs9pE4Wdkz7JYrsPvsl7eESg==", + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.10.tgz", + "integrity": "sha512-0f/spw0PfBMZBNqtKe5FLzBDGo0SKZKvMl5PHYQr3+eiSscfJ96XEknCe+JoOayybWUFQbcJTrk946i3j9uYZA==", "cpu": [ "riscv64" ], @@ -2396,9 +2410,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.8.tgz", - "integrity": "sha512-NPxbdmmo3Bk7mbNeHmcCd7R7fptJaczPYBaELk6NcXxy7HLNyWwCyDJ/Xx+/YcNH7Im5dHdx9gZ5xIwyliQCbg==", + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.10.tgz", + "integrity": "sha512-pZFe0OeskMHzHa9U38g+z8Yx5FNCLFtUnJtQMpwhS+r4S566aK2ci3t4NCP4tjt6d5j5uo4h7tExZMjeKoehAA==", "cpu": [ "s390x" ], @@ -2411,9 +2425,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.8.tgz", - "integrity": "sha512-lytMAVOM3b1gPypL2TRmZ5rnXl7+6IIk8uB3eLsV1JwcizuolblXRrc5ShPrO9ls/b+RTp+E6gbsuLWHWi2zGg==", + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.10.tgz", + "integrity": "sha512-SpYNEqg/6pZYoc+1zLCjVOYvxfZVZj6w0KROZ3Fje/QrM3nfvT2llI+wmKSrWuX6wmZeTapbarvuNNK/qepSgA==", "cpu": [ "x64" ], @@ -2426,9 +2440,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.8.tgz", - "integrity": "sha512-hvWVo2VsXz/8NVt1UhLzxwAfo5sioj92uo0bCfLibB0xlOmimU/DeAEsQILlBQvkhrGjamP0/el5HU76HAitGw==", + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.10.tgz", + "integrity": "sha512-ACbZ0vXy9zksNArWlk2c38NdKg25+L9pr/mVaj9SUq6lHZu/35nx2xnQVRGLrC1KKQqJKRIB0q8GspiHI3J80Q==", "cpu": [ "x64" ], @@ -2441,9 +2455,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.8.tgz", - "integrity": "sha512-/7Y7u77rdvmGTxR83PgaSvSBJCC2L3Kb1M/+dmSIvRvQPXXCuC97QAwMugBNG0yGcbEGfFBH7ojPzAOxfGNkwQ==", + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.10.tgz", + "integrity": "sha512-PxcgvjdSjtgPMiPQrM3pwSaG4kGphP+bLSb+cihuP0LYdZv1epbAIecHVl5sD3npkfYBZ0ZnOjR878I7MdJDFg==", "cpu": [ "x64" ], @@ -2456,9 +2470,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.8.tgz", - "integrity": "sha512-9Lc4s7Oi98GqFA4HzA/W2JHIYfnXbUYgekUP/Sm4BG9sfLjyv6GKKHKKVs83SMicBF2JwAX6A1PuOLMqpD001w==", + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.10.tgz", + "integrity": "sha512-ZkIOtrRL8SEJjr+VHjmW0znkPs+oJXhlJbNwfI37rvgeMtk3sxOQevXPXjmAPZPigVTncvFqLMd+uV0IBSEzqA==", "cpu": [ "x64" ], @@ -2471,9 +2485,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.8.tgz", - "integrity": "sha512-rq6WzBGjSzihI9deW3fC2Gqiak68+b7qo5/3kmB6Gvbh/NYPA0sJhrnp7wgV4bNwjqM+R2AApXGxMO7ZoGhIJg==", + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.10.tgz", + "integrity": "sha512-+Sa4oTDbpBfGpl3Hn3XiUe4f8TU2JF7aX8cOfqFYMMjXp6ma6NJDztl5FDG8Ezx0OjwGikIHw+iA54YLDNNVfw==", "cpu": [ "arm64" ], @@ -2486,9 +2500,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.8.tgz", - "integrity": "sha512-AIAbverbg5jMvJznYiGhrd3sumfwWs8572mIJL5NQjJa06P8KfCPWZQ0NwZbPQnbQi9OWSZhFVSUWjjIrn4hSw==", + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.10.tgz", + "integrity": "sha512-EOGVLK1oWMBXgfttJdPHDTiivYSjX6jDNaATeNOaCOFEVcfMjtbx7WVQwPSE1eIfCp/CaSF2nSrDtzc4I9f8TQ==", "cpu": [ "ia32" ], @@ -2501,9 +2515,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.8.tgz", - "integrity": "sha512-bfZ0cQ1uZs2PqpulNL5j/3w+GDhP36k1K5c38QdQg+Swy51jFZWWeIkteNsufkQxp986wnqRRsb/bHbY1WQ7TA==", + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.10.tgz", + "integrity": "sha512-whqLG6Sc70AbU73fFYvuYzaE4MNMBIlR1Y/IrUeOXFrWHxBEjjbZaQ3IXIQS8wJdAzue2GwYZCjOrgrU1oUHoA==", "cpu": [ "x64" ], @@ -2635,14 +2649,6 @@ "react-dom": "^16 || ^17 || ^18" } }, - "node_modules/@heroicons/react": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-2.0.18.tgz", - "integrity": "sha512-7TyMjRrZZMBPa+/5Y8lN0iyvUU/01PeMGX2+RE7cQWpEUIcb4QotzUObFkJDejj/HUH4qjP/eQ0gzzKs2f+6Yw==", - "peerDependencies": { - "react": ">= 16" - } - }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.13", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", @@ -2989,6 +2995,355 @@ "node": ">= 8" } }, + "node_modules/@oclif/color": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/@oclif/color/-/color-1.0.13.tgz", + "integrity": "sha512-/2WZxKCNjeHlQogCs1VBtJWlPXjwWke/9gMrwsVsrUt00g2V6LUBvwgwrxhrXepjOmq4IZ5QeNbpDMEOUlx/JA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.2.1", + "chalk": "^4.1.0", + "strip-ansi": "^6.0.1", + "supports-color": "^8.1.1", + "tslib": "^2" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@oclif/color/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/@oclif/core": { + "version": "2.8.11", + "resolved": "https://registry.npmjs.org/@oclif/core/-/core-2.8.11.tgz", + "integrity": "sha512-9wYW6KRSWfB/D+tqeyl/jxmEz/xPXkFJGVWfKaptqHz6FPWNJREjAM945MuJL2Y8NRhMe+ScRlZ3WpdToX5aVQ==", + "dev": true, + "dependencies": { + "@types/cli-progress": "^3.11.0", + "ansi-escapes": "^4.3.2", + "ansi-styles": "^4.3.0", + "cardinal": "^2.1.1", + "chalk": "^4.1.2", + "clean-stack": "^3.0.1", + "cli-progress": "^3.12.0", + "debug": "^4.3.4", + "ejs": "^3.1.8", + "fs-extra": "^9.1.0", + "get-package-type": "^0.1.0", + "globby": "^11.1.0", + "hyperlinker": "^1.0.0", + "indent-string": "^4.0.0", + "is-wsl": "^2.2.0", + "js-yaml": "^3.14.1", + "natural-orderby": "^2.0.3", + "object-treeify": "^1.1.33", + "password-prompt": "^1.1.2", + "semver": "^7.5.3", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "supports-color": "^8.1.1", + "supports-hyperlinks": "^2.2.0", + "ts-node": "^10.9.1", + "tslib": "^2.5.0", + "widest-line": "^3.1.0", + "wordwrap": "^1.0.0", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@oclif/core/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/@oclif/core/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/@oclif/core/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/@oclif/core/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/@oclif/core/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/@oclif/core/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/@oclif/linewrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@oclif/linewrap/-/linewrap-1.0.0.tgz", + "integrity": "sha512-Ups2dShK52xXa8w6iBWLgcjPJWjais6KPJQq3gQ/88AY6BXoTX+MIGFPrWQO1KLMiQfoTpcLnUwloN4brrVUHw==", + "dev": true + }, + "node_modules/@oclif/plugin-help": { + "version": "5.1.20", + "resolved": "https://registry.npmjs.org/@oclif/plugin-help/-/plugin-help-5.1.20.tgz", + "integrity": "sha512-N8xRxE/isFcdBDI8cobixEZA5toxIK5jbxpwALNTr4s8KNAtBA3ORQrSiY0fWGkcv0sCGMwZw7rJ0Izh18JPsw==", + "dev": true, + "dependencies": { + "@oclif/core": "^1.21.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@oclif/plugin-help/node_modules/@oclif/core": { + "version": "1.26.2", + "resolved": "https://registry.npmjs.org/@oclif/core/-/core-1.26.2.tgz", + "integrity": "sha512-6jYuZgXvHfOIc9GIaS4T3CIKGTjPmfAxuMcbCbMRKJJl4aq/4xeRlEz0E8/hz8HxvxZBGvN2GwAUHlrGWQVrVw==", + "dev": true, + "dependencies": { + "@oclif/linewrap": "^1.0.0", + "@oclif/screen": "^3.0.4", + "ansi-escapes": "^4.3.2", + "ansi-styles": "^4.3.0", + "cardinal": "^2.1.1", + "chalk": "^4.1.2", + "clean-stack": "^3.0.1", + "cli-progress": "^3.10.0", + "debug": "^4.3.4", + "ejs": "^3.1.6", + "fs-extra": "^9.1.0", + "get-package-type": "^0.1.0", + "globby": "^11.1.0", + "hyperlinker": "^1.0.0", + "indent-string": "^4.0.0", + "is-wsl": "^2.2.0", + "js-yaml": "^3.14.1", + "natural-orderby": "^2.0.3", + "object-treeify": "^1.1.33", + "password-prompt": "^1.1.2", + "semver": "^7.3.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "supports-color": "^8.1.1", + "supports-hyperlinks": "^2.2.0", + "tslib": "^2.4.1", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@oclif/plugin-help/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/@oclif/plugin-help/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/@oclif/plugin-help/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/@oclif/plugin-help/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/@oclif/plugin-help/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/@oclif/plugin-help/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/@oclif/plugin-not-found": { + "version": "2.3.23", + "resolved": "https://registry.npmjs.org/@oclif/plugin-not-found/-/plugin-not-found-2.3.23.tgz", + "integrity": "sha512-UZM8aolxXvqwH8WcmJxRNASDWgMoSQm/pgCdkc1AGCRevYc8+LBSO+U6nLWq+Dx8H/dn9RyIv5oiUIOGkKDlZA==", + "dev": true, + "dependencies": { + "@oclif/color": "^1.0.4", + "@oclif/core": "^2.8.0", + "fast-levenshtein": "^3.0.0", + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@oclif/plugin-not-found/node_modules/fast-levenshtein": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-3.0.0.tgz", + "integrity": "sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==", + "dev": true, + "dependencies": { + "fastest-levenshtein": "^1.0.7" + } + }, + "node_modules/@oclif/plugin-plugins": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@oclif/plugin-plugins/-/plugin-plugins-2.3.0.tgz", + "integrity": "sha512-VmlLLYE4LCXX2RGNv4ht8AqG9OADvLIE4Kxhm18h5RZ9cMee7U6nrHQeW455lh/idnWC2XT7bHgJBv2kgYxSiQ==", + "dev": true, + "dependencies": { + "@oclif/color": "^1.0.3", + "@oclif/core": "^2.0.3", + "chalk": "^4.1.2", + "debug": "^4.3.4", + "fs-extra": "^9.0", + "http-call": "^5.2.2", + "load-json-file": "^5.3.0", + "npm-run-path": "^4.0.1", + "semver": "^7.3.8", + "tslib": "^2.4.1", + "yarn": "^1.22.18" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@oclif/plugin-warn-if-update-available": { + "version": "2.0.24", + "resolved": "https://registry.npmjs.org/@oclif/plugin-warn-if-update-available/-/plugin-warn-if-update-available-2.0.24.tgz", + "integrity": "sha512-Rq8/EZ8wQawvPWS6W59Zhf/zSz/umLc3q75I1ybi7pul6YMNwf/E1eDVHytSUEQ6yQV+p3cCs034IItz4CVdjw==", + "dev": true, + "dependencies": { + "@oclif/core": "^2.0.7", + "chalk": "^4.1.0", + "debug": "^4.1.0", + "fs-extra": "^9.0.1", + "http-call": "^5.2.2", + "lodash": "^4.17.21", + "semver": "^7.3.8" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@oclif/screen": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@oclif/screen/-/screen-3.0.8.tgz", + "integrity": "sha512-yx6KAqlt3TAHBduS2fMQtJDL2ufIHnDRArrJEOoTTuizxqmjLT+psGYOHpmMl3gvQpFJ11Hs76guUUktzAF9Bg==", + "dev": true, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -3048,6 +3403,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@playwright/test": { + "version": "1.40.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.40.1.tgz", + "integrity": "sha512-EaaawMTOeEItCRvfmkI9v6rBkF1svM8wjl/YPRrg2N2Wmp+4qJYkWtJsbew1szfKKDm6fPLy4YAanBhIlf9dWw==", + "dev": true, + "dependencies": { + "playwright": "1.40.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/@rushstack/eslint-patch": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.6.0.tgz", @@ -3473,29 +3843,25 @@ "version": "1.0.9", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "optional": true, - "peer": true + "devOptional": true }, "node_modules/@tsconfig/node12": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "optional": true, - "peer": true + "devOptional": true }, "node_modules/@tsconfig/node14": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "optional": true, - "peer": true + "devOptional": 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==", - "optional": true, - "peer": true + "devOptional": true }, "node_modules/@types/acorn": { "version": "4.0.6", @@ -3505,6 +3871,15 @@ "@types/estree": "*" } }, + "node_modules/@types/cli-progress": { + "version": "3.11.5", + "resolved": "https://registry.npmjs.org/@types/cli-progress/-/cli-progress-3.11.5.tgz", + "integrity": "sha512-D4PbNRbviKyppS5ivBGyFO29POlySLmA2HyUFE4p5QGazAMM3CwkKWcvTl8gvElSuxRh6FPKL8XmidX873ou4g==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/d3-scale": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", @@ -3896,8 +4271,7 @@ "version": "8.3.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.0.tgz", "integrity": "sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==", - "optional": true, - "peer": true, + "devOptional": true, "engines": { "node": ">=0.4.0" } @@ -3927,6 +4301,39 @@ "npm": ">=5" } }, + "node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, "node_modules/algoliasearch": { "version": "4.20.0", "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.20.0.tgz", @@ -3949,6 +4356,21 @@ "@algolia/transporter": "4.20.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", @@ -3976,6 +4398,12 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/ansicolors": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", + "integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==", + "dev": true + }, "node_modules/any-promise": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", @@ -4156,6 +4584,21 @@ "astring": "bin/astring" } }, + "node_modules/async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", + "dev": true + }, + "node_modules/async-mqtt": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async-mqtt/-/async-mqtt-2.6.3.tgz", + "integrity": "sha512-mFGTtlEpOugOoLOf9H5AJyJaZUNtOVXLGGOnPaPZDPQex6W6iIOgtV+fAgam0GQbgnLfgX+Wn/QzS6d+PYfFAQ==", + "dev": true, + "dependencies": { + "mqtt": "^4.3.7" + } + }, "node_modules/asynciterator.prototype": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", @@ -4165,6 +4608,30 @@ "has-symbols": "^1.0.3" } }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/atomically": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz", + "integrity": "sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==", + "dev": true, + "engines": { + "node": ">=10.12.0" + } + }, "node_modules/autoprefixer": { "version": "10.4.16", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", @@ -4222,6 +4689,17 @@ "node": ">=4" } }, + "node_modules/axios": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", + "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, "node_modules/axobject-query": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", @@ -4448,6 +4926,12 @@ "ieee754": "^1.1.13" } }, + "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/bundle-name": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", @@ -4534,6 +5018,19 @@ } ] }, + "node_modules/cardinal": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", + "integrity": "sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==", + "dev": true, + "dependencies": { + "ansicolors": "~0.3.2", + "redeyed": "~2.1.0" + }, + "bin": { + "cdl": "bin/cdl.js" + } + }, "node_modules/ccount": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", @@ -4549,50 +5046,232 @@ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/checkly": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/checkly/-/checkly-4.5.2.tgz", + "integrity": "sha512-eUxr8/+R5E7aufE0xpBUofGOSO3PTmoaEs2QzN08lKyj8unPXn1VtwuZZ8GZSb/Pb1UsA1l4R0o9iS2Iu8O+Dw==", + "dev": true, + "dependencies": { + "@oclif/core": "2.8.11", + "@oclif/plugin-help": "5.1.20", + "@oclif/plugin-not-found": "2.3.23", + "@oclif/plugin-plugins": "2.3.0", + "@oclif/plugin-warn-if-update-available": "2.0.24", + "@typescript-eslint/typescript-estree": "6.7.2", + "acorn": "8.8.1", + "acorn-walk": "8.2.0", + "async-mqtt": "2.6.3", + "axios": "1.6.2", + "chalk": "4.1.2", + "ci-info": "3.8.0", + "conf": "10.2.0", + "dotenv": "16.3.1", + "git-repo-info": "2.1.1", + "glob": "10.3.1", + "indent-string": "4.0.0", + "jwt-decode": "3.1.2", + "log-symbols": "4.1.0", + "luxon": "3.3.0", + "open": "8.4.0", + "p-queue": "6.6.2", + "prompts": "2.4.2", + "proxy-from-env": "1.1.0", + "tunnel": "0.0.6", + "uuid": "9.0.0" + }, + "bin": { + "checkly": "bin/run" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/checkly/node_modules/@typescript-eslint/types": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.2.tgz", + "integrity": "sha512-flJYwMYgnUNDAN9/GAI3l8+wTmvTYdv64fcH8aoJK76Y+1FCZ08RtI5zDerM/FYT5DMkAc+19E4aLmd5KqdFyg==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/checkly/node_modules/@typescript-eslint/typescript-estree": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.2.tgz", + "integrity": "sha512-kiJKVMLkoSciGyFU0TOY0fRxnp9qq1AzVOHNeN1+B9erKFCJ4Z8WdjAkKQPP+b1pWStGFqezMLltxO+308dJTQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.7.2", + "@typescript-eslint/visitor-keys": "6.7.2", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/checkly/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.2.tgz", + "integrity": "sha512-uVw9VIMFBUTz8rIeaUT3fFe8xIUx8r4ywAdlQv1ifH+6acn/XF8Y6rwJ7XNmkNMDrTW+7+vxFFPIF40nJCVsMQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.7.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/checkly/node_modules/acorn": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/checkly/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/checkly/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/checkly/node_modules/glob": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.1.tgz", + "integrity": "sha512-9BKYcEeIs7QwlCYs+Y3GBvqAMISufUS0i2ELd11zpZjxI5V9iyRj0HgzB5/cLf2NY4vcYBTYzJ7GIui7j/4DOw==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2", + "path-scurry": "^1.10.0" + }, + "bin": { + "glob": "dist/cjs/src/bin.js" }, "engines": { - "node": ">=10" + "node": ">=16 || 14 >=14.17" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/character-entities": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/character-entities-html4": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", - "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "node_modules/checkly/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/character-entities-legacy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", - "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "node_modules/checkly/node_modules/minipass": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz", + "integrity": "sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" } }, - "node_modules/character-reference-invalid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", - "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "node_modules/checkly/node_modules/uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" } }, "node_modules/chokidar": { @@ -4626,6 +5305,21 @@ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" }, + "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/class-variance-authority": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.0.tgz", @@ -4642,6 +5336,53 @@ "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" }, + "node_modules/clean-stack": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-3.0.1.tgz", + "integrity": "sha512-lR9wNiMRcVQjSB3a7xXGLuz4cr4wJuuXlaAEbRutGowQTmlp7R72/DOgN21e8jdwblMWl9UOJMJXarX94pzKdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-progress": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.12.0.tgz", + "integrity": "sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==", + "dev": true, + "dependencies": { + "string-width": "^4.2.3" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-progress/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/cli-progress/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/client-only": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", @@ -4692,6 +5433,18 @@ "simple-swizzle": "^0.2.2" } }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/comma-separated-tokens": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", @@ -4701,11 +5454,69 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/commist": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/commist/-/commist-1.1.0.tgz", + "integrity": "sha512-rraC8NXWOEjhADbZe9QBNzLAN5Q3fsTPQtBV+fEVj6xKIgDgNiEVE6ZNfHpZOqfQ21YUzfVNUXLOEZquYvQPPg==", + "dev": true, + "dependencies": { + "leven": "^2.1.0", + "minimist": "^1.1.0" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, + "node_modules/concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "dev": true, + "engines": [ + "node >= 6.0" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/conf": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/conf/-/conf-10.2.0.tgz", + "integrity": "sha512-8fLl9F04EJqjSqH+QjITQfJF8BrOVaYr1jewVgSRAEWePfxT0sku4w2hrGQ60BC/TNLGQ2pgxNlTbWQmMPFvXg==", + "dev": true, + "dependencies": { + "ajv": "^8.6.3", + "ajv-formats": "^2.1.1", + "atomically": "^1.7.0", + "debounce-fn": "^4.0.0", + "dot-prop": "^6.0.1", + "env-paths": "^2.2.1", + "json-schema-typed": "^7.0.3", + "onetime": "^5.1.2", + "pkg-up": "^3.1.0", + "semver": "^7.3.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "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", @@ -4760,8 +5571,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "optional": true, - "peer": true + "devOptional": true }, "node_modules/cross-spawn": { "version": "7.0.3", @@ -5308,6 +6118,30 @@ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" }, + "node_modules/debounce-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/debounce-fn/-/debounce-fn-4.0.0.tgz", + "integrity": "sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/debounce-fn/node_modules/mimic-fn": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", + "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -5541,6 +6375,15 @@ "node": ">= 0.4" } }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/define-properties": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", @@ -5566,6 +6409,15 @@ "robust-predicates": "^3.0.0" } }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/dequal": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", @@ -5603,8 +6455,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "optional": true, - "peer": true, + "devOptional": true, "engines": { "node": ">=0.3.1" } @@ -5720,11 +6571,65 @@ "tslib": "^2.0.3" } }, + "node_modules/dot-prop": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "dev": true, + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dotenv": { + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", + "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/motdotla/dotenv?sponsor=1" + } + }, + "node_modules/duplexify": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", + "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.0" + } + }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" }, + "node_modules/ejs": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", + "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", + "dev": true, + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/electron-to-chromium": { "version": "1.4.581", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.581.tgz", @@ -5780,6 +6685,15 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "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, + "engines": { + "node": ">=6" + } + }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -5904,9 +6818,9 @@ } }, "node_modules/esbuild": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.8.tgz", - "integrity": "sha512-l7iffQpT2OrZfH2rXIp7/FkmaeZM0vxbxN9KfiCwGYuZqzMg/JdvX26R31Zxn/Pxvsrg3Y9N6XTcnknqDyyv4w==", + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.10.tgz", + "integrity": "sha512-S1Y27QGt/snkNYrRcswgRFqZjaTG5a5xM3EQo97uNBnH505pdzSNe/HLBq1v0RO7iK/ngdbhJB6mDAp0OK+iUA==", "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" @@ -5915,28 +6829,29 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/android-arm": "0.19.8", - "@esbuild/android-arm64": "0.19.8", - "@esbuild/android-x64": "0.19.8", - "@esbuild/darwin-arm64": "0.19.8", - "@esbuild/darwin-x64": "0.19.8", - "@esbuild/freebsd-arm64": "0.19.8", - "@esbuild/freebsd-x64": "0.19.8", - "@esbuild/linux-arm": "0.19.8", - "@esbuild/linux-arm64": "0.19.8", - "@esbuild/linux-ia32": "0.19.8", - "@esbuild/linux-loong64": "0.19.8", - "@esbuild/linux-mips64el": "0.19.8", - "@esbuild/linux-ppc64": "0.19.8", - "@esbuild/linux-riscv64": "0.19.8", - "@esbuild/linux-s390x": "0.19.8", - "@esbuild/linux-x64": "0.19.8", - "@esbuild/netbsd-x64": "0.19.8", - "@esbuild/openbsd-x64": "0.19.8", - "@esbuild/sunos-x64": "0.19.8", - "@esbuild/win32-arm64": "0.19.8", - "@esbuild/win32-ia32": "0.19.8", - "@esbuild/win32-x64": "0.19.8" + "@esbuild/aix-ppc64": "0.19.10", + "@esbuild/android-arm": "0.19.10", + "@esbuild/android-arm64": "0.19.10", + "@esbuild/android-x64": "0.19.10", + "@esbuild/darwin-arm64": "0.19.10", + "@esbuild/darwin-x64": "0.19.10", + "@esbuild/freebsd-arm64": "0.19.10", + "@esbuild/freebsd-x64": "0.19.10", + "@esbuild/linux-arm": "0.19.10", + "@esbuild/linux-arm64": "0.19.10", + "@esbuild/linux-ia32": "0.19.10", + "@esbuild/linux-loong64": "0.19.10", + "@esbuild/linux-mips64el": "0.19.10", + "@esbuild/linux-ppc64": "0.19.10", + "@esbuild/linux-riscv64": "0.19.10", + "@esbuild/linux-s390x": "0.19.10", + "@esbuild/linux-x64": "0.19.10", + "@esbuild/netbsd-x64": "0.19.10", + "@esbuild/openbsd-x64": "0.19.10", + "@esbuild/sunos-x64": "0.19.10", + "@esbuild/win32-arm64": "0.19.10", + "@esbuild/win32-ia32": "0.19.10", + "@esbuild/win32-x64": "0.19.10" } }, "node_modules/escalade": { @@ -6599,6 +7514,12 @@ "node": ">=0.10.0" } }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, "node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -6690,6 +7611,15 @@ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "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.15.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", @@ -6715,6 +7645,36 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/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/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -6726,6 +7686,18 @@ "node": ">=8" } }, + "node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/flat-cache": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", @@ -6751,6 +7723,26 @@ "resolved": "https://registry.npmjs.org/flexsearch/-/flexsearch-0.7.31.tgz", "integrity": "sha512-XGozTsMPYkm+6b5QL3Z9wQcJjNYxp0CYn3U1gO7dwD6PAqU1SVWZxI9CCg3z+ml3YfqdPnrBehaBrnH2AGKbNA==" }, + "node_modules/follow-redirects": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", @@ -6786,6 +7778,20 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fraction.js": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", @@ -6803,15 +7809,30 @@ "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" }, + "node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "hasInstallScript": true, "optional": true, "os": [ @@ -6879,6 +7900,15 @@ "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", @@ -6919,6 +7949,15 @@ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, + "node_modules/git-repo-info": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/git-repo-info/-/git-repo-info-2.1.1.tgz", + "integrity": "sha512-8aCohiDo4jwjOwma4FmYFd3i97urZulL8XL24nIPxuE+GZnfsAyy/g2Shqx6OjUiFKUXZM+Yy+KHnOmmA3FVcg==", + "dev": true, + "engines": { + "node": ">= 4.0" + } + }, "node_modules/github-from-package": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", @@ -7577,11 +8616,71 @@ "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==" }, + "node_modules/help-me": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/help-me/-/help-me-3.0.0.tgz", + "integrity": "sha512-hx73jClhyk910sidBB7ERlnhMlFsJJIBqSVMFDwPN8o2v9nmp5KgLq1Xz1Bf1fCMMZ6mPrX159iG0VLy/fPMtQ==", + "dev": true, + "dependencies": { + "glob": "^7.1.6", + "readable-stream": "^3.6.0" + } + }, + "node_modules/help-me/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/highlight-words-core": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/highlight-words-core/-/highlight-words-core-1.2.2.tgz", "integrity": "sha512-BXUKIkUuh6cmmxzi5OIbUJxrG8OAk2MqoL1DtO3Wo9D2faJg2ph5ntyuQeLqaHJmzER6H5tllCDA9ZnNe9BVGg==" }, + "node_modules/http-call": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/http-call/-/http-call-5.3.0.tgz", + "integrity": "sha512-ahwimsC23ICE4kPl9xTBjKB4inbRaeLyZeRunC/1Jy/Z6X8tv22MEAjK+KBOMSVLaqXPTTmd8638waVIKLGx2w==", + "dev": true, + "dependencies": { + "content-type": "^1.0.4", + "debug": "^4.1.1", + "is-retry-allowed": "^1.1.0", + "is-stream": "^2.0.0", + "parse-json": "^4.0.0", + "tunnel-agent": "^0.6.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-call/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/human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", @@ -7591,6 +8690,15 @@ "node": ">=10.17.0" } }, + "node_modules/hyperlinker": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hyperlinker/-/hyperlinker-1.0.0.tgz", + "integrity": "sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", @@ -7654,6 +8762,15 @@ "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/individual": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/individual/-/individual-2.0.0.tgz", @@ -8034,6 +9151,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -8078,6 +9204,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-retry-allowed": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", + "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-set": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", @@ -8156,6 +9291,18 @@ "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-weakmap": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", @@ -8237,6 +9384,24 @@ "@pkgjs/parseargs": "^0.11.0" } }, + "node_modules/jake": { + "version": "10.8.7", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", + "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", + "dev": true, + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/jiti": { "version": "1.21.0", "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", @@ -8245,6 +9410,16 @@ "jiti": "bin/jiti.js" } }, + "node_modules/js-sdsl": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", + "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -8278,6 +9453,12 @@ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true }, + "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", @@ -8288,6 +9469,18 @@ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/json-schema-typed": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-7.0.3.tgz", + "integrity": "sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A==", + "dev": true + }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", @@ -8310,6 +9503,18 @@ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, "node_modules/jsx-ast-utils": { "version": "3.3.5", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", @@ -8325,6 +9530,12 @@ "node": ">=4.0" } }, + "node_modules/jwt-decode": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", + "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==", + "dev": true + }, "node_modules/keycode": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/keycode/-/keycode-2.2.0.tgz", @@ -8352,6 +9563,15 @@ "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/language-subtag-registry": { "version": "0.3.22", "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", @@ -8375,6 +9595,15 @@ "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz", "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==" }, + "node_modules/leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -8401,6 +9630,53 @@ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, + "node_modules/load-json-file": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz", + "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.15", + "parse-json": "^4.0.0", + "pify": "^4.0.1", + "strip-bom": "^3.0.0", + "type-fest": "^0.3.0" + }, + "engines": { + "node": ">=6" + } + }, + "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/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/load-json-file/node_modules/type-fest": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/loader-utils": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", @@ -8414,6 +9690,19 @@ "node": ">=8.9.0" } }, + "node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", @@ -8449,6 +9738,22 @@ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" }, + "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/longest-streak": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", @@ -8485,6 +9790,23 @@ "yallist": "^3.0.2" } }, + "node_modules/lucide-react": { + "version": "0.299.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.299.0.tgz", + "integrity": "sha512-59MiDzDzFI/efHhb4n0vGdXelMNwou7JlAFvVS4boA1G/7aYU7garPciYo73CODzkhrhz0JOgdtSTPSe5dMrlQ==", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/luxon": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.3.0.tgz", + "integrity": "sha512-An0UCfG/rSiqtAIiBPO0Y9/zAnHUZxAMiCpTd5h2smgsj7GGmcenvrvww2cqNA8/4A5ZrD1gJpHN2mIHZQF+Mg==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/m3u8-parser": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/m3u8-parser/-/m3u8-parser-6.2.0.tgz", @@ -8513,8 +9835,7 @@ "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "optional": true, - "peer": true + "devOptional": true }, "node_modules/markdown-table": { "version": "3.0.3", @@ -11924,6 +13245,27 @@ "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", @@ -12001,6 +13343,68 @@ "npm": ">=5" } }, + "node_modules/mqtt": { + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-4.3.8.tgz", + "integrity": "sha512-2xT75uYa0kiPEF/PE0VPdavmEkoBzMT/UL9moid0rAvlCtV48qBwxD62m7Ld/4j8tSkIO1E/iqRl/S72SEOhOw==", + "dev": true, + "dependencies": { + "commist": "^1.0.0", + "concat-stream": "^2.0.0", + "debug": "^4.1.1", + "duplexify": "^4.1.1", + "help-me": "^3.0.0", + "inherits": "^2.0.3", + "lru-cache": "^6.0.0", + "minimist": "^1.2.5", + "mqtt-packet": "^6.8.0", + "number-allocator": "^1.0.9", + "pump": "^3.0.0", + "readable-stream": "^3.6.0", + "reinterval": "^1.1.0", + "rfdc": "^1.3.0", + "split2": "^3.1.0", + "ws": "^7.5.5", + "xtend": "^4.0.2" + }, + "bin": { + "mqtt": "bin/mqtt.js", + "mqtt_pub": "bin/pub.js", + "mqtt_sub": "bin/sub.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/mqtt-packet": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/mqtt-packet/-/mqtt-packet-6.10.0.tgz", + "integrity": "sha512-ja8+mFKIHdB1Tpl6vac+sktqy3gA8t9Mduom1BA75cI+R9AHnZOiaBQwpGiWnaVJLDGRdNhQmFaAqd7tkKSMGA==", + "dev": true, + "dependencies": { + "bl": "^4.0.2", + "debug": "^4.1.1", + "process-nextick-args": "^2.0.1" + } + }, + "node_modules/mqtt/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/mqtt/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/mri": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", @@ -12068,6 +13472,15 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, + "node_modules/natural-orderby": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/natural-orderby/-/natural-orderby-2.0.3.tgz", + "integrity": "sha512-p7KTHxU0CUrcOXe62Zfrb5Z13nLvPhSWR/so3kFulUQU0sgUll2Z0LwpsLN351eOOD+hRGu/F1g+6xDfPeD++Q==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/next": { "version": "13.5.6", "resolved": "https://registry.npmjs.org/next/-/next-13.5.6.tgz", @@ -13199,6 +14612,16 @@ "url": "https://github.com/fb55/nth-check?sponsor=1" } }, + "node_modules/number-allocator": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/number-allocator/-/number-allocator-1.0.14.tgz", + "integrity": "sha512-OrL44UTVAvkKdOdRQZIJpLkAdjXGTRda052sN4sO77bKEzYYqWKMBjQvrJFzqygI99gL6Z4u2xctPW1tB8ErvA==", + "dev": true, + "dependencies": { + "debug": "^4.3.1", + "js-sdsl": "4.3.0" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -13233,6 +14656,15 @@ "node": ">= 0.4" } }, + "node_modules/object-treeify": { + "version": "1.1.33", + "resolved": "https://registry.npmjs.org/object-treeify/-/object-treeify-1.1.33.tgz", + "integrity": "sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, "node_modules/object.assign": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", @@ -13347,6 +14779,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/optionator": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", @@ -13364,6 +14813,79 @@ "node": ">= 0.8.0" } }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "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-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-queue": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "dev": true, + "dependencies": { + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -13421,6 +14943,25 @@ "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz", "integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==" }, + "node_modules/password-prompt": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/password-prompt/-/password-prompt-1.1.3.tgz", + "integrity": "sha512-HkrjG2aJlvF0t2BMH0e2LB/EHf3Lcq3fNMzy4GYHcQblAvOl+QQji1Lx7WRBMqpVK8p+KR7bCg7oqAMXtdgqyw==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.3.2", + "cross-spawn": "^7.0.3" + } + }, + "node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -13526,6 +15067,48 @@ "pkcs7": "bin/cli.js" } }, + "node_modules/pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "dev": true, + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/playwright": { + "version": "1.40.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.40.1.tgz", + "integrity": "sha512-2eHI7IioIpQ0bS1Ovg/HszsN/XKNwEG1kbzSDDmADpclKc7CyqkHw7Mg2JCz/bbCxg25QUPcjksoMW7JcIFQmw==", + "dev": true, + "dependencies": { + "playwright-core": "1.40.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=16" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.40.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.40.1.tgz", + "integrity": "sha512-+hkOycxPiV534c4HhpfX6yrlawqVUzITRKwHAmYfmsVreltEl6fAZJ3DPfLMOODw0H3s1Itd6MDCWmP1fl/QvQ==", + "dev": true, + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/postcss": { "version": "8.4.31", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", @@ -13886,6 +15469,25 @@ "node": ">= 0.6.0" } }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "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/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -13905,6 +15507,12 @@ "url": "https://github.com/sponsors/wooorm" } }, + "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 + }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -13983,17 +15591,6 @@ "react": "^18.2.0" } }, - "node_modules/react-feather": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/react-feather/-/react-feather-2.0.10.tgz", - "integrity": "sha512-BLhukwJ+Z92Nmdcs+EMw6dy1Z/VLiJTzEQACDUEnWMClhYnFykJCGWQx+NmwP/qQHGX/5CzQ+TGi8ofg2+HzVQ==", - "dependencies": { - "prop-types": "^15.7.2" - }, - "peerDependencies": { - "react": ">=16.8.6" - } - }, "node_modules/react-highlight-words": { "version": "0.20.0", "resolved": "https://registry.npmjs.org/react-highlight-words/-/react-highlight-words-0.20.0.tgz", @@ -14044,6 +15641,15 @@ "node": ">=8.10.0" } }, + "node_modules/redeyed": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", + "integrity": "sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==", + "dev": true, + "dependencies": { + "esprima": "~4.0.0" + } + }, "node_modules/reflect.getprototypeof": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz", @@ -14569,6 +16175,12 @@ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" }, + "node_modules/reinterval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reinterval/-/reinterval-1.1.0.tgz", + "integrity": "sha512-QIRet3SYrGp0HUHO88jVskiG6seqUGC5iAG7AwI/BV4ypGcuqk9Du6YQBUOUqm9c8pw1eyLoIaONifRua1lsEQ==", + "dev": true + }, "node_modules/remark-directive": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/remark-directive/-/remark-directive-2.0.1.tgz", @@ -15208,6 +16820,15 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", @@ -15250,6 +16871,12 @@ "node": ">=0.10.0" } }, + "node_modules/rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, "node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -15642,6 +17269,12 @@ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" }, + "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", @@ -15699,11 +17332,26 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dev": true, + "dependencies": { + "readable-stream": "^3.0.0" + } + }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" }, + "node_modules/stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, "node_modules/streamsearch": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", @@ -16028,6 +17676,19 @@ "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", @@ -16239,8 +17900,7 @@ "version": "10.9.1", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", - "optional": true, - "peer": true, + "devOptional": true, "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -16283,8 +17943,7 @@ "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "optional": true, - "peer": true + "devOptional": true }, "node_modules/tsconfig-paths": { "version": "3.14.2", @@ -16315,6 +17974,15 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, + "node_modules/tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "dev": true, + "engines": { + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + } + }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -16338,6 +18006,18 @@ "node": ">= 0.8.0" } }, + "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.0", "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", @@ -16403,6 +18083,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true + }, "node_modules/typescript": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", @@ -16595,6 +18281,15 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/untildify": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", @@ -16710,8 +18405,7 @@ "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==", - "optional": true, - "peer": true + "devOptional": true }, "node_modules/vfile": { "version": "6.0.1", @@ -16935,6 +18629,44 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dev": true, + "dependencies": { + "string-width": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/widest-line/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/widest-line/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/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true + }, "node_modules/wrap-ansi": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", @@ -17027,17 +18759,60 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, + "node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, + "node_modules/yarn": { + "version": "1.22.21", + "resolved": "https://registry.npmjs.org/yarn/-/yarn-1.22.21.tgz", + "integrity": "sha512-ynXaJsADJ9JiZ84zU25XkPGOvVMmZ5b7tmTSpKURYwgELdjucAOydqIOrOfTxVYcNXe91xvLZwcRh68SR3liCg==", + "dev": true, + "hasInstallScript": true, + "bin": { + "yarn": "bin/yarn.js", + "yarnpkg": "bin/yarn.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "optional": true, - "peer": true, + "devOptional": true, "engines": { "node": ">=6" } diff --git a/package.json b/package.json index 728d7ca8..c2eb0939 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,6 @@ "@algolia/autocomplete-core": "^1.9.2", "@apidevtools/json-schema-ref-parser": "^10.1.0", "@headlessui/react": "^1.7.13", - "@heroicons/react": "^2.0.18", "@markdoc/markdoc": "^0.3.2", "@sindresorhus/slugify": "^2.1.0", "@svgr/webpack": "^8.1.0", @@ -32,7 +31,7 @@ "autoprefixer": "^10.4.12", "class-variance-authority": "^0.7.0", "classnames": "^2.3.2", - "esbuild": "^0.19.8", + "esbuild": "^0.19.10", "flexsearch": "^0.7.31", "glob": "^10.3.10", "gray-matter": "^4.0.3", @@ -41,6 +40,7 @@ "hastscript": "^8.0.0", "json-schema": "^0.4.0", "jsonc-parser": "^3.2.0", + "lucide-react": "^0.299.0", "mdast-util-to-string": "^4.0.0", "mermaid": "^10.5.0", "nanoid": "^5.0.4", @@ -51,7 +51,6 @@ "posthog-js": "^1.96.1", "react": "18.2.0", "react-dom": "18.2.0", - "react-feather": "^2.0.10", "react-highlight-words": "^0.20.0", "rehype-autolink-headings": "^7.0.0", "rehype-pretty-code": "^0.10.1", @@ -70,7 +69,9 @@ }, "devDependencies": { "@types/json-schema": "^7.0.15", + "@playwright/test": "^1.40.1", "@types/node": "^18.18.4", + "checkly": "^4.5.2", "eslint": "^8.51.0", "eslint-config-next": "^13.5.4", "eslint-config-prettier": "^9.0.0", diff --git a/policies/composite-inbound/intro.md b/policies/composite-inbound/intro.md index 337003ae..49486d45 100644 --- a/policies/composite-inbound/intro.md +++ b/policies/composite-inbound/intro.md @@ -1,3 +1,8 @@ The Composite policy allows you to create groups of other policies, for easy reuse across multiple routes. Other policies are referenced by their `name`. -Be careful not to create circular references which can cause your gateway to fail. +:::caution + +Be careful not to create circular references which can cause your gateway to +fail. + +::: diff --git a/policies/geo-filter-inbound/doc.md b/policies/geo-filter-inbound/doc.md index 6a012153..f835b67e 100644 --- a/policies/geo-filter-inbound/doc.md +++ b/policies/geo-filter-inbound/doc.md @@ -11,7 +11,7 @@ Specify an allow list or block list of: example, "TX" - **ASNs** - ASN of the incoming request, for example, 395747. -:::warning +:::caution If you specify an allow and block list for the same location type (e.g. `country`) may have no effect or block all requests. diff --git a/static/img/key.svg b/public/img/key.svg similarity index 100% rename from static/img/key.svg rename to public/img/key.svg diff --git a/static/media/api-keys/zuplo-api-keys.png b/public/media/api-keys/zuplo-api-keys.png similarity index 100% rename from static/media/api-keys/zuplo-api-keys.png rename to public/media/api-keys/zuplo-api-keys.png diff --git a/static/media/app-user-zuplo-api.png b/public/media/app-user-zuplo-api.png similarity index 100% rename from static/media/app-user-zuplo-api.png rename to public/media/app-user-zuplo-api.png diff --git a/static/media/change-environments.png b/public/media/change-environments.png similarity index 100% rename from static/media/change-environments.png rename to public/media/change-environments.png diff --git a/static/media/developer-portal/adding-pages/docs-folder.png b/public/media/developer-portal/adding-pages/docs-folder.png similarity index 100% rename from static/media/developer-portal/adding-pages/docs-folder.png rename to public/media/developer-portal/adding-pages/docs-folder.png diff --git a/static/media/developer-portal/adding-pages/style-preview.png b/public/media/developer-portal/adding-pages/style-preview.png similarity index 100% rename from static/media/developer-portal/adding-pages/style-preview.png rename to public/media/developer-portal/adding-pages/style-preview.png diff --git a/static/media/developer-portal/configuration/faker.png b/public/media/developer-portal/configuration/faker.png similarity index 100% rename from static/media/developer-portal/configuration/faker.png rename to public/media/developer-portal/configuration/faker.png diff --git a/static/media/developer-portal/overview/developer-portal.png b/public/media/developer-portal/overview/developer-portal.png similarity index 100% rename from static/media/developer-portal/overview/developer-portal.png rename to public/media/developer-portal/overview/developer-portal.png diff --git a/static/media/developer-portal/setup/dev-portal-auth0.png b/public/media/developer-portal/setup/dev-portal-auth0.png similarity index 100% rename from static/media/developer-portal/setup/dev-portal-auth0.png rename to public/media/developer-portal/setup/dev-portal-auth0.png diff --git a/static/media/developer-portal/setup/dev-portal-okta.png b/public/media/developer-portal/setup/dev-portal-okta.png similarity index 100% rename from static/media/developer-portal/setup/dev-portal-okta.png rename to public/media/developer-portal/setup/dev-portal-okta.png diff --git a/static/media/embed/getting-started/api-key-consumers.png b/public/media/embed/getting-started/api-key-consumers.png similarity index 100% rename from static/media/embed/getting-started/api-key-consumers.png rename to public/media/embed/getting-started/api-key-consumers.png diff --git a/static/media/embed/getting-started/auth-policy.png b/public/media/embed/getting-started/auth-policy.png similarity index 100% rename from static/media/embed/getting-started/auth-policy.png rename to public/media/embed/getting-started/auth-policy.png diff --git a/static/media/embed/getting-started/open-portal.png b/public/media/embed/getting-started/open-portal.png similarity index 100% rename from static/media/embed/getting-started/open-portal.png rename to public/media/embed/getting-started/open-portal.png diff --git a/static/media/embed/getting-started/route.png b/public/media/embed/getting-started/route.png similarity index 100% rename from static/media/embed/getting-started/route.png rename to public/media/embed/getting-started/route.png diff --git a/static/media/embed/getting-started/settings.png b/public/media/embed/getting-started/settings.png similarity index 100% rename from static/media/embed/getting-started/settings.png rename to public/media/embed/getting-started/settings.png diff --git a/static/media/embed/getting-started/test-api.png b/public/media/embed/getting-started/test-api.png similarity index 100% rename from static/media/embed/getting-started/test-api.png rename to public/media/embed/getting-started/test-api.png diff --git a/static/media/embed/getting-started/test-console.png b/public/media/embed/getting-started/test-console.png similarity index 100% rename from static/media/embed/getting-started/test-console.png rename to public/media/embed/getting-started/test-console.png diff --git a/static/media/getting-started-hello-world/default-route.png b/public/media/getting-started-hello-world/default-route.png similarity index 100% rename from static/media/getting-started-hello-world/default-route.png rename to public/media/getting-started-hello-world/default-route.png diff --git a/static/media/getting-started-hello-world/project-url.png b/public/media/getting-started-hello-world/project-url.png similarity index 100% rename from static/media/getting-started-hello-world/project-url.png rename to public/media/getting-started-hello-world/project-url.png diff --git a/static/media/getting-started-hello-world/request-handler-link.png b/public/media/getting-started-hello-world/request-handler-link.png similarity index 100% rename from static/media/getting-started-hello-world/request-handler-link.png rename to public/media/getting-started-hello-world/request-handler-link.png diff --git a/static/media/getting-started-hello-world/test-client.png b/public/media/getting-started-hello-world/test-client.png similarity index 100% rename from static/media/getting-started-hello-world/test-client.png rename to public/media/getting-started-hello-world/test-client.png diff --git a/static/media/getting-started-old/2021-11-15_15.06.39.gif b/public/media/getting-started-old/2021-11-15_15.06.39.gif similarity index 100% rename from static/media/getting-started-old/2021-11-15_15.06.39.gif rename to public/media/getting-started-old/2021-11-15_15.06.39.gif diff --git a/static/media/getting-started-old/2021-11-15_15.27.35.gif b/public/media/getting-started-old/2021-11-15_15.27.35.gif similarity index 100% rename from static/media/getting-started-old/2021-11-15_15.27.35.gif rename to public/media/getting-started-old/2021-11-15_15.27.35.gif diff --git a/static/media/getting-started-old/2021-11-15_15.44.11.gif b/public/media/getting-started-old/2021-11-15_15.44.11.gif similarity index 100% rename from static/media/getting-started-old/2021-11-15_15.44.11.gif rename to public/media/getting-started-old/2021-11-15_15.44.11.gif diff --git a/static/media/getting-started-old/2021-12-02_20.39.21.gif b/public/media/getting-started-old/2021-12-02_20.39.21.gif similarity index 100% rename from static/media/getting-started-old/2021-12-02_20.39.21.gif rename to public/media/getting-started-old/2021-12-02_20.39.21.gif diff --git a/static/media/getting-started-old/Untitled.png b/public/media/getting-started-old/Untitled.png similarity index 100% rename from static/media/getting-started-old/Untitled.png rename to public/media/getting-started-old/Untitled.png diff --git a/static/media/getting-started-old/Untitled_1.png b/public/media/getting-started-old/Untitled_1.png similarity index 100% rename from static/media/getting-started-old/Untitled_1.png rename to public/media/getting-started-old/Untitled_1.png diff --git a/static/media/getting-started-old/Untitled_2.png b/public/media/getting-started-old/Untitled_2.png similarity index 100% rename from static/media/getting-started-old/Untitled_2.png rename to public/media/getting-started-old/Untitled_2.png diff --git a/static/media/getting-started/add-policy.png b/public/media/getting-started/add-policy.png similarity index 100% rename from static/media/getting-started/add-policy.png rename to public/media/getting-started/add-policy.png diff --git a/static/media/getting-started/add-route.png b/public/media/getting-started/add-route.png similarity index 100% rename from static/media/getting-started/add-route.png rename to public/media/getting-started/add-route.png diff --git a/static/media/getting-started/path.png b/public/media/getting-started/path.png similarity index 100% rename from static/media/getting-started/path.png rename to public/media/getting-started/path.png diff --git a/static/media/getting-started/rate-limit.png b/public/media/getting-started/rate-limit.png similarity index 100% rename from static/media/getting-started/rate-limit.png rename to public/media/getting-started/rate-limit.png diff --git a/static/media/getting-started/rewrite.png b/public/media/getting-started/rewrite.png similarity index 100% rename from static/media/getting-started/rewrite.png rename to public/media/getting-started/rewrite.png diff --git a/static/media/getting-started/route-matched.png b/public/media/getting-started/route-matched.png similarity index 100% rename from static/media/getting-started/route-matched.png rename to public/media/getting-started/route-matched.png diff --git a/static/media/getting-started/route-tester.png b/public/media/getting-started/route-tester.png similarity index 100% rename from static/media/getting-started/route-tester.png rename to public/media/getting-started/route-tester.png diff --git a/static/media/getting-started/test-client.png b/public/media/getting-started/test-client.png similarity index 100% rename from static/media/getting-started/test-client.png rename to public/media/getting-started/test-client.png diff --git a/static/media/github-app-install-perms.png b/public/media/github-app-install-perms.png similarity index 100% rename from static/media/github-app-install-perms.png rename to public/media/github-app-install-perms.png diff --git a/static/media/github-deployment-in-progress.png b/public/media/github-deployment-in-progress.png similarity index 100% rename from static/media/github-deployment-in-progress.png rename to public/media/github-deployment-in-progress.png diff --git a/static/media/github-deployment-succeed.png b/public/media/github-deployment-succeed.png similarity index 100% rename from static/media/github-deployment-succeed.png rename to public/media/github-deployment-succeed.png diff --git a/static/media/github-project-environments.png b/public/media/github-project-environments.png similarity index 100% rename from static/media/github-project-environments.png rename to public/media/github-project-environments.png diff --git a/static/media/github-settings-connected.png b/public/media/github-settings-connected.png similarity index 100% rename from static/media/github-settings-connected.png rename to public/media/github-settings-connected.png diff --git a/static/media/github-settings.png b/public/media/github-settings.png similarity index 100% rename from static/media/github-settings.png rename to public/media/github-settings.png diff --git a/static/media/guides/archiving-requests-to-storage/2021-11-21_22.51.33.gif b/public/media/guides/archiving-requests-to-storage/2021-11-21_22.51.33.gif similarity index 100% rename from static/media/guides/archiving-requests-to-storage/2021-11-21_22.51.33.gif rename to public/media/guides/archiving-requests-to-storage/2021-11-21_22.51.33.gif diff --git a/static/media/guides/archiving-requests-to-storage/Untitled.png b/public/media/guides/archiving-requests-to-storage/Untitled.png similarity index 100% rename from static/media/guides/archiving-requests-to-storage/Untitled.png rename to public/media/guides/archiving-requests-to-storage/Untitled.png diff --git a/static/media/guides/archiving-requests-to-storage/Untitled_1.png b/public/media/guides/archiving-requests-to-storage/Untitled_1.png similarity index 100% rename from static/media/guides/archiving-requests-to-storage/Untitled_1.png rename to public/media/guides/archiving-requests-to-storage/Untitled_1.png diff --git a/static/media/guides/archiving-requests-to-storage/Untitled_2.png b/public/media/guides/archiving-requests-to-storage/Untitled_2.png similarity index 100% rename from static/media/guides/archiving-requests-to-storage/Untitled_2.png rename to public/media/guides/archiving-requests-to-storage/Untitled_2.png diff --git a/static/media/guides/proxy-a-simple-get-request/2021-11-21_20.12.10.gif b/public/media/guides/proxy-a-simple-get-request/2021-11-21_20.12.10.gif similarity index 100% rename from static/media/guides/proxy-a-simple-get-request/2021-11-21_20.12.10.gif rename to public/media/guides/proxy-a-simple-get-request/2021-11-21_20.12.10.gif diff --git a/static/media/guides/proxy-a-simple-get-request/2021-11-21_20.34.38.gif b/public/media/guides/proxy-a-simple-get-request/2021-11-21_20.34.38.gif similarity index 100% rename from static/media/guides/proxy-a-simple-get-request/2021-11-21_20.34.38.gif rename to public/media/guides/proxy-a-simple-get-request/2021-11-21_20.34.38.gif diff --git a/static/media/guides/safely-cone-a-request-or-response/Untitled.png b/public/media/guides/safely-cone-a-request-or-response/Untitled.png similarity index 100% rename from static/media/guides/safely-cone-a-request-or-response/Untitled.png rename to public/media/guides/safely-cone-a-request-or-response/Untitled.png diff --git a/static/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_16.23.562x.png b/public/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_16.23.562x.png similarity index 100% rename from static/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_16.23.562x.png rename to public/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_16.23.562x.png diff --git a/static/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_16.30.402x.png b/public/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_16.30.402x.png similarity index 100% rename from static/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_16.30.402x.png rename to public/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_16.30.402x.png diff --git a/static/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_16.35.432x.png b/public/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_16.35.432x.png similarity index 100% rename from static/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_16.35.432x.png rename to public/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_16.35.432x.png diff --git a/static/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_16.47.242x.png b/public/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_16.47.242x.png similarity index 100% rename from static/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_16.47.242x.png rename to public/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_16.47.242x.png diff --git a/static/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_16.51.592x.png b/public/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_16.51.592x.png similarity index 100% rename from static/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_16.51.592x.png rename to public/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_16.51.592x.png diff --git a/static/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_16.55.432x.png b/public/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_16.55.432x.png similarity index 100% rename from static/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_16.55.432x.png rename to public/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_16.55.432x.png diff --git a/static/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_17.03.342x.png b/public/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_17.03.342x.png similarity index 100% rename from static/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_17.03.342x.png rename to public/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_17.03.342x.png diff --git a/static/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_17.06.082x.png b/public/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_17.06.082x.png similarity index 100% rename from static/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_17.06.082x.png rename to public/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_17.06.082x.png diff --git a/static/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_17.17.072x.png b/public/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_17.17.072x.png similarity index 100% rename from static/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_17.17.072x.png rename to public/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_17.17.072x.png diff --git a/static/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_17.39.352x.png b/public/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_17.39.352x.png similarity index 100% rename from static/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_17.39.352x.png rename to public/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_17.39.352x.png diff --git a/static/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_17.41.042x.png b/public/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_17.41.042x.png similarity index 100% rename from static/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_17.41.042x.png rename to public/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_17.41.042x.png diff --git a/static/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_17.44.552x.png b/public/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_17.44.552x.png similarity index 100% rename from static/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_17.44.552x.png rename to public/media/guides/setup-jwt-auth-with-auth0/CleanShot_2021-11-29_at_17.44.552x.png diff --git a/static/media/guides/setup-jwt-auth-with-auth0/Untitled.png b/public/media/guides/setup-jwt-auth-with-auth0/Untitled.png similarity index 100% rename from static/media/guides/setup-jwt-auth-with-auth0/Untitled.png rename to public/media/guides/setup-jwt-auth-with-auth0/Untitled.png diff --git a/static/media/guides/setup-jwt-auth-with-auth0/Untitled_1.png b/public/media/guides/setup-jwt-auth-with-auth0/Untitled_1.png similarity index 100% rename from static/media/guides/setup-jwt-auth-with-auth0/Untitled_1.png rename to public/media/guides/setup-jwt-auth-with-auth0/Untitled_1.png diff --git a/static/media/guides/testing-graphql/test-request.png b/public/media/guides/testing-graphql/test-request.png similarity index 100% rename from static/media/guides/testing-graphql/test-request.png rename to public/media/guides/testing-graphql/test-request.png diff --git a/static/media/performance.png b/public/media/performance.png similarity index 100% rename from static/media/performance.png rename to public/media/performance.png diff --git a/static/media/policies/2021-11-21_21.32.35.gif b/public/media/policies/2021-11-21_21.32.35.gif similarity index 100% rename from static/media/policies/2021-11-21_21.32.35.gif rename to public/media/policies/2021-11-21_21.32.35.gif diff --git a/static/media/policies/2021-11-21_21.44.35.gif b/public/media/policies/2021-11-21_21.44.35.gif similarity index 100% rename from static/media/policies/2021-11-21_21.44.35.gif rename to public/media/policies/2021-11-21_21.44.35.gif diff --git a/static/media/policies/Untitled.png b/public/media/policies/Untitled.png similarity index 100% rename from static/media/policies/Untitled.png rename to public/media/policies/Untitled.png diff --git a/static/media/policies/policy-diagram1.png b/public/media/policies/policy-diagram1.png similarity index 100% rename from static/media/policies/policy-diagram1.png rename to public/media/policies/policy-diagram1.png diff --git a/static/media/portal/Untitled.png b/public/media/portal/Untitled.png similarity index 100% rename from static/media/portal/Untitled.png rename to public/media/portal/Untitled.png diff --git a/static/media/portal/route-path.png b/public/media/portal/route-path.png similarity index 100% rename from static/media/portal/route-path.png rename to public/media/portal/route-path.png diff --git a/static/media/quickstarts/create-new-empty-module.gif b/public/media/quickstarts/create-new-empty-module.gif similarity index 100% rename from static/media/quickstarts/create-new-empty-module.gif rename to public/media/quickstarts/create-new-empty-module.gif diff --git a/static/media/quickstarts/gateway-over-airtable/airtable-curl.png b/public/media/quickstarts/gateway-over-airtable/airtable-curl.png similarity index 100% rename from static/media/quickstarts/gateway-over-airtable/airtable-curl.png rename to public/media/quickstarts/gateway-over-airtable/airtable-curl.png diff --git a/static/media/quickstarts/gateway-over-airtable/airtable-start-from-template.png b/public/media/quickstarts/gateway-over-airtable/airtable-start-from-template.png similarity index 100% rename from static/media/quickstarts/gateway-over-airtable/airtable-start-from-template.png rename to public/media/quickstarts/gateway-over-airtable/airtable-start-from-template.png diff --git a/static/media/quickstarts/gateway-over-airtable/environment-variables.png b/public/media/quickstarts/gateway-over-airtable/environment-variables.png similarity index 100% rename from static/media/quickstarts/gateway-over-airtable/environment-variables.png rename to public/media/quickstarts/gateway-over-airtable/environment-variables.png diff --git a/static/media/quickstarts/gateway-over-airtable/new-request-handler.png b/public/media/quickstarts/gateway-over-airtable/new-request-handler.png similarity index 100% rename from static/media/quickstarts/gateway-over-airtable/new-request-handler.png rename to public/media/quickstarts/gateway-over-airtable/new-request-handler.png diff --git a/static/media/quickstarts/gateway-over-airtable/route-path.png b/public/media/quickstarts/gateway-over-airtable/route-path.png similarity index 100% rename from static/media/quickstarts/gateway-over-airtable/route-path.png rename to public/media/quickstarts/gateway-over-airtable/route-path.png diff --git a/static/media/quickstarts/gateway-over-airtable/test-route.png b/public/media/quickstarts/gateway-over-airtable/test-route.png similarity index 100% rename from static/media/quickstarts/gateway-over-airtable/test-route.png rename to public/media/quickstarts/gateway-over-airtable/test-route.png diff --git a/static/media/quickstarts/gateway-over-salesforce/environment-variables.png b/public/media/quickstarts/gateway-over-salesforce/environment-variables.png similarity index 100% rename from static/media/quickstarts/gateway-over-salesforce/environment-variables.png rename to public/media/quickstarts/gateway-over-salesforce/environment-variables.png diff --git a/static/media/quickstarts/gateway-over-salesforce/function-picker.png b/public/media/quickstarts/gateway-over-salesforce/function-picker.png similarity index 100% rename from static/media/quickstarts/gateway-over-salesforce/function-picker.png rename to public/media/quickstarts/gateway-over-salesforce/function-picker.png diff --git a/static/media/quickstarts/gateway-over-salesforce/route-path.png b/public/media/quickstarts/gateway-over-salesforce/route-path.png similarity index 100% rename from static/media/quickstarts/gateway-over-salesforce/route-path.png rename to public/media/quickstarts/gateway-over-salesforce/route-path.png diff --git a/static/media/quickstarts/gateway-over-salesforce/test-route.png b/public/media/quickstarts/gateway-over-salesforce/test-route.png similarity index 100% rename from static/media/quickstarts/gateway-over-salesforce/test-route.png rename to public/media/quickstarts/gateway-over-salesforce/test-route.png diff --git a/static/media/quickstarts/instant-developer-portal/dev-portal-example.png b/public/media/quickstarts/instant-developer-portal/dev-portal-example.png similarity index 100% rename from static/media/quickstarts/instant-developer-portal/dev-portal-example.png rename to public/media/quickstarts/instant-developer-portal/dev-portal-example.png diff --git a/static/media/quickstarts/instant-developer-portal/dev-portal-link.png b/public/media/quickstarts/instant-developer-portal/dev-portal-link.png similarity index 100% rename from static/media/quickstarts/instant-developer-portal/dev-portal-link.png rename to public/media/quickstarts/instant-developer-portal/dev-portal-link.png diff --git a/static/media/quickstarts/per-customer-rate-limits/add-route.png b/public/media/quickstarts/per-customer-rate-limits/add-route.png similarity index 100% rename from static/media/quickstarts/per-customer-rate-limits/add-route.png rename to public/media/quickstarts/per-customer-rate-limits/add-route.png diff --git a/static/media/quickstarts/per-customer-rate-limits/rate-limit-policy.png b/public/media/quickstarts/per-customer-rate-limits/rate-limit-policy.png similarity index 100% rename from static/media/quickstarts/per-customer-rate-limits/rate-limit-policy.png rename to public/media/quickstarts/per-customer-rate-limits/rate-limit-policy.png diff --git a/static/media/readme/create-job.png b/public/media/readme/create-job.png old mode 100755 new mode 100644 similarity index 100% rename from static/media/readme/create-job.png rename to public/media/readme/create-job.png diff --git a/static/media/readme/create_review_app.png b/public/media/readme/create_review_app.png similarity index 100% rename from static/media/readme/create_review_app.png rename to public/media/readme/create_review_app.png diff --git a/static/media/readme/deployed.png b/public/media/readme/deployed.png similarity index 100% rename from static/media/readme/deployed.png rename to public/media/readme/deployed.png diff --git a/static/media/readme/job-settings.png b/public/media/readme/job-settings.png old mode 100755 new mode 100644 similarity index 100% rename from static/media/readme/job-settings.png rename to public/media/readme/job-settings.png diff --git a/static/media/readme/requested_deployment.png b/public/media/readme/requested_deployment.png similarity index 100% rename from static/media/readme/requested_deployment.png rename to public/media/readme/requested_deployment.png diff --git a/static/media/readme/structure.png b/public/media/readme/structure.png similarity index 100% rename from static/media/readme/structure.png rename to public/media/readme/structure.png diff --git a/static/media/runtime/path-matching/route-test-result.png b/public/media/runtime/path-matching/route-test-result.png similarity index 100% rename from static/media/runtime/path-matching/route-test-result.png rename to public/media/runtime/path-matching/route-test-result.png diff --git a/static/media/runtime/path-matching/route-tester.png b/public/media/runtime/path-matching/route-tester.png similarity index 100% rename from static/media/runtime/path-matching/route-tester.png rename to public/media/runtime/path-matching/route-tester.png diff --git a/static/media/scale.png b/public/media/scale.png similarity index 100% rename from static/media/scale.png rename to public/media/scale.png diff --git a/static/media/supabase-auth/copy-key.png b/public/media/supabase-auth/copy-key.png similarity index 100% rename from static/media/supabase-auth/copy-key.png rename to public/media/supabase-auth/copy-key.png diff --git a/static/media/supabase-auth/dev-portal-loaded.png b/public/media/supabase-auth/dev-portal-loaded.png similarity index 100% rename from static/media/supabase-auth/dev-portal-loaded.png rename to public/media/supabase-auth/dev-portal-loaded.png diff --git a/static/media/supabase-auth/dev-portal.png b/public/media/supabase-auth/dev-portal.png similarity index 100% rename from static/media/supabase-auth/dev-portal.png rename to public/media/supabase-auth/dev-portal.png diff --git a/static/media/supabase-auth/email.png b/public/media/supabase-auth/email.png similarity index 100% rename from static/media/supabase-auth/email.png rename to public/media/supabase-auth/email.png diff --git a/static/media/supabase-auth/initial-login.png b/public/media/supabase-auth/initial-login.png similarity index 100% rename from static/media/supabase-auth/initial-login.png rename to public/media/supabase-auth/initial-login.png diff --git a/static/media/supabase-auth/supabase-github-login.gif b/public/media/supabase-auth/supabase-github-login.gif similarity index 100% rename from static/media/supabase-auth/supabase-github-login.gif rename to public/media/supabase-auth/supabase-github-login.gif diff --git a/static/media/supabase-auth/supabase-login.gif b/public/media/supabase-auth/supabase-login.gif similarity index 100% rename from static/media/supabase-auth/supabase-login.gif rename to public/media/supabase-auth/supabase-login.gif diff --git a/static/media/supabase-auth/supabase-site-url.png b/public/media/supabase-auth/supabase-site-url.png similarity index 100% rename from static/media/supabase-auth/supabase-site-url.png rename to public/media/supabase-auth/supabase-site-url.png diff --git a/static/media/url-rewrite-handler-selection.png b/public/media/url-rewrite-handler-selection.png similarity index 100% rename from static/media/url-rewrite-handler-selection.png rename to public/media/url-rewrite-handler-selection.png diff --git a/static/media/user-zuplo-api.png b/public/media/user-zuplo-api.png similarity index 100% rename from static/media/user-zuplo-api.png rename to public/media/user-zuplo-api.png diff --git a/src/app/articles/node-modules/page.tsx b/src/app/articles/node-modules/page.tsx deleted file mode 100644 index 9886796c..00000000 --- a/src/app/articles/node-modules/page.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import { DocsLayout } from "@/components/DocsLayout"; -import { Bundle } from "@/lib/types"; -import { readFile } from "fs/promises"; -import { Metadata } from "next"; -import Link from "next/link"; -import { join } from "path"; - -export const metadata: Metadata = { - title: "Node Modules", -}; - -export default async function Page() { - const data = ( - (await readFile(join(process.cwd(), "./bundles.json"), "utf-8").then( - JSON.parse, - )) as { bundles: Bundle[] } - ).bundles.filter((bundle) => bundle.public); - - return ( - -

- Zuplo generally supports node modules, but to ensure the security and - performance of each API Gateway we must approve each module. This - process only takes a few hours so if you need something new please reach - out to use on twitter{" "} - @zuplo or through email{" "} - whatzup@zuplo.com -

- -

Below are the currently installed modules.

- - - - - - - - - - - {data.map((bundle) => ( - - - - - - ))} - -
ModuleVersionDescription
- - {bundle.name} - - {bundle.version}{bundle.description}
-
- ); -} diff --git a/src/app/handlers/page.tsx b/src/app/handlers/page.tsx index c6a92483..eb364ce2 100644 --- a/src/app/handlers/page.tsx +++ b/src/app/handlers/page.tsx @@ -40,6 +40,7 @@ export default async function Page() {
{handlers.map((item) => ( ))}
diff --git a/src/app/policies/page.tsx b/src/app/policies/page.tsx index ac8c3e76..b14d8803 100644 --- a/src/app/policies/page.tsx +++ b/src/app/policies/page.tsx @@ -51,6 +51,7 @@ export default async function Page() {
{policies.map((item) => ( ))}
diff --git a/src/build/navigation.mjs b/src/build/navigation.mjs index df08bed1..d4dc43fd 100644 --- a/src/build/navigation.mjs +++ b/src/build/navigation.mjs @@ -38,7 +38,7 @@ function buildNavSection(rawSection) { href: `/${item}`, }); } else { - const docPath = path.resolve(path.join("docs", `${item}.md`)); + const docPath = path.resolve(path.join("docs", `${item}.mdx`)); const docMd = fs.readFileSync(docPath, "utf8"); const { data } = matter(docMd); section.items.push({ diff --git a/src/components/Card.tsx b/src/components/Card.tsx index 2cccf090..32d1fb6a 100644 --- a/src/components/Card.tsx +++ b/src/components/Card.tsx @@ -4,13 +4,15 @@ interface Props { name: string; href: string; icon: string; + testID?: string; } -export const Card: React.FC = ({ name, href, icon }) => { +export const Card: React.FC = ({ name, href, icon, testID }) => { return (
{item.label}

)} - {index < breadcrumbItems.length - 1 && } + {index < breadcrumbItems.length - 1 && ( + + )}
))}
diff --git a/src/components/MobileNavigation.tsx b/src/components/MobileNavigation.tsx index 3e9cfd66..6c8e6aca 100644 --- a/src/components/MobileNavigation.tsx +++ b/src/components/MobileNavigation.tsx @@ -4,26 +4,10 @@ import { Dialog } from "@headlessui/react"; import Link from "next/link"; import { usePathname, useSearchParams } from "next/navigation"; import { Suspense, useCallback, useEffect, useState } from "react"; -import { Bars3Icon as MenuIcon } from "@heroicons/react/24/outline"; import LogoIcon from "./svgs/logo.svg"; import { Navigation } from "@/components/Navigation"; -import { ThemeSelector } from "@/components/ThemeSelector"; - -function CloseIcon(props: React.ComponentPropsWithoutRef<"svg">) { - return ( - - ); -} +import { MenuIcon, X as CloseIcon } from "lucide-react"; function CloseOnNavigation({ close }: { close: () => void }) { let pathname = usePathname(); @@ -83,7 +67,7 @@ export function MobileNavigation() { onClick={() => close()} aria-label="Close navigation" > - + diff --git a/src/components/MobileTableOfContents.tsx b/src/components/MobileTableOfContents.tsx index 172d8d17..843ad54e 100644 --- a/src/components/MobileTableOfContents.tsx +++ b/src/components/MobileTableOfContents.tsx @@ -3,7 +3,7 @@ import { Section } from "@/lib/types"; import { Listbox, Transition } from "@headlessui/react"; import clsx from "classnames"; -import { ChevronDownIcon, ChevronUpIcon } from "@heroicons/react/20/solid"; +import { ChevronDownIcon, ChevronUpIcon } from "lucide-react"; import Link from "next/link"; export function MobileTableOfContents({ diff --git a/src/components/PrevNextLinks.tsx b/src/components/PrevNextLinks.tsx index d8fa9551..3e9c5535 100644 --- a/src/components/PrevNextLinks.tsx +++ b/src/components/PrevNextLinks.tsx @@ -4,16 +4,9 @@ import { navigation } from "@/build/navigation.mjs"; import { useFindNavItemByLink } from "@/lib/hooks/useFindNavItemByLink"; import { NavCategory } from "@/lib/types"; import clsx from "classnames"; +import { ArrowLeftIcon, ArrowRightIcon } from "lucide-react"; import Link from "next/link"; -function ArrowIcon(props: React.ComponentPropsWithoutRef<"svg">) { - return ( - - ); -} - function PageLink({ label, href, @@ -38,12 +31,11 @@ function PageLink({ )} > {label} - + {dir === "previous" ? ( + + ) : ( + + )} diff --git a/src/components/Search.tsx b/src/components/Search.tsx index 8b48bf63..692ed4f9 100644 --- a/src/components/Search.tsx +++ b/src/components/Search.tsx @@ -11,6 +11,7 @@ import { } from "@algolia/autocomplete-core"; import { Dialog } from "@headlessui/react"; import clsx from "classnames"; +import { SearchIcon } from "lucide-react"; import { usePathname, useRouter, useSearchParams } from "next/navigation"; import { Fragment, @@ -33,14 +34,6 @@ type Autocomplete = AutocompleteApi< React.KeyboardEvent >; -function SearchIcon(props: React.ComponentPropsWithoutRef<"svg">) { - return ( - - ); -} - function useAutocomplete({ close, }: { @@ -257,7 +250,7 @@ const SearchInput = forwardRef< return (
- + - + Search diff --git a/src/components/mdx/BundlesTable.tsx b/src/components/mdx/BundlesTable.tsx new file mode 100644 index 00000000..339c6c04 --- /dev/null +++ b/src/components/mdx/BundlesTable.tsx @@ -0,0 +1,38 @@ +import React from "react"; +import Link from "next/link"; +import data from "../../../bundles.json"; + +const BundlesTable: React.FC<{ url: string }> = ({ url }) => { + return ( + + + + + + + + + + {data.bundles.map((bundle) => ( + + + + + + ))} + +
ModuleVersionDescription
+ + {bundle.name} + + {bundle.version}{bundle.description}
+ ); +}; + +export default BundlesTable; diff --git a/src/components/mdx/Callout.tsx b/src/components/mdx/Callout.tsx index 2594b7fa..ae7bb413 100644 --- a/src/components/mdx/Callout.tsx +++ b/src/components/mdx/Callout.tsx @@ -1,9 +1,9 @@ import { - ExclamationTriangleIcon, - InformationCircleIcon, - LightBulbIcon, - ShieldExclamationIcon, -} from "@heroicons/react/20/solid"; + AlertTriangleIcon, + InfoIcon, + LightbulbIcon, + ShieldAlertIcon, +} from "lucide-react"; type CalloutType = "note" | "tip" | "info" | "caution" | "danger"; @@ -24,10 +24,7 @@ const Note = ({ children, title }: Omit) => ( >
-

@@ -47,7 +44,7 @@ const Tip = ({ children, title }: Omit) => ( >
-