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.
-
-
-
-
- Module
- Version
- Description
-
-
-
- {data.map((bundle) => (
-
-
-
- {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 (
+
+
+
+ Module
+ Version
+ Description
+
+
+
+ {data.bundles.map((bundle) => (
+
+
+
+ {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) => (
>
-
@@ -70,10 +67,7 @@ const Info = ({ children, title }: Omit
) => (
>
-
+
@@ -93,7 +87,7 @@ const Caution = ({ children, title }: Omit) => (
>
-
@@ -116,7 +110,7 @@ const Danger = ({ children, title }: Omit
) => (
>
-
diff --git a/src/components/mdx/index.tsx b/src/components/mdx/index.tsx
index 3d4f9e45..d37b4a7a 100644
--- a/src/components/mdx/index.tsx
+++ b/src/components/mdx/index.tsx
@@ -1,4 +1,4 @@
-import { ChevronLeftIcon } from "@heroicons/react/24/outline";
+import { ChevronLeftIcon } from "lucide-react";
import FeaturePremiere from "./FeaturePremiere";
import Screenshot from "./Screenshot";
import YouTubeVideo from "./YouTubeVideo";
@@ -14,6 +14,8 @@ import {
SettingsTabIcon,
ShowIcon,
} from "./ui-icons";
+import BundlesTable from "@/components/mdx/BundlesTable";
+import GithubButton from "@/components/mdx/GithubButton";
const components = {
FeaturePremiere,
@@ -30,6 +32,8 @@ const components = {
ShowIcon,
GitHubIcon,
Screenshot,
+ BundlesTable,
+ GithubButton,
};
export default components;
diff --git a/src/components/mdx/ui-icons.tsx b/src/components/mdx/ui-icons.tsx
index 5a1d758d..9b5d7d9d 100644
--- a/src/components/mdx/ui-icons.tsx
+++ b/src/components/mdx/ui-icons.tsx
@@ -1,13 +1,14 @@
import {
- BoltIcon,
CogIcon,
EyeIcon,
- PresentationChartLineIcon,
- RectangleGroupIcon,
+ FileTextIcon,
+ LayoutTemplateIcon,
+ ListIcon,
+ PresentationIcon,
RssIcon,
-} from "@heroicons/react/24/outline";
+ ZapIcon,
+} from "lucide-react";
import { FC, PropsWithChildren } from "react";
-import { FileText, List } from "react-feather";
function SvgWrapper({ children }: PropsWithChildren) {
return (
@@ -19,13 +20,13 @@ function SvgWrapper({ children }: PropsWithChildren) {
export const CodeEditorTabIcon: FC = () => (
-
+
);
export const ApiTestConsoleTabIcon: FC = () => (
-
+
);
@@ -37,13 +38,13 @@ export const LiveLogsTabIcon: FC = () => (
export const DashboardTabIcon: FC = () => (
-
+
);
export const BuildStatusTabIcon: FC = () => (
-
+
);
@@ -55,7 +56,7 @@ export const SettingsTabIcon: FC = () => (
export const DeveloperPortalIcon: FC = () => (
-
+
);
diff --git a/src/lib/content.ts b/src/lib/content.ts
index 2c417ab8..166cfcc5 100644
--- a/src/lib/content.ts
+++ b/src/lib/content.ts
@@ -25,7 +25,7 @@ export async function getSlugContent
>({
slug: Array;
sourceDir: string;
}): Promise | undefined> {
- const fileName = `${slug.join("/")}.md`;
+ const fileName = `${slug.join("/")}.mdx`;
const filepath = path.join(
process.cwd(),
sourceDir,
@@ -54,10 +54,10 @@ export async function getSlugContent>({
export async function getAllContent>(options?: {
limit?: number;
}): Promise[]> {
- const contentFiles = await glob(`docs/**/*.md`);
+ const contentFiles = await glob(`docs/**/*.mdx`);
const results = await Promise.all(
contentFiles
- .filter((f) => f.endsWith(".md"))
+ .filter((f) => f.endsWith(".mdx"))
.sort()
.reverse()
.map(async (file) => {
@@ -69,9 +69,9 @@ export async function getAllContent>(options?: {
const result: Content = {
source: content,
data: data as Data,
- href: file.substring(5).replace(".md", ""),
+ href: file.substring(5).replace(".mdx", ""),
// Remove the /docs
- slug: file.substring(5).replace(".md", "").split("/"),
+ slug: file.substring(5).replace(".mdx", "").split("/"),
};
return result;
}),
diff --git a/src/lib/markdown/mdx.ts b/src/lib/markdown/mdx.ts
index 57c1403d..9599e077 100644
--- a/src/lib/markdown/mdx.ts
+++ b/src/lib/markdown/mdx.ts
@@ -209,10 +209,10 @@ function buildTableOfContents(nodes: (Element & { tagName: "h2" | "h3" })[]) {
}
})
.filter((h) => typeof h !== "undefined") as {
- id: string;
- title: string;
- level: 2 | 3;
- }[];
+ id: string;
+ title: string;
+ level: 2 | 3;
+ }[];
const toc: Section[] = [];
let previous: Section;