From b385007e44b410a2ef97aeb8bcc1667233031ed7 Mon Sep 17 00:00:00 2001 From: Alex Holovach Date: Thu, 2 Oct 2025 15:28:26 -0500 Subject: [PATCH] Drizzle ORM telemetry package --- .changeset/config.json | 14 + .changeset/tasty-llamas-end.md | 5 + .github/workflows/release.yml | 43 + .github/workflows/type-check.yml | 33 + .github/workflows/unit-test.yml | 36 + .gitignore | 5 + .node-version | 1 + .prettierignore | 3 + .vscode/launch.json | 15 + .vscode/settings.json | 4 + README.md | 6 +- images/otel-drizzle-trace.png | Bin 0 -> 267329 bytes package.json | 30 + packages/otel-drizzle/.changeset/README.md | 8 + packages/otel-drizzle/.changeset/config.json | 11 + .../.changeset/initial-release.md | 11 + packages/otel-drizzle/CHANGELOG.md | 31 + LICENSE => packages/otel-drizzle/LICENSE | 2 +- packages/otel-drizzle/README.md | 74 + packages/otel-drizzle/build.ts | 70 + .../kubiks-otel-drizzle-1.0.0.tgz | Bin 0 -> 8755 bytes packages/otel-drizzle/package.json | 59 + packages/otel-drizzle/src/index.test.ts | 298 ++ packages/otel-drizzle/src/index.ts | 298 ++ packages/otel-drizzle/tsconfig.json | 21 + pnpm-lock.yaml | 3887 +++++++++++++++++ pnpm-workspace.yaml | 4 + tsconfig.json | 22 + turbo.json | 46 + 29 files changed, 5035 insertions(+), 2 deletions(-) create mode 100644 .changeset/config.json create mode 100644 .changeset/tasty-llamas-end.md create mode 100644 .github/workflows/release.yml create mode 100644 .github/workflows/type-check.yml create mode 100644 .github/workflows/unit-test.yml create mode 100644 .gitignore create mode 100644 .node-version create mode 100644 .prettierignore create mode 100644 .vscode/launch.json create mode 100644 .vscode/settings.json create mode 100644 images/otel-drizzle-trace.png create mode 100644 package.json create mode 100644 packages/otel-drizzle/.changeset/README.md create mode 100644 packages/otel-drizzle/.changeset/config.json create mode 100644 packages/otel-drizzle/.changeset/initial-release.md create mode 100644 packages/otel-drizzle/CHANGELOG.md rename LICENSE => packages/otel-drizzle/LICENSE (97%) create mode 100644 packages/otel-drizzle/README.md create mode 100644 packages/otel-drizzle/build.ts create mode 100644 packages/otel-drizzle/kubiks-otel-drizzle-1.0.0.tgz create mode 100644 packages/otel-drizzle/package.json create mode 100644 packages/otel-drizzle/src/index.test.ts create mode 100644 packages/otel-drizzle/src/index.ts create mode 100644 packages/otel-drizzle/tsconfig.json create mode 100644 pnpm-lock.yaml create mode 100644 pnpm-workspace.yaml create mode 100644 tsconfig.json create mode 100644 turbo.json diff --git a/.changeset/config.json b/.changeset/config.json new file mode 100644 index 0000000..6c85e3e --- /dev/null +++ b/.changeset/config.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://unpkg.com/@changesets/config@3.0.0/schema.json", + "changelog": ["@changesets/changelog-github", { "repo": "kubiks-inc/otel" }], + "commit": false, + "fixed": [], + "linked": [], + "access": "public", + "baseBranch": "main", + "updateInternalDependencies": "patch", + "ignore": [], + "snapshot": { + "useCalculatedVersion": true + } +} diff --git a/.changeset/tasty-llamas-end.md b/.changeset/tasty-llamas-end.md new file mode 100644 index 0000000..f7193f2 --- /dev/null +++ b/.changeset/tasty-llamas-end.md @@ -0,0 +1,5 @@ +--- +"@kubiks/otel-drizzle": patch +--- + +update package.json diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..b864377 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,43 @@ +name: Release + +on: + push: + branches: + - main + workflow_dispatch: + +concurrency: ${{ github.workflow }}-${{ github.ref }} + +jobs: + release: + name: Release + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + token: ${{ secrets.PAT_TOKEN }} + + - name: Setup pnpm + uses: pnpm/action-setup@v2 + + - uses: actions/setup-node@v3 + with: + node-version-file: ".node-version" + cache: "pnpm" + + - name: Install Dependencies + run: pnpm install + + - name: Create Release Pull Request or Publish to npm + id: changesets + uses: changesets/action@v1 + with: + publish: pnpm release + version: pnpm version-packages + setupGitUser: true + createGithubReleases: true + commit: Version Packages + env: + GITHUB_TOKEN: ${{ secrets.PAT_TOKEN }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.github/workflows/type-check.yml b/.github/workflows/type-check.yml new file mode 100644 index 0000000..b4c1497 --- /dev/null +++ b/.github/workflows/type-check.yml @@ -0,0 +1,33 @@ +name: Type Check + +on: + push: + branches: [main, v1.x] + pull_request: + branches: [main, v1.x] + +jobs: + test: + name: "type-check" + runs-on: ubuntu-latest + strategy: + matrix: + node-version: [18.x] + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Setup pnpm + uses: pnpm/action-setup@v2 + + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + cache: "pnpm" + + - name: Install dependencies + run: pnpm install + + - name: Run type-check + run: pnpm type-check diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml new file mode 100644 index 0000000..cbf28b7 --- /dev/null +++ b/.github/workflows/unit-test.yml @@ -0,0 +1,36 @@ +name: Unit Tests + +on: + push: + branches: [main, v1.x] + pull_request: + branches: [main, v1.x] + +jobs: + test: + name: "unit tests" + runs-on: ubuntu-latest + strategy: + matrix: + node-version: [18.x] + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Setup pnpm + uses: pnpm/action-setup@v2 + + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + cache: "pnpm" + + - name: Install dependencies + run: pnpm install + + - name: Build + run: pnpm build + + - name: Run unit tests + run: pnpm unit-test diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7a06481 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +node_modules +.turbo +tsconfig.tsbuildinfo +dist +dist-site diff --git a/.node-version b/.node-version new file mode 100644 index 0000000..a9d0873 --- /dev/null +++ b/.node-version @@ -0,0 +1 @@ +18.19.0 diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..888005b --- /dev/null +++ b/.prettierignore @@ -0,0 +1,3 @@ +dist +pnpm-lock.yaml +pnpm-workspace.yaml diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..0db3aad --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,15 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Sample app", + "type": "node-terminal", + "request": "launch", + "cwd": "${workspaceFolder}/apps/sample", + "command": "pnpm dev" + } + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..1b6457c --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "editor.formatOnSave": true, + "editor.defaultFormatter": "esbenp.prettier-vscode" +} diff --git a/README.md b/README.md index 1e1c6c0..435c5a3 100644 --- a/README.md +++ b/README.md @@ -1 +1,5 @@ -# otel \ No newline at end of file +# OpenTelemetry for Next.js ecosystem + +The released packages: + +- [`@kubiks/otel-drizzle`](./packages/otel-drizzle/README.md) diff --git a/images/otel-drizzle-trace.png b/images/otel-drizzle-trace.png new file mode 100644 index 0000000000000000000000000000000000000000..5dc2888493d15551b36b5cf1170d117c2d0e4277 GIT binary patch literal 267329 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

7)ySUwm_UoSkG;C;b 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/TZ2_MBeC#WmMNXr609sy` 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 z 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" + }, + "type": "module", + "devDependencies": { + "@changesets/changelog-github": "^0.5.1", + "@changesets/cli": "^2.27.1", + "prettier": "^3.1.1", + "turbo": "^1.11.3" + } +} diff --git a/packages/otel-drizzle/.changeset/README.md b/packages/otel-drizzle/.changeset/README.md new file mode 100644 index 0000000..e5b6d8d --- /dev/null +++ b/packages/otel-drizzle/.changeset/README.md @@ -0,0 +1,8 @@ +# Changesets + +Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works +with multi-package repos, or single-package repos to help you version and publish your code. You can +find the full documentation for it [in our repository](https://github.com/changesets/changesets) + +We have a quick list of common questions to get you started engaging with this project in +[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md) diff --git a/packages/otel-drizzle/.changeset/config.json b/packages/otel-drizzle/.changeset/config.json new file mode 100644 index 0000000..252b454 --- /dev/null +++ b/packages/otel-drizzle/.changeset/config.json @@ -0,0 +1,11 @@ +{ + "$schema": "https://unpkg.com/@changesets/config@3.0.0/schema.json", + "changelog": ["@changesets/changelog-github", { "repo": "kubiks/otel" }], + "commit": false, + "fixed": [], + "linked": [], + "access": "public", + "baseBranch": "main", + "updateInternalDependencies": "patch", + "ignore": [] +} diff --git a/packages/otel-drizzle/.changeset/initial-release.md b/packages/otel-drizzle/.changeset/initial-release.md new file mode 100644 index 0000000..9658f4a --- /dev/null +++ b/packages/otel-drizzle/.changeset/initial-release.md @@ -0,0 +1,11 @@ +--- +"@kubiks/otel-drizzle": major +--- + +Initial release of @kubiks/otel-drizzle - OpenTelemetry instrumentation for Drizzle ORM + +- Automatic span creation for all database queries +- Support for PostgreSQL, MySQL, and SQLite +- Configurable query text capture and truncation +- Full OpenTelemetry semantic conventions support +- Zero-configuration setup with one line of code diff --git a/packages/otel-drizzle/CHANGELOG.md b/packages/otel-drizzle/CHANGELOG.md new file mode 100644 index 0000000..f9f277a --- /dev/null +++ b/packages/otel-drizzle/CHANGELOG.md @@ -0,0 +1,31 @@ +# @kubiks/otel-drizzle + +## 2.0.0 + +### Major Changes + +- [`7abe73d`](https://github.com/kubiks-inc/otel/commit/7abe73d58ed133fae975684e3493ea83218dde97) Thanks [@alex-holovach](https://github.com/alex-holovach)! - Initial release of @kubiks/otel-drizzle - OpenTelemetry instrumentation for Drizzle ORM + + - Automatic span creation for all database queries + - Support for PostgreSQL, MySQL, and SQLite + - Configurable query text capture and truncation + - Full OpenTelemetry semantic conventions support + - Zero-configuration setup with one line of code + +## 1.0.0 + +### Major Changes + +- Initial release of Drizzle ORM instrumentation package +- Automatic tracing for all Drizzle database queries +- Support for PostgreSQL, MySQL, and SQLite +- Configurable query text capture with sanitization +- Full OpenTelemetry semantic conventions compliance +- Comprehensive test coverage + +### Features + +- Network peer attributes (`net.peer.name` and `net.peer.port`) for better observability +- Configurable database connection information in spans +- Proper span status codes (OK/ERROR) following OpenTelemetry standards +- Exception recording with full stack traces diff --git a/LICENSE b/packages/otel-drizzle/LICENSE similarity index 97% rename from LICENSE rename to packages/otel-drizzle/LICENSE index f1d08e9..55f20b0 100644 --- a/LICENSE +++ b/packages/otel-drizzle/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2023 Vercel +Copyright (c) 2025 Kubiks Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/packages/otel-drizzle/README.md b/packages/otel-drizzle/README.md new file mode 100644 index 0000000..cbcbb82 --- /dev/null +++ b/packages/otel-drizzle/README.md @@ -0,0 +1,74 @@ +# @kubiks/otel-drizzle + +OpenTelemetry instrumentation for [Drizzle ORM](https://orm.drizzle.team/). Add distributed tracing to your database queries with a single line of code. + +## Installation + +```bash +npm install @kubiks/otel-drizzle +# or +pnpm add @kubiks/otel-drizzle +# or +yarn add @kubiks/otel-drizzle +``` + +**Peer Dependencies:** `@opentelemetry/api` >= 1.9.0, `drizzle-orm` >= 0.28.0 + +## Usage + +Simply wrap your Drizzle client with `instrumentDrizzle()`: + +```typescript +import { drizzle } from "drizzle-orm/node-postgres"; +import { Pool } from "pg"; +import { instrumentDrizzle } from "@kubiks/otel-drizzle"; + +const pool = new Pool({ connectionString: process.env.DATABASE_URL }); +const db = instrumentDrizzle(drizzle(pool)); + +// That's it! All queries are now traced automatically +const users = await db.select().from(usersTable); +``` + +### Optional Configuration + +```typescript +instrumentDrizzle(db, { + dbSystem: "postgresql", // Database type (default: 'postgresql') + dbName: "myapp", // Database name for spans + captureQueryText: true, // Include SQL in traces (default: true) + maxQueryTextLength: 1000, // Max SQL length (default: 1000) +}); +``` + +### Works with Any Database + +```typescript +// PostgreSQL +import { drizzle } from "drizzle-orm/node-postgres"; +const db = instrumentDrizzle(drizzle(pool)); + +// MySQL +import { drizzle } from "drizzle-orm/mysql2"; +const db = instrumentDrizzle(drizzle(connection), { dbSystem: "mysql" }); + +// SQLite +import { drizzle } from "drizzle-orm/better-sqlite3"; +const db = instrumentDrizzle(drizzle(sqlite), { dbSystem: "sqlite" }); +``` + +## What You Get + +Each database query automatically creates a span with: + +- **Span name**: `drizzle.select`, `drizzle.insert`, `drizzle.update`, etc. +- **SQL operation**: Extracted from query (SELECT, INSERT, UPDATE, DELETE) +- **Full SQL query**: Captured and sanitized (configurable) +- **Error tracking**: Exceptions are recorded with stack traces +- **Database metadata**: System, name, host, and port information + +Follows [OpenTelemetry semantic conventions](https://opentelemetry.io/docs/specs/semconv/database/) for database instrumentation. + +## License + +MIT diff --git a/packages/otel-drizzle/build.ts b/packages/otel-drizzle/build.ts new file mode 100644 index 0000000..bb5f24f --- /dev/null +++ b/packages/otel-drizzle/build.ts @@ -0,0 +1,70 @@ +import { stat } from "node:fs/promises"; +import type { Plugin } from "esbuild"; +import { build } from "esbuild"; + +const MINIFY = true; +const SOURCEMAP = true; + +const MAX_SIZE = 50_000; // 50KB max for instrumentation package + +type ExternalPluginFactory = (external: string[]) => Plugin; +const externalCjsToEsmPlugin: ExternalPluginFactory = (external) => ({ + name: "external", + setup(builder): void { + const escape = (text: string): string => + `^${text.replace(/[-/\\^$*+?.()|[\]{}]/g, "\\$&")}$`; + const filter = new RegExp(external.map(escape).join("|")); + builder.onResolve({ filter: /.*/, namespace: "external" }, (args) => ({ + path: args.path, + external: true, + })); + builder.onResolve({ filter }, (args) => ({ + path: args.path, + namespace: "external", + })); + builder.onLoad({ filter: /.*/, namespace: "external" }, (args) => ({ + contents: `export * from ${JSON.stringify(args.path)}`, + })); + }, +}); + +/** Adds support for require, __filename, and __dirname to ESM / Node. */ +const esmNodeSupportBanner = { + js: `import { fileURLToPath } from 'url'; +import { createRequire as topLevelCreateRequire } from 'module'; +import _nPath from 'path' +const require = topLevelCreateRequire(import.meta.url); +const __filename = fileURLToPath(import.meta.url); +const __dirname = _nPath.dirname(__filename);`, +}; + +const peerDependencies = ["@opentelemetry/api", "drizzle-orm"]; + +async function buildAll(): Promise { + await build({ + platform: "node", + format: "esm", + splitting: false, + entryPoints: ["src/index.ts"], + outdir: "dist", + bundle: true, + minify: MINIFY, + sourcemap: SOURCEMAP, + banner: esmNodeSupportBanner, + external: peerDependencies, + plugins: [externalCjsToEsmPlugin(peerDependencies)], + }); + + // Check max size. + const outputFile = "dist/index.js"; + const s = await stat(outputFile); + if (s.size > MAX_SIZE) { + // eslint-disable-next-line no-console + console.error( + `${outputFile}: the size of ${s.size} is over the maximum allowed size of ${MAX_SIZE}`, + ); + process.exit(1); + } +} + +void buildAll(); diff --git a/packages/otel-drizzle/kubiks-otel-drizzle-1.0.0.tgz b/packages/otel-drizzle/kubiks-otel-drizzle-1.0.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..30eb6c0eebd8b286e42256668f1f1ce1c0243d8b GIT binary patch literal 8755 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.6.0" + }, + "scripts": { + "build": "pnpm clean && pnpm build-only && pnpm build-types", + "build-only": "pnpm tsx build.ts", + "build-types": "tsc --noEmit false --declaration --emitDeclarationOnly --stripInternal --declarationDir dist/types src/index.ts", + "clean": "rimraf dist", + "prepublishOnly": "pnpm build", + "type-check": "tsc --noEmit", + "unit-test": "vitest --run", + "unit-test-watch": "vitest" + }, + "dependencies": {}, + "devDependencies": { + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/sdk-trace-base": "^2.1.0", + "@types/node": "18.15.11", + "@types/pg": "^8.11.10", + "drizzle-orm": "^0.36.4", + "esbuild": "^0.19.4", + "postgres": "^3.4.5", + "rimraf": "3.0.2", + "tsx": "^4.6.2", + "typescript": "^5", + "vitest": "0.33.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.9.0 <2.0.0", + "drizzle-orm": ">=0.28.0" + } +} diff --git a/packages/otel-drizzle/src/index.test.ts b/packages/otel-drizzle/src/index.test.ts new file mode 100644 index 0000000..8b8bda1 --- /dev/null +++ b/packages/otel-drizzle/src/index.test.ts @@ -0,0 +1,298 @@ +import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; +import { SpanStatusCode, trace } from "@opentelemetry/api"; +import { + BasicTracerProvider, + InMemorySpanExporter, + SimpleSpanProcessor, +} from "@opentelemetry/sdk-trace-base"; +import { instrumentDrizzle, type InstrumentDrizzleConfig } from "./index"; + +interface MockDrizzleClient { + query: (...args: any[]) => unknown; +} + +describe("instrumentDrizzle", () => { + let provider: BasicTracerProvider; + let exporter: InMemorySpanExporter; + + beforeEach(() => { + exporter = new InMemorySpanExporter(); + provider = new BasicTracerProvider({ + spanProcessors: [new SimpleSpanProcessor(exporter)], + }); + trace.setGlobalTracerProvider(provider); + }); + + afterEach(async () => { + await provider.shutdown(); + exporter.reset(); + trace.disable(); + }); + + it("wraps the query method only once", () => { + const client: MockDrizzleClient = { + query: vi.fn(), + }; + + const instrumented = instrumentDrizzle(client); + + expect(instrumented.query).not.toBeUndefined(); + const wrappedQuery = instrumented.query; + + instrumentDrizzle(client); + + expect(instrumented.query).toBe(wrappedQuery); + }); + + it("records a successful query", async () => { + const client: MockDrizzleClient = { + query: vi.fn(() => Promise.resolve({ rows: [{ id: 1 }] })), + }; + + instrumentDrizzle(client); + + const result = await client.query("select 1"); + expect(result).toEqual({ rows: [{ id: 1 }] }); + + const spans = exporter.getFinishedSpans(); + expect(spans).toHaveLength(1); + + const span = spans[0]; + if (!span) { + throw new Error("Expected a recorded span"); + } + expect(span.name).toBe("drizzle.select"); + expect(span.attributes["db.statement"]).toBe("select 1"); + expect(span.attributes["db.operation"]).toBe("SELECT"); + expect(span.attributes["db.system"]).toBe("postgresql"); + expect(span.status.code).toBe(SpanStatusCode.OK); + }); + + it("records errors and propagates them", async () => { + const error = new Error("boom"); + const client: MockDrizzleClient = { + query: vi.fn(() => Promise.reject(error)), + }; + + instrumentDrizzle(client); + + await expect(client.query("select 1" as unknown)).rejects.toThrow(error); + + const spans = exporter.getFinishedSpans(); + expect(spans).toHaveLength(1); + + const span = spans[0]; + if (!span) { + throw new Error("Expected a recorded span"); + } + expect(span.status.code).toBe(SpanStatusCode.ERROR); + expect(span.events.some((event) => event.name === "exception")).toBe(true); + }); + + it("supports callback-based queries", () => { + return new Promise((resolve) => { + const client: MockDrizzleClient = { + query: vi.fn((query: unknown, cb: (err: unknown, res: unknown) => void) => { + cb(null, { ok: true }); + return undefined; + }), + }; + + instrumentDrizzle(client); + + const returnValue = client.query("select 1", (err: unknown, result: unknown) => { + expect(err).toBeNull(); + expect(result).toEqual({ ok: true }); + + const spans = exporter.getFinishedSpans(); + expect(spans).toHaveLength(1); + resolve(); + }); + + expect(returnValue).toBeUndefined(); + }); + }); + + it("respects custom configuration", async () => { + const client: MockDrizzleClient = { + query: vi.fn(() => Promise.resolve({ rows: [] })), + }; + + const config: InstrumentDrizzleConfig = { + dbSystem: "mysql", + dbName: "test_db", + captureQueryText: true, + }; + + instrumentDrizzle(client, config); + + await client.query("SELECT * FROM users"); + + const spans = exporter.getFinishedSpans(); + expect(spans).toHaveLength(1); + + const span = spans[0]; + if (!span) { + throw new Error("Expected a recorded span"); + } + expect(span.attributes["db.system"]).toBe("mysql"); + expect(span.attributes["db.name"]).toBe("test_db"); + expect(span.attributes["db.statement"]).toBe("SELECT * FROM users"); + }); + + it("includes network peer attributes when configured", async () => { + const client: MockDrizzleClient = { + query: vi.fn(() => Promise.resolve({ rows: [] })), + }; + + instrumentDrizzle(client, { + peerName: 'db.example.com', + peerPort: 5432, + }); + + await client.query("SELECT 1"); + + const spans = exporter.getFinishedSpans(); + expect(spans).toHaveLength(1); + + const span = spans[0]; + if (!span) { + throw new Error("Expected a recorded span"); + } + + expect(span.attributes["net.peer.name"]).toBe("db.example.com"); + expect(span.attributes["net.peer.port"]).toBe(5432); + }); + + it("truncates long query text", async () => { + const client: MockDrizzleClient = { + query: vi.fn(() => Promise.resolve({ rows: [] })), + }; + + const longQuery = `SELECT ${"a, ".repeat(1000)}b FROM table`; + + instrumentDrizzle(client, { maxQueryTextLength: 50 }); + + await client.query(longQuery); + + const spans = exporter.getFinishedSpans(); + const span = spans[0]; + if (!span) { + throw new Error("Expected a recorded span"); + } + + const statement = span.attributes["db.statement"] as string; + expect(statement.length).toBe(53); // 50 + "..." + expect(statement.endsWith("...")).toBe(true); + }); + + it("handles query objects with sql property", async () => { + const client: MockDrizzleClient = { + query: vi.fn(() => Promise.resolve({ rows: [] })), + }; + + instrumentDrizzle(client); + + await client.query({ sql: "INSERT INTO users VALUES ($1)", params: ["test"] }); + + const spans = exporter.getFinishedSpans(); + const span = spans[0]; + if (!span) { + throw new Error("Expected a recorded span"); + } + + expect(span.name).toBe("drizzle.insert"); + expect(span.attributes["db.operation"]).toBe("INSERT"); + expect(span.attributes["db.statement"]).toBe("INSERT INTO users VALUES ($1)"); + }); + + it("handles query objects with text property", async () => { + const client: MockDrizzleClient = { + query: vi.fn(() => Promise.resolve({ rows: [] })), + }; + + instrumentDrizzle(client); + + await client.query({ text: "UPDATE users SET name = $1", values: ["test"] }); + + const spans = exporter.getFinishedSpans(); + const span = spans[0]; + if (!span) { + throw new Error("Expected a recorded span"); + } + + expect(span.name).toBe("drizzle.update"); + expect(span.attributes["db.operation"]).toBe("UPDATE"); + }); + + it("does not capture query text when disabled", async () => { + const client: MockDrizzleClient = { + query: vi.fn(() => Promise.resolve({ rows: [] })), + }; + + instrumentDrizzle(client, { captureQueryText: false }); + + await client.query("SELECT * FROM users"); + + const spans = exporter.getFinishedSpans(); + const span = spans[0]; + if (!span) { + throw new Error("Expected a recorded span"); + } + + expect(span.attributes["db.statement"]).toBeUndefined(); + expect(span.attributes["db.operation"]).toBe("SELECT"); + }); + + it("handles synchronous errors", () => { + const error = new Error("sync error"); + const client: MockDrizzleClient = { + query: vi.fn(() => { + throw error; + }), + }; + + instrumentDrizzle(client); + + expect(() => client.query("SELECT 1")).toThrow(error); + + const spans = exporter.getFinishedSpans(); + expect(spans).toHaveLength(1); + expect(spans[0]?.status.code).toBe(SpanStatusCode.ERROR); + }); + + it("handles callback errors", () => { + return new Promise((resolve) => { + const error = new Error("callback error"); + const client: MockDrizzleClient = { + query: vi.fn((query: unknown, cb: (err: unknown, res: unknown) => void) => { + cb(error, null); + return undefined; + }), + }; + + instrumentDrizzle(client); + + client.query("SELECT 1", (err: unknown) => { + expect(err).toBe(error); + + const spans = exporter.getFinishedSpans(); + expect(spans).toHaveLength(1); + expect(spans[0]?.status.code).toBe(SpanStatusCode.ERROR); + resolve(); + }); + }); + }); + + it("returns client unchanged if query is not a function", () => { + const client = { query: "not a function" } as any; + const result = instrumentDrizzle(client); + expect(result).toBe(client); + expect(result.query).toBe("not a function"); + }); + + it("returns client unchanged if client is null", () => { + const result = instrumentDrizzle(null as any); + expect(result).toBeNull(); + }); +}); diff --git a/packages/otel-drizzle/src/index.ts b/packages/otel-drizzle/src/index.ts new file mode 100644 index 0000000..d6ed67c --- /dev/null +++ b/packages/otel-drizzle/src/index.ts @@ -0,0 +1,298 @@ +import { + context, + SpanKind, + SpanStatusCode, + trace, + type Span, +} from "@opentelemetry/api"; + +const DEFAULT_TRACER_NAME = "@kubiks/otel-drizzle"; +const DEFAULT_DB_SYSTEM = "postgresql"; +const INSTRUMENTED_FLAG = "__kubiksOtelDrizzleInstrumented" as const; + +// Semantic conventions for database attributes +export const SEMATTRS_DB_SYSTEM = "db.system"; +export const SEMATTRS_DB_OPERATION = "db.operation"; +export const SEMATTRS_DB_STATEMENT = "db.statement"; +export const SEMATTRS_DB_NAME = "db.name"; + +// Semantic conventions for network attributes +export const SEMATTRS_NET_PEER_NAME = "net.peer.name"; +export const SEMATTRS_NET_PEER_PORT = "net.peer.port"; + +type QueryCallback = (error: unknown, result: unknown) => void; + +type QueryFunction = (...args: unknown[]) => unknown; + +interface DrizzleClientLike { + query: QueryFunction; + [INSTRUMENTED_FLAG]?: true; +} + +/** + * Configuration options for Drizzle instrumentation. + */ +export interface InstrumentDrizzleConfig { + /** + * Custom tracer name. Defaults to "\@kubiks/otel-drizzle". + */ + tracerName?: string; + + /** + * Database system identifier (e.g., "postgresql", "mysql", "sqlite"). + * Defaults to "postgresql". + */ + dbSystem?: string; + + /** + * Database name to include in spans. + */ + dbName?: string; + + /** + * Whether to capture full SQL query text in spans. + * Defaults to true. + */ + captureQueryText?: boolean; + + /** + * Maximum length for captured query text. Queries longer than this + * will be truncated. Defaults to 1000 characters. + */ + maxQueryTextLength?: number; + + /** + * Remote hostname or IP address of the database server. + * Example: "db.example.com" or "192.168.1.100" + */ + peerName?: string; + + /** + * Remote port number of the database server. + * Example: 5432 for PostgreSQL, 3306 for MySQL + */ + peerPort?: number; +} + +/** + * Extracts SQL query text from various query argument formats. + */ +function extractQueryText(queryArg: unknown): string | undefined { + if (typeof queryArg === "string") { + return queryArg; + } + if (queryArg && typeof queryArg === "object") { + // PostgreSQL-style query object + if (typeof (queryArg as { text?: unknown }).text === "string") { + return (queryArg as { text: string }).text; + } + // MySQL/generic-style query object + if (typeof (queryArg as { sql?: unknown }).sql === "string") { + return (queryArg as { sql: string }).sql; + } + // Drizzle SQL object + if ( + typeof (queryArg as { queryChunks?: unknown }).queryChunks === "object" + ) { + // Drizzle query objects may have complex structure, try to extract meaningful info + const drizzleQuery = queryArg as Record; + if (typeof drizzleQuery.sql === "string") { + return drizzleQuery.sql; + } + } + } + return undefined; +} + +/** + * Sanitizes and truncates query text for safe inclusion in spans. + */ +function sanitizeQueryText(queryText: string, maxLength: number): string { + if (queryText.length <= maxLength) { + return queryText; + } + return `${queryText.substring(0, maxLength)}...`; +} + +/** + * Extracts the SQL operation (SELECT, INSERT, etc.) from query text. + */ +function extractOperation(queryText: string): string | undefined { + const trimmed = queryText.trimStart(); + const match = /^(?\w+)/u.exec(trimmed); + return match?.groups?.op?.toUpperCase(); +} + +/** + * Finalizes a span with status, timing, and optional error. + */ +function finalizeSpan(span: Span, error?: unknown): void { + if (error) { + if (error instanceof Error) { + span.recordException(error); + } else { + span.recordException(new Error(String(error))); + } + span.setStatus({ code: SpanStatusCode.ERROR }); + } else { + span.setStatus({ code: SpanStatusCode.OK }); + } + span.end(); +} + +/** + * Instruments a Drizzle database client with OpenTelemetry tracing. + * + * This function wraps the client's `query` method to automatically create + * spans for each database operation. It supports both promise-based and + * callback-based query patterns. + * + * The instrumentation is idempotent - calling it multiple times on the same + * client will only instrument it once. + * + * @typeParam TClient - The type of the Drizzle client + * @param client - The Drizzle client instance to instrument + * @param config - Optional configuration for instrumentation behavior + * @returns The instrumented client (same instance, modified in place) + * + * @example + * ```typescript + * import { drizzle } from 'drizzle-orm/node-postgres'; + * import { Pool } from 'pg'; + * import { instrumentDrizzle } from '@kubiks/otel-drizzle'; + * + * const pool = new Pool({ connectionString: process.env.DATABASE_URL }); + * const db = drizzle(pool); + * + * // Instrument with defaults + * instrumentDrizzle(db); + * + * // Or with custom configuration + * instrumentDrizzle(db, { + * dbSystem: 'postgresql', + * dbName: 'myapp', + * captureQueryText: true, + * maxQueryTextLength: 500, + * peerName: 'db.example.com', + * peerPort: 5432, + * }); + * ``` + */ +export function instrumentDrizzle( + client: TClient, + config?: InstrumentDrizzleConfig, +): TClient { + if (!client) { + return client; + } + if (typeof client.query !== "function") { + return client; + } + + if (client[INSTRUMENTED_FLAG]) { + return client; + } + + const { + tracerName = DEFAULT_TRACER_NAME, + dbSystem = DEFAULT_DB_SYSTEM, + dbName, + captureQueryText = true, + maxQueryTextLength = 1000, + peerName, + peerPort, + } = config ?? {}; + + const tracer = trace.getTracer(tracerName); + const originalQuery = client.query; + + const instrumentedQuery: QueryFunction = function instrumented( + this: unknown, + ...incomingArgs: unknown[] + ) { + const args = [...incomingArgs]; + let callback: QueryCallback | undefined; + + // Detect callback pattern + if (typeof args[args.length - 1] === "function") { + callback = args.pop() as QueryCallback; + } + + // Extract query information + const queryText = extractQueryText(args[0]); + const operation = queryText ? extractOperation(queryText) : undefined; + const spanName = operation + ? `drizzle.${operation.toLowerCase()}` + : "drizzle.query"; + + // Start span + const span = tracer.startSpan(spanName, { kind: SpanKind.CLIENT }); + span.setAttribute(SEMATTRS_DB_SYSTEM, dbSystem); + + if (operation) { + span.setAttribute(SEMATTRS_DB_OPERATION, operation); + } + + if (dbName) { + span.setAttribute(SEMATTRS_DB_NAME, dbName); + } + + if (captureQueryText && queryText !== undefined) { + const sanitized = sanitizeQueryText(queryText, maxQueryTextLength); + span.setAttribute(SEMATTRS_DB_STATEMENT, sanitized); + } + + if (peerName) { + span.setAttribute(SEMATTRS_NET_PEER_NAME, peerName); + } + + if (peerPort) { + span.setAttribute(SEMATTRS_NET_PEER_PORT, peerPort); + } + + const activeContext = trace.setSpan(context.active(), span); + + // Callback-based pattern + if (callback) { + return context.with(activeContext, () => { + const wrappedCallback: QueryCallback = (err, result) => { + finalizeSpan(span, err); + if (callback) { + callback(err, result); + } + }; + + try { + return originalQuery.apply(this, [...args, wrappedCallback]); + } catch (error) { + finalizeSpan(span, error); + throw error; + } + }); + } + + // Promise-based pattern + return context.with(activeContext, () => { + try { + const result = originalQuery.apply(this, args); + return Promise.resolve(result) + .then((value) => { + finalizeSpan(span); + return value; + }) + .catch((error) => { + finalizeSpan(span, error); + throw error; + }); + } catch (error) { + finalizeSpan(span, error); + throw error; + } + }); + }; + + client[INSTRUMENTED_FLAG] = true; + client.query = instrumentedQuery; + + return client; +} diff --git a/packages/otel-drizzle/tsconfig.json b/packages/otel-drizzle/tsconfig.json new file mode 100644 index 0000000..9785408 --- /dev/null +++ b/packages/otel-drizzle/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "target": "ES2020", + "module": "ESNext", + "moduleResolution": "bundler", + "lib": ["ES2020"], + "outDir": "dist", + "declaration": true, + "declarationMap": true, + "sourceMap": true, + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "incremental": true, + "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json" + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist", "**/*.test.ts"] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..e1bb4cf --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,3887 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@changesets/changelog-github': + specifier: ^0.5.1 + version: 0.5.1 + '@changesets/cli': + specifier: ^2.27.1 + version: 2.27.1 + prettier: + specifier: ^3.1.1 + version: 3.1.1 + turbo: + specifier: ^1.11.3 + version: 1.11.3 + + packages/otel-drizzle: + devDependencies: + '@opentelemetry/api': + specifier: ^1.9.0 + version: 1.9.0 + '@opentelemetry/sdk-trace-base': + specifier: ^2.1.0 + version: 2.1.0(@opentelemetry/api@1.9.0) + '@types/node': + specifier: 18.15.11 + version: 18.15.11 + '@types/pg': + specifier: ^8.11.10 + version: 8.15.5 + drizzle-orm: + specifier: ^0.36.4 + version: 0.36.4(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(@types/react@18.2.46)(postgres@3.4.7)(react@18.2.0) + esbuild: + specifier: ^0.19.4 + version: 0.19.11 + postgres: + specifier: ^3.4.5 + version: 3.4.7 + rimraf: + specifier: 3.0.2 + version: 3.0.2 + tsx: + specifier: ^4.6.2 + version: 4.7.0 + typescript: + specifier: ^5 + version: 5.3.3 + vitest: + specifier: 0.33.0 + version: 0.33.0(less@4.2.0)(sass@1.69.7)(stylus@0.59.0) + +packages: + + '@adobe/css-tools@4.3.2': + resolution: {integrity: sha512-DA5a1C0gD/pLOvhv33YMrbf2FK3oUzwNl9oOJqE4XVjuEtt6XIakRcsd7eLiOSPkp1kTRQGICTA8cKra/vFbjw==} + + '@babel/code-frame@7.23.5': + resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.22.20': + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + engines: {node: '>=6.9.0'} + + '@babel/highlight@7.23.4': + resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} + engines: {node: '>=6.9.0'} + + '@babel/runtime@7.23.7': + resolution: {integrity: sha512-w06OXVOFso7LcbzMiDGt+3X7Rh7Ho8MmgPoWU3rarH+8upf+wSU/grlGbWzQyr3DkdN6ZeuMFjpdwW0Q+HxobA==} + engines: {node: '>=6.9.0'} + + '@changesets/apply-release-plan@7.0.0': + resolution: {integrity: sha512-vfi69JR416qC9hWmFGSxj7N6wA5J222XNBmezSVATPWDVPIF7gkd4d8CpbEbXmRWbVrkoli3oerGS6dcL/BGsQ==} + + '@changesets/assemble-release-plan@6.0.0': + resolution: {integrity: sha512-4QG7NuisAjisbW4hkLCmGW2lRYdPrKzro+fCtZaILX+3zdUELSvYjpL4GTv0E4aM9Mef3PuIQp89VmHJ4y2bfw==} + + '@changesets/changelog-git@0.2.0': + resolution: {integrity: sha512-bHOx97iFI4OClIT35Lok3sJAwM31VbUM++gnMBV16fdbtBhgYu4dxsphBF/0AZZsyAHMrnM0yFcj5gZM1py6uQ==} + + '@changesets/changelog-github@0.5.1': + resolution: {integrity: sha512-BVuHtF+hrhUScSoHnJwTELB4/INQxVFc+P/Qdt20BLiBFIHFJDDUaGsZw+8fQeJTRP5hJZrzpt3oZWh0G19rAQ==} + + '@changesets/cli@2.27.1': + resolution: {integrity: sha512-iJ91xlvRnnrJnELTp4eJJEOPjgpF3NOh4qeQehM6Ugiz9gJPRZ2t+TsXun6E3AMN4hScZKjqVXl0TX+C7AB3ZQ==} + hasBin: true + + '@changesets/config@3.0.0': + resolution: {integrity: sha512-o/rwLNnAo/+j9Yvw9mkBQOZySDYyOr/q+wptRLcAVGlU6djOeP9v1nlalbL9MFsobuBVQbZCTp+dIzdq+CLQUA==} + + '@changesets/errors@0.2.0': + resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} + + '@changesets/get-dependents-graph@2.0.0': + resolution: {integrity: sha512-cafUXponivK4vBgZ3yLu944mTvam06XEn2IZGjjKc0antpenkYANXiiE6GExV/yKdsCnE8dXVZ25yGqLYZmScA==} + + '@changesets/get-github-info@0.6.0': + resolution: {integrity: sha512-v/TSnFVXI8vzX9/w3DU2Ol+UlTZcu3m0kXTjTT4KlAdwSvwutcByYwyYn9hwerPWfPkT2JfpoX0KgvCEi8Q/SA==} + + '@changesets/get-release-plan@4.0.0': + resolution: {integrity: sha512-9L9xCUeD/Tb6L/oKmpm8nyzsOzhdNBBbt/ZNcjynbHC07WW4E1eX8NMGC5g5SbM5z/V+MOrYsJ4lRW41GCbg3w==} + + '@changesets/get-version-range-type@0.4.0': + resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} + + '@changesets/git@3.0.0': + resolution: {integrity: sha512-vvhnZDHe2eiBNRFHEgMiGd2CT+164dfYyrJDhwwxTVD/OW0FUD6G7+4DIx1dNwkwjHyzisxGAU96q0sVNBns0w==} + + '@changesets/logger@0.1.0': + resolution: {integrity: sha512-pBrJm4CQm9VqFVwWnSqKEfsS2ESnwqwH+xR7jETxIErZcfd1u2zBSqrHbRHR7xjhSgep9x2PSKFKY//FAshA3g==} + + '@changesets/parse@0.4.0': + resolution: {integrity: sha512-TS/9KG2CdGXS27S+QxbZXgr8uPsP4yNJYb4BC2/NeFUj80Rni3TeD2qwWmabymxmrLo7JEsytXH1FbpKTbvivw==} + + '@changesets/pre@2.0.0': + resolution: {integrity: sha512-HLTNYX/A4jZxc+Sq8D1AMBsv+1qD6rmmJtjsCJa/9MSRybdxh0mjbTvE6JYZQ/ZiQ0mMlDOlGPXTm9KLTU3jyw==} + + '@changesets/read@0.6.0': + resolution: {integrity: sha512-ZypqX8+/im1Fm98K4YcZtmLKgjs1kDQ5zHpc2U1qdtNBmZZfo/IBiG162RoP0CUF05tvp2y4IspH11PLnPxuuw==} + + '@changesets/types@4.1.0': + resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} + + '@changesets/types@6.0.0': + resolution: {integrity: sha512-b1UkfNulgKoWfqyHtzKS5fOZYSJO+77adgL7DLRDr+/7jhChN+QcHnbjiQVOz/U+Ts3PGNySq7diAItzDgugfQ==} + + '@changesets/types@6.1.0': + resolution: {integrity: sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA==} + + '@changesets/write@0.3.0': + resolution: {integrity: sha512-slGLb21fxZVUYbyea+94uFiD6ntQW0M2hIKNznFizDhZPDgn2c/fv1UzzlW43RVzh1BEDuIqW6hzlJ1OflNmcw==} + + '@esbuild/aix-ppc64@0.19.11': + resolution: {integrity: sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.18.20': + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.19.11': + resolution: {integrity: sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.18.20': + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.19.11': + resolution: {integrity: sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.18.20': + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.19.11': + resolution: {integrity: sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.18.20': + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.19.11': + resolution: {integrity: sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.18.20': + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.19.11': + resolution: {integrity: sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.18.20': + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.19.11': + resolution: {integrity: sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.18.20': + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.19.11': + resolution: {integrity: sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.18.20': + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.19.11': + resolution: {integrity: sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.18.20': + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.19.11': + resolution: {integrity: sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.18.20': + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.19.11': + resolution: {integrity: sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.18.20': + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.19.11': + resolution: {integrity: sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.18.20': + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.19.11': + resolution: {integrity: sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.18.20': + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.19.11': + resolution: {integrity: sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.18.20': + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.19.11': + resolution: {integrity: sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.18.20': + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.19.11': + resolution: {integrity: sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.18.20': + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.19.11': + resolution: {integrity: sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.18.20': + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.19.11': + resolution: {integrity: sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.18.20': + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.19.11': + resolution: {integrity: sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.18.20': + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.19.11': + resolution: {integrity: sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.18.20': + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.19.11': + resolution: {integrity: sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.18.20': + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.19.11': + resolution: {integrity: sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.18.20': + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.19.11': + resolution: {integrity: sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jridgewell/sourcemap-codec@1.4.15': + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + + '@manypkg/find-root@1.1.0': + resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} + + '@manypkg/get-packages@1.1.3': + resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@opentelemetry/api@1.9.0': + resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} + engines: {node: '>=8.0.0'} + + '@opentelemetry/core@2.1.0': + resolution: {integrity: sha512-RMEtHsxJs/GiHHxYT58IY57UXAQTuUnZVco6ymDEqTNlJKTimM4qPUPVe8InNFyBjhHBEAx4k3Q8LtNayBsbUQ==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/resources@2.1.0': + resolution: {integrity: sha512-1CJjf3LCvoefUOgegxi8h6r4B/wLSzInyhGP2UmIBYNlo4Qk5CZ73e1eEyWmfXvFtm1ybkmfb2DqWvspsYLrWw==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.3.0 <1.10.0' + + '@opentelemetry/sdk-trace-base@2.1.0': + resolution: {integrity: sha512-uTX9FBlVQm4S2gVQO1sb5qyBLq/FPjbp+tmGoxu4tIgtYGmBYB44+KX/725RFDe30yBSaA9Ml9fqphe1hbUyLQ==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.3.0 <1.10.0' + + '@opentelemetry/semantic-conventions@1.37.0': + resolution: {integrity: sha512-JD6DerIKdJGmRp4jQyX5FlrQjA4tjOw1cvfsPAZXfOOEErMUHjPcPSICS+6WnM0nB0efSFARh0KAZss+bvExOA==} + engines: {node: '>=14'} + + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + + '@types/chai-subset@1.3.5': + resolution: {integrity: sha512-c2mPnw+xHtXDoHmdtcCXGwyLMiauiAyxWMzhGpqHC4nqI/Y5G2XhTampslK2rb59kpcuHon03UH8W6iYUzw88A==} + + '@types/chai@4.3.11': + resolution: {integrity: sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==} + + '@types/minimist@1.2.5': + resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} + + '@types/node@12.20.55': + resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + + '@types/node@18.15.11': + resolution: {integrity: sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==} + + '@types/node@20.11.0': + resolution: {integrity: sha512-o9bjXmDNcF7GbM4CNQpmi+TutCgap/K3w1JyKgxAjqx41zp9qlIAVFi0IhCNsJcXolEqLWhbFbEeL0PvYm4pcQ==} + + '@types/normalize-package-data@2.4.4': + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + + '@types/pg@8.15.5': + resolution: {integrity: sha512-LF7lF6zWEKxuT3/OR8wAZGzkg4ENGXFNyiV/JeOt9z5B+0ZVwbql9McqX5c/WStFq1GaGso7H1AzP/qSzmlCKQ==} + + '@types/prop-types@15.7.11': + resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} + + '@types/react@18.2.46': + resolution: {integrity: sha512-nNCvVBcZlvX4NU1nRRNV/mFl1nNRuTuslAJglQsq+8ldXe5Xv0Wd2f7WTE3jOxhLH2BFfiZGC6GCp+kHQbgG+w==} + + '@types/scheduler@0.16.8': + resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} + + '@types/semver@7.5.6': + resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} + + '@vitest/expect@0.33.0': + resolution: {integrity: sha512-sVNf+Gla3mhTCxNJx+wJLDPp/WcstOe0Ksqz4Vec51MmgMth/ia0MGFEkIZmVGeTL5HtjYR4Wl/ZxBxBXZJTzQ==} + + '@vitest/runner@0.33.0': + resolution: {integrity: sha512-UPfACnmCB6HKRHTlcgCoBh6ppl6fDn+J/xR8dTufWiKt/74Y9bHci5CKB8tESSV82zKYtkBJo9whU3mNvfaisg==} + + '@vitest/snapshot@0.33.0': + resolution: {integrity: sha512-tJjrl//qAHbyHajpFvr8Wsk8DIOODEebTu7pgBrP07iOepR5jYkLFiqLq2Ltxv+r0uptUb4izv1J8XBOwKkVYA==} + + '@vitest/spy@0.33.0': + resolution: {integrity: sha512-Kv+yZ4hnH1WdiAkPUQTpRxW8kGtH8VRTnus7ZTGovFYM1ZezJpvGtb9nPIjPnptHbsyIAxYZsEpVPYgtpjGnrg==} + + '@vitest/utils@0.33.0': + resolution: {integrity: sha512-pF1w22ic965sv+EN6uoePkAOTkAPWM03Ri/jXNyMIKBb/XHLDPfhLvf/Fa9g0YECevAIz56oVYXhodLvLQ/awA==} + + acorn-walk@8.3.1: + resolution: {integrity: sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==} + engines: {node: '>=0.4.0'} + + acorn@8.15.0: + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} + engines: {node: '>=0.4.0'} + hasBin: true + + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + array-buffer-byte-length@1.0.0: + resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.2: + resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} + engines: {node: '>= 0.4'} + + arrify@1.0.1: + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + engines: {node: '>=0.10.0'} + + assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + + available-typed-arrays@1.0.5: + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + engines: {node: '>= 0.4'} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + better-path-resolve@1.0.0: + resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} + engines: {node: '>=4'} + + binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + + breakword@1.0.6: + resolution: {integrity: sha512-yjxDAYyK/pBvws9H4xKYpLDpYKEH6CzrBPAuXq3x18I+c/2MkVtT3qAr7Oloi6Dss9qNhPVueAAVU1CSeNDIXw==} + + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + + call-bind@1.0.5: + resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} + + camelcase-keys@6.2.2: + resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} + engines: {node: '>=8'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + chai@4.3.10: + resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==} + engines: {node: '>=4'} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + + check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + + chokidar@3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + + cliui@6.0.0: + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + copy-anything@2.0.6: + resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} + + cross-spawn@5.1.0: + resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + csv-generate@3.4.3: + resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} + + csv-parse@4.16.3: + resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==} + + csv-stringify@5.6.5: + resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==} + + csv@5.5.3: + resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==} + engines: {node: '>= 0.1.90'} + + dataloader@1.4.0: + resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} + + debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize-keys@1.1.1: + resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} + engines: {node: '>=0.10.0'} + + decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + + deep-eql@4.1.3: + resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + engines: {node: '>=6'} + + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + + define-data-property@1.1.1: + resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + engines: {node: '>= 0.4'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + + diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + dotenv@8.6.0: + resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} + engines: {node: '>=10'} + + drizzle-orm@0.36.4: + resolution: {integrity: sha512-1OZY3PXD7BR00Gl61UUOFihslDldfH4NFRH2MbP54Yxi0G/PKn4HfO65JYZ7c16DeP3SpM3Aw+VXVG9j6CRSXA==} + peerDependencies: + '@aws-sdk/client-rds-data': '>=3' + '@cloudflare/workers-types': '>=3' + '@electric-sql/pglite': '>=0.2.0' + '@libsql/client': '>=0.10.0' + '@libsql/client-wasm': '>=0.10.0' + '@neondatabase/serverless': '>=0.10.0' + '@op-engineering/op-sqlite': '>=2' + '@opentelemetry/api': ^1.4.1 + '@planetscale/database': '>=1' + '@prisma/client': '*' + '@tidbcloud/serverless': '*' + '@types/better-sqlite3': '*' + '@types/pg': '*' + '@types/react': '>=18' + '@types/sql.js': '*' + '@vercel/postgres': '>=0.8.0' + '@xata.io/client': '*' + better-sqlite3: '>=7' + bun-types: '*' + expo-sqlite: '>=14.0.0' + knex: '*' + kysely: '*' + mysql2: '>=2' + pg: '>=8' + postgres: '>=3' + prisma: '*' + react: '>=18' + sql.js: '>=1' + sqlite3: '>=5' + peerDependenciesMeta: + '@aws-sdk/client-rds-data': + optional: true + '@cloudflare/workers-types': + optional: true + '@electric-sql/pglite': + optional: true + '@libsql/client': + optional: true + '@libsql/client-wasm': + optional: true + '@neondatabase/serverless': + optional: true + '@op-engineering/op-sqlite': + optional: true + '@opentelemetry/api': + optional: true + '@planetscale/database': + optional: true + '@prisma/client': + optional: true + '@tidbcloud/serverless': + optional: true + '@types/better-sqlite3': + optional: true + '@types/pg': + optional: true + '@types/react': + optional: true + '@types/sql.js': + optional: true + '@vercel/postgres': + optional: true + '@xata.io/client': + optional: true + better-sqlite3: + optional: true + bun-types: + optional: true + expo-sqlite: + optional: true + knex: + optional: true + kysely: + optional: true + mysql2: + optional: true + pg: + optional: true + postgres: + optional: true + prisma: + optional: true + react: + optional: true + sql.js: + optional: true + sqlite3: + optional: true + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + engines: {node: '>=8.6'} + + errno@0.1.8: + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} + hasBin: true + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + es-abstract@1.22.3: + resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.0.2: + resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} + engines: {node: '>= 0.4'} + + es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + + es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + + esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.19.11: + resolution: {integrity: sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==} + engines: {node: '>=12'} + hasBin: true + + escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + extendable-error@0.1.7: + resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} + + external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + + fastq@1.16.0: + resolution: {integrity: sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==} + + fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + find-yarn-workspace-root2@1.2.16: + resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} + + for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + + fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + + fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + + get-intrinsic@1.2.2: + resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} + + get-symbol-description@1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} + + get-tsconfig@4.7.2: + resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + globalthis@1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + grapheme-splitter@1.0.4: + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + + hard-rejection@2.1.0: + resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} + engines: {node: '>=6'} + + has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.1: + resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} + + has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + + has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + + hasown@2.0.0: + resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + engines: {node: '>= 0.4'} + + hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + + human-id@1.0.2: + resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + ignore@5.3.0: + resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} + engines: {node: '>= 4'} + + image-size@0.5.5: + resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} + engines: {node: '>=0.10.0'} + hasBin: true + + immutable@4.3.4: + resolution: {integrity: sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==} + + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + internal-slot@1.0.6: + resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} + engines: {node: '>= 0.4'} + + is-array-buffer@3.0.2: + resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + + is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-negative-zero@2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} + + is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-plain-obj@1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + + is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + + is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + + is-subdir@1.2.0: + resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} + engines: {node: '>=4'} + + is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.12: + resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} + engines: {node: '>= 0.4'} + + is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + + is-what@3.14.1: + resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} + + is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + jsonc-parser@3.2.0: + resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + + less@4.2.0: + resolution: {integrity: sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==} + engines: {node: '>=6'} + hasBin: true + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + load-yaml-file@0.2.0: + resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} + engines: {node: '>=6'} + + local-pkg@0.4.3: + resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} + engines: {node: '>=14'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + + lru-cache@4.1.5: + resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} + + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + + magic-string@0.30.5: + resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} + engines: {node: '>=12'} + + make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + + map-obj@1.0.1: + resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} + engines: {node: '>=0.10.0'} + + map-obj@4.3.0: + resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} + engines: {node: '>=8'} + + meow@6.1.1: + resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} + engines: {node: '>=8'} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimist-options@4.1.0: + resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} + engines: {node: '>= 6'} + + mixme@0.5.10: + resolution: {integrity: sha512-5H76ANWinB1H3twpJ6JY8uvAtpmFvHNArpilJAjXRKXSDDLPIMoZArw5SH0q9z+lLs8IrMw7Q2VWpWimFKFT1Q==} + engines: {node: '>= 8.0.0'} + + mlly@1.4.2: + resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} + + ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + needle@3.3.1: + resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==} + engines: {node: '>= 4.4.x'} + hasBin: true + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + + outdent@0.5.0: + resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} + + p-filter@2.1.0: + resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} + engines: {node: '>=8'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-map@2.1.0: + resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} + engines: {node: '>=6'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-node-version@1.0.1: + resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} + engines: {node: '>= 0.10'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pathe@1.1.1: + resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} + + pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + + pg-int8@1.0.1: + resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} + engines: {node: '>=4.0.0'} + + pg-protocol@1.10.3: + resolution: {integrity: sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ==} + + pg-types@2.2.0: + resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} + engines: {node: '>=4'} + + picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + + pkg-types@1.0.3: + resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} + + postcss@8.4.33: + resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==} + engines: {node: ^10 || ^12 || >=14} + + postgres-array@2.0.0: + resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} + engines: {node: '>=4'} + + postgres-bytea@1.0.0: + resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==} + engines: {node: '>=0.10.0'} + + postgres-date@1.0.7: + resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} + engines: {node: '>=0.10.0'} + + postgres-interval@1.2.0: + resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} + engines: {node: '>=0.10.0'} + + postgres@3.4.7: + resolution: {integrity: sha512-Jtc2612XINuBjIl/QTWsV5UvE8UHuNblcO3vVADSrKsrc6RqGX6lOW1cEo3CM2v0XG4Nat8nI+YM7/f26VxXLw==} + engines: {node: '>=12'} + + preferred-pm@3.1.2: + resolution: {integrity: sha512-nk7dKrcW8hfCZ4H6klWcdRknBOXWzNQByJ0oJyX97BOupsYD+FzLS4hflgEu/uPUEHZCuRfMxzCBsuWd7OzT8Q==} + engines: {node: '>=10'} + + prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + + prettier@3.1.1: + resolution: {integrity: sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==} + engines: {node: '>=14'} + hasBin: true + + pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + prr@1.0.1: + resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} + + pseudomap@1.0.2: + resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + quick-lru@4.0.1: + resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} + engines: {node: '>=8'} + + react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + + react@18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} + + read-pkg-up@7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} + + read-pkg@5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + + read-yaml-file@1.1.0: + resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} + engines: {node: '>=6'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + regexp.prototype.flags@1.5.1: + resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} + engines: {node: '>= 0.4'} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-main-filename@2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rollup@3.29.4: + resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safe-array-concat@1.0.1: + resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} + engines: {node: '>=0.4'} + + safe-regex-test@1.0.0: + resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sass@1.69.7: + resolution: {integrity: sha512-rzj2soDeZ8wtE2egyLXgOOHQvaC2iosZrkF6v3EUG+tBwEvhqUCzm0VP3k9gHF9LXbSrRhT5SksoI56Iw8NPnQ==} + engines: {node: '>=14.0.0'} + hasBin: true + + sax@1.2.4: + resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} + + sax@1.3.0: + resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + + set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + + set-function-length@1.1.1: + resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.1: + resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} + engines: {node: '>= 0.4'} + + shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} + + shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + + side-channel@1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + smartwrap@2.0.2: + resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==} + engines: {node: '>=6'} + hasBin: true + + source-map-js@1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + + spawndamnit@2.0.0: + resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} + + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.3.0: + resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-license-ids@3.0.16: + resolution: {integrity: sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + std-env@3.7.0: + resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} + + stream-transform@2.1.3: + resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string.prototype.trim@1.2.8: + resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.7: + resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} + + string.prototype.trimstart@1.0.7: + resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + + strip-literal@1.3.0: + resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} + + stylus@0.59.0: + resolution: {integrity: sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg==} + hasBin: true + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + term-size@2.2.1: + resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} + engines: {node: '>=8'} + + tinybench@2.5.1: + resolution: {integrity: sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==} + + tinypool@0.6.0: + resolution: {integrity: sha512-FdswUUo5SxRizcBc6b1GSuLpLjisa8N8qMyYoP3rl+bym+QauhtJP5bvZY1ytt8krKGmMLYIRl36HBZfeAoqhQ==} + engines: {node: '>=14.0.0'} + + tinyspy@2.2.0: + resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==} + engines: {node: '>=14.0.0'} + + tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + trim-newlines@3.0.1: + resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} + engines: {node: '>=8'} + + tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + + tsx@4.7.0: + resolution: {integrity: sha512-I+t79RYPlEYlHn9a+KzwrvEwhJg35h/1zHsLC2JXvhC2mdynMv6Zxzvhv5EMV6VF5qJlLlkSnMVvdZV3PSIGcg==} + engines: {node: '>=18.0.0'} + hasBin: true + + tty-table@4.2.3: + resolution: {integrity: sha512-Fs15mu0vGzCrj8fmJNP7Ynxt5J7praPXqFN0leZeZBXJwkMxv9cb2D454k1ltrtUSJbZ4yH4e0CynsHLxmUfFA==} + engines: {node: '>=8.0.0'} + hasBin: true + + turbo-darwin-64@1.11.3: + resolution: {integrity: sha512-IsOOg2bVbIt3o/X8Ew9fbQp5t1hTHN3fGNQYrPQwMR2W1kIAC6RfbVD4A9OeibPGyEPUpwOH79hZ9ydFH5kifw==} + cpu: [x64] + os: [darwin] + + turbo-darwin-arm64@1.11.3: + resolution: {integrity: sha512-FsJL7k0SaPbJzI/KCnrf/fi3PgCDCjTliMc/kEFkuWVA6Httc3Q4lxyLIIinz69q6JTx8wzh6yznUMzJRI3+dg==} + cpu: [arm64] + os: [darwin] + + turbo-linux-64@1.11.3: + resolution: {integrity: sha512-SvW7pvTVRGsqtSkII5w+wriZXvxqkluw5FO/MNAdFw0qmoov+PZ237+37/NgArqE3zVn1GX9P6nUx9VO+xcQAg==} + cpu: [x64] + os: [linux] + + turbo-linux-arm64@1.11.3: + resolution: {integrity: sha512-YhUfBi1deB3m+3M55X458J6B7RsIS7UtM3P1z13cUIhF+pOt65BgnaSnkHLwETidmhRh8Dl3GelaQGrB3RdCDw==} + cpu: [arm64] + os: [linux] + + turbo-windows-64@1.11.3: + resolution: {integrity: sha512-s+vEnuM2TiZuAUUUpmBHDr6vnNbJgj+5JYfnYmVklYs16kXh+EppafYQOAkcRIMAh7GjV3pLq5/uGqc7seZeHA==} + cpu: [x64] + os: [win32] + + turbo-windows-arm64@1.11.3: + resolution: {integrity: sha512-ZR5z5Zpc7cASwfdRAV5yNScCZBsgGSbcwiA/u3farCacbPiXsfoWUkz28iyrx21/TRW0bi6dbsB2v17swa8bjw==} + cpu: [arm64] + os: [win32] + + turbo@1.11.3: + resolution: {integrity: sha512-RCJOUFcFMQNIGKSjC9YmA5yVP1qtDiBA0Lv9VIgrXraI5Da1liVvl3VJPsoDNIR9eFMyA/aagx1iyj6UWem5hA==} + hasBin: true + + type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + + type-fest@0.13.1: + resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} + engines: {node: '>=10'} + + type-fest@0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + + type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + + typed-array-buffer@1.0.0: + resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.0: + resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.0: + resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.4: + resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + + typescript@5.3.3: + resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + engines: {node: '>=14.17'} + hasBin: true + + ufo@1.3.2: + resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==} + + unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + + undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + + vite-node@0.33.0: + resolution: {integrity: sha512-19FpHYbwWWxDr73ruNahC+vtEdza52kA90Qb3La98yZ0xULqV8A5JLNPUff0f5zID4984tW7l3DH2przTJUZSw==} + engines: {node: '>=v14.18.0'} + hasBin: true + + vite@4.5.1: + resolution: {integrity: sha512-AXXFaAJ8yebyqzoNB9fu2pHoo/nWX+xZlaRwoeYUxEqBO+Zj4msE5G+BhGBll9lYEKv9Hfks52PAF2X7qDYXQA==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vitest@0.33.0: + resolution: {integrity: sha512-1CxaugJ50xskkQ0e969R/hW47za4YXDUfWJDxip1hwbnhUjYolpfUn2AMOulqG/Dtd9WYAtkHmM/m3yKVrEejQ==} + engines: {node: '>=v14.18.0'} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@vitest/browser': '*' + '@vitest/ui': '*' + happy-dom: '*' + jsdom: '*' + playwright: '*' + safaridriver: '*' + webdriverio: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + playwright: + optional: true + safaridriver: + optional: true + webdriverio: + optional: true + + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + + which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} + + which-pm@2.0.0: + resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} + engines: {node: '>=8.15'} + + which-typed-array@1.1.13: + resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} + engines: {node: '>= 0.4'} + + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + + why-is-node-running@2.2.2: + resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} + engines: {node: '>=8'} + hasBin: true + + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + y18n@4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@2.1.2: + resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yargs-parser@18.1.3: + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@15.4.1: + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + engines: {node: '>=8'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + yocto-queue@1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} + +snapshots: + + '@adobe/css-tools@4.3.2': + optional: true + + '@babel/code-frame@7.23.5': + dependencies: + '@babel/highlight': 7.23.4 + chalk: 2.4.2 + + '@babel/helper-validator-identifier@7.22.20': {} + + '@babel/highlight@7.23.4': + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + + '@babel/runtime@7.23.7': + dependencies: + regenerator-runtime: 0.14.1 + + '@changesets/apply-release-plan@7.0.0': + dependencies: + '@babel/runtime': 7.23.7 + '@changesets/config': 3.0.0 + '@changesets/get-version-range-type': 0.4.0 + '@changesets/git': 3.0.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + detect-indent: 6.1.0 + fs-extra: 7.0.1 + lodash.startcase: 4.4.0 + outdent: 0.5.0 + prettier: 2.8.8 + resolve-from: 5.0.0 + semver: 7.5.4 + + '@changesets/assemble-release-plan@6.0.0': + dependencies: + '@babel/runtime': 7.23.7 + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.0.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + semver: 7.5.4 + + '@changesets/changelog-git@0.2.0': + dependencies: + '@changesets/types': 6.0.0 + + '@changesets/changelog-github@0.5.1': + dependencies: + '@changesets/get-github-info': 0.6.0 + '@changesets/types': 6.1.0 + dotenv: 8.6.0 + transitivePeerDependencies: + - encoding + + '@changesets/cli@2.27.1': + dependencies: + '@babel/runtime': 7.23.7 + '@changesets/apply-release-plan': 7.0.0 + '@changesets/assemble-release-plan': 6.0.0 + '@changesets/changelog-git': 0.2.0 + '@changesets/config': 3.0.0 + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.0.0 + '@changesets/get-release-plan': 4.0.0 + '@changesets/git': 3.0.0 + '@changesets/logger': 0.1.0 + '@changesets/pre': 2.0.0 + '@changesets/read': 0.6.0 + '@changesets/types': 6.0.0 + '@changesets/write': 0.3.0 + '@manypkg/get-packages': 1.1.3 + '@types/semver': 7.5.6 + ansi-colors: 4.1.3 + chalk: 2.4.2 + ci-info: 3.9.0 + enquirer: 2.4.1 + external-editor: 3.1.0 + fs-extra: 7.0.1 + human-id: 1.0.2 + meow: 6.1.1 + outdent: 0.5.0 + p-limit: 2.3.0 + preferred-pm: 3.1.2 + resolve-from: 5.0.0 + semver: 7.5.4 + spawndamnit: 2.0.0 + term-size: 2.2.1 + tty-table: 4.2.3 + + '@changesets/config@3.0.0': + dependencies: + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.0.0 + '@changesets/logger': 0.1.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + fs-extra: 7.0.1 + micromatch: 4.0.5 + + '@changesets/errors@0.2.0': + dependencies: + extendable-error: 0.1.7 + + '@changesets/get-dependents-graph@2.0.0': + dependencies: + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + chalk: 2.4.2 + fs-extra: 7.0.1 + semver: 7.5.4 + + '@changesets/get-github-info@0.6.0': + dependencies: + dataloader: 1.4.0 + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + + '@changesets/get-release-plan@4.0.0': + dependencies: + '@babel/runtime': 7.23.7 + '@changesets/assemble-release-plan': 6.0.0 + '@changesets/config': 3.0.0 + '@changesets/pre': 2.0.0 + '@changesets/read': 0.6.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + + '@changesets/get-version-range-type@0.4.0': {} + + '@changesets/git@3.0.0': + dependencies: + '@babel/runtime': 7.23.7 + '@changesets/errors': 0.2.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + is-subdir: 1.2.0 + micromatch: 4.0.5 + spawndamnit: 2.0.0 + + '@changesets/logger@0.1.0': + dependencies: + chalk: 2.4.2 + + '@changesets/parse@0.4.0': + dependencies: + '@changesets/types': 6.0.0 + js-yaml: 3.14.1 + + '@changesets/pre@2.0.0': + dependencies: + '@babel/runtime': 7.23.7 + '@changesets/errors': 0.2.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + fs-extra: 7.0.1 + + '@changesets/read@0.6.0': + dependencies: + '@babel/runtime': 7.23.7 + '@changesets/git': 3.0.0 + '@changesets/logger': 0.1.0 + '@changesets/parse': 0.4.0 + '@changesets/types': 6.0.0 + chalk: 2.4.2 + fs-extra: 7.0.1 + p-filter: 2.1.0 + + '@changesets/types@4.1.0': {} + + '@changesets/types@6.0.0': {} + + '@changesets/types@6.1.0': {} + + '@changesets/write@0.3.0': + dependencies: + '@babel/runtime': 7.23.7 + '@changesets/types': 6.0.0 + fs-extra: 7.0.1 + human-id: 1.0.2 + prettier: 2.8.8 + + '@esbuild/aix-ppc64@0.19.11': + optional: true + + '@esbuild/android-arm64@0.18.20': + optional: true + + '@esbuild/android-arm64@0.19.11': + optional: true + + '@esbuild/android-arm@0.18.20': + optional: true + + '@esbuild/android-arm@0.19.11': + optional: true + + '@esbuild/android-x64@0.18.20': + optional: true + + '@esbuild/android-x64@0.19.11': + optional: true + + '@esbuild/darwin-arm64@0.18.20': + optional: true + + '@esbuild/darwin-arm64@0.19.11': + optional: true + + '@esbuild/darwin-x64@0.18.20': + optional: true + + '@esbuild/darwin-x64@0.19.11': + optional: true + + '@esbuild/freebsd-arm64@0.18.20': + optional: true + + '@esbuild/freebsd-arm64@0.19.11': + optional: true + + '@esbuild/freebsd-x64@0.18.20': + optional: true + + '@esbuild/freebsd-x64@0.19.11': + optional: true + + '@esbuild/linux-arm64@0.18.20': + optional: true + + '@esbuild/linux-arm64@0.19.11': + optional: true + + '@esbuild/linux-arm@0.18.20': + optional: true + + '@esbuild/linux-arm@0.19.11': + optional: true + + '@esbuild/linux-ia32@0.18.20': + optional: true + + '@esbuild/linux-ia32@0.19.11': + optional: true + + '@esbuild/linux-loong64@0.18.20': + optional: true + + '@esbuild/linux-loong64@0.19.11': + optional: true + + '@esbuild/linux-mips64el@0.18.20': + optional: true + + '@esbuild/linux-mips64el@0.19.11': + optional: true + + '@esbuild/linux-ppc64@0.18.20': + optional: true + + '@esbuild/linux-ppc64@0.19.11': + optional: true + + '@esbuild/linux-riscv64@0.18.20': + optional: true + + '@esbuild/linux-riscv64@0.19.11': + optional: true + + '@esbuild/linux-s390x@0.18.20': + optional: true + + '@esbuild/linux-s390x@0.19.11': + optional: true + + '@esbuild/linux-x64@0.18.20': + optional: true + + '@esbuild/linux-x64@0.19.11': + optional: true + + '@esbuild/netbsd-x64@0.18.20': + optional: true + + '@esbuild/netbsd-x64@0.19.11': + optional: true + + '@esbuild/openbsd-x64@0.18.20': + optional: true + + '@esbuild/openbsd-x64@0.19.11': + optional: true + + '@esbuild/sunos-x64@0.18.20': + optional: true + + '@esbuild/sunos-x64@0.19.11': + optional: true + + '@esbuild/win32-arm64@0.18.20': + optional: true + + '@esbuild/win32-arm64@0.19.11': + optional: true + + '@esbuild/win32-ia32@0.18.20': + optional: true + + '@esbuild/win32-ia32@0.19.11': + optional: true + + '@esbuild/win32-x64@0.18.20': + optional: true + + '@esbuild/win32-x64@0.19.11': + optional: true + + '@jest/schemas@29.6.3': + dependencies: + '@sinclair/typebox': 0.27.8 + + '@jridgewell/sourcemap-codec@1.4.15': {} + + '@manypkg/find-root@1.1.0': + dependencies: + '@babel/runtime': 7.23.7 + '@types/node': 12.20.55 + find-up: 4.1.0 + fs-extra: 8.1.0 + + '@manypkg/get-packages@1.1.3': + dependencies: + '@babel/runtime': 7.23.7 + '@changesets/types': 4.1.0 + '@manypkg/find-root': 1.1.0 + fs-extra: 8.1.0 + globby: 11.1.0 + read-yaml-file: 1.1.0 + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.16.0 + + '@opentelemetry/api@1.9.0': {} + + '@opentelemetry/core@2.1.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/semantic-conventions': 1.37.0 + + '@opentelemetry/resources@2.1.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.37.0 + + '@opentelemetry/sdk-trace-base@2.1.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.1.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.37.0 + + '@opentelemetry/semantic-conventions@1.37.0': {} + + '@sinclair/typebox@0.27.8': {} + + '@types/chai-subset@1.3.5': + dependencies: + '@types/chai': 4.3.11 + + '@types/chai@4.3.11': {} + + '@types/minimist@1.2.5': {} + + '@types/node@12.20.55': {} + + '@types/node@18.15.11': {} + + '@types/node@20.11.0': + dependencies: + undici-types: 5.26.5 + + '@types/normalize-package-data@2.4.4': {} + + '@types/pg@8.15.5': + dependencies: + '@types/node': 20.11.0 + pg-protocol: 1.10.3 + pg-types: 2.2.0 + + '@types/prop-types@15.7.11': + optional: true + + '@types/react@18.2.46': + dependencies: + '@types/prop-types': 15.7.11 + '@types/scheduler': 0.16.8 + csstype: 3.1.3 + optional: true + + '@types/scheduler@0.16.8': + optional: true + + '@types/semver@7.5.6': {} + + '@vitest/expect@0.33.0': + dependencies: + '@vitest/spy': 0.33.0 + '@vitest/utils': 0.33.0 + chai: 4.3.10 + + '@vitest/runner@0.33.0': + dependencies: + '@vitest/utils': 0.33.0 + p-limit: 4.0.0 + pathe: 1.1.1 + + '@vitest/snapshot@0.33.0': + dependencies: + magic-string: 0.30.5 + pathe: 1.1.1 + pretty-format: 29.7.0 + + '@vitest/spy@0.33.0': + dependencies: + tinyspy: 2.2.0 + + '@vitest/utils@0.33.0': + dependencies: + diff-sequences: 29.6.3 + loupe: 2.3.7 + pretty-format: 29.7.0 + + acorn-walk@8.3.1: {} + + acorn@8.15.0: {} + + ansi-colors@4.1.3: {} + + ansi-regex@5.0.1: {} + + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + optional: true + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + array-buffer-byte-length@1.0.0: + dependencies: + call-bind: 1.0.5 + is-array-buffer: 3.0.2 + + array-union@2.1.0: {} + + array.prototype.flat@1.3.2: + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + + arraybuffer.prototype.slice@1.0.2: + dependencies: + array-buffer-byte-length: 1.0.0 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + is-array-buffer: 3.0.2 + is-shared-array-buffer: 1.0.2 + + arrify@1.0.1: {} + + assertion-error@1.1.0: {} + + available-typed-arrays@1.0.5: {} + + balanced-match@1.0.2: {} + + better-path-resolve@1.0.0: + dependencies: + is-windows: 1.0.2 + + binary-extensions@2.2.0: + optional: true + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + braces@3.0.2: + dependencies: + fill-range: 7.0.1 + + breakword@1.0.6: + dependencies: + wcwidth: 1.0.1 + + cac@6.7.14: {} + + call-bind@1.0.5: + dependencies: + function-bind: 1.1.2 + get-intrinsic: 1.2.2 + set-function-length: 1.1.1 + + camelcase-keys@6.2.2: + dependencies: + camelcase: 5.3.1 + map-obj: 4.3.0 + quick-lru: 4.0.1 + + camelcase@5.3.1: {} + + chai@4.3.10: + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.3 + deep-eql: 4.1.3 + get-func-name: 2.0.2 + loupe: 2.3.7 + pathval: 1.1.1 + type-detect: 4.0.8 + + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chardet@0.7.0: {} + + check-error@1.0.3: + dependencies: + get-func-name: 2.0.2 + + chokidar@3.5.3: + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + optional: true + + ci-info@3.9.0: {} + + cliui@6.0.0: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clone@1.0.4: {} + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.3: {} + + color-name@1.1.4: {} + + concat-map@0.0.1: {} + + copy-anything@2.0.6: + dependencies: + is-what: 3.14.1 + optional: true + + cross-spawn@5.1.0: + dependencies: + lru-cache: 4.1.5 + shebang-command: 1.2.0 + which: 1.3.1 + + csstype@3.1.3: + optional: true + + csv-generate@3.4.3: {} + + csv-parse@4.16.3: {} + + csv-stringify@5.6.5: {} + + csv@5.5.3: + dependencies: + csv-generate: 3.4.3 + csv-parse: 4.16.3 + csv-stringify: 5.6.5 + stream-transform: 2.1.3 + + dataloader@1.4.0: {} + + debug@4.3.4: + dependencies: + ms: 2.1.2 + + decamelize-keys@1.1.1: + dependencies: + decamelize: 1.2.0 + map-obj: 1.0.1 + + decamelize@1.2.0: {} + + deep-eql@4.1.3: + dependencies: + type-detect: 4.0.8 + + defaults@1.0.4: + dependencies: + clone: 1.0.4 + + define-data-property@1.1.1: + dependencies: + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.1 + has-property-descriptors: 1.0.1 + object-keys: 1.1.1 + + detect-indent@6.1.0: {} + + diff-sequences@29.6.3: {} + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + dotenv@8.6.0: {} + + drizzle-orm@0.36.4(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(@types/react@18.2.46)(postgres@3.4.7)(react@18.2.0): + optionalDependencies: + '@opentelemetry/api': 1.9.0 + '@types/pg': 8.15.5 + '@types/react': 18.2.46 + postgres: 3.4.7 + react: 18.2.0 + + emoji-regex@8.0.0: {} + + enquirer@2.4.1: + dependencies: + ansi-colors: 4.1.3 + strip-ansi: 6.0.1 + + errno@0.1.8: + dependencies: + prr: 1.0.1 + optional: true + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + es-abstract@1.22.3: + dependencies: + array-buffer-byte-length: 1.0.0 + arraybuffer.prototype.slice: 1.0.2 + available-typed-arrays: 1.0.5 + call-bind: 1.0.5 + es-set-tostringtag: 2.0.2 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.2 + get-symbol-description: 1.0.0 + globalthis: 1.0.3 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.0 + internal-slot: 1.0.6 + is-array-buffer: 3.0.2 + is-callable: 1.2.7 + is-negative-zero: 2.0.2 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + is-string: 1.0.7 + is-typed-array: 1.1.12 + is-weakref: 1.0.2 + object-inspect: 1.13.1 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.1 + safe-array-concat: 1.0.1 + safe-regex-test: 1.0.0 + string.prototype.trim: 1.2.8 + string.prototype.trimend: 1.0.7 + string.prototype.trimstart: 1.0.7 + typed-array-buffer: 1.0.0 + typed-array-byte-length: 1.0.0 + typed-array-byte-offset: 1.0.0 + typed-array-length: 1.0.4 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.13 + + es-set-tostringtag@2.0.2: + dependencies: + get-intrinsic: 1.2.2 + has-tostringtag: 1.0.0 + hasown: 2.0.0 + + es-shim-unscopables@1.0.2: + dependencies: + hasown: 2.0.0 + + es-to-primitive@1.2.1: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + + esbuild@0.18.20: + optionalDependencies: + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 + + esbuild@0.19.11: + optionalDependencies: + '@esbuild/aix-ppc64': 0.19.11 + '@esbuild/android-arm': 0.19.11 + '@esbuild/android-arm64': 0.19.11 + '@esbuild/android-x64': 0.19.11 + '@esbuild/darwin-arm64': 0.19.11 + '@esbuild/darwin-x64': 0.19.11 + '@esbuild/freebsd-arm64': 0.19.11 + '@esbuild/freebsd-x64': 0.19.11 + '@esbuild/linux-arm': 0.19.11 + '@esbuild/linux-arm64': 0.19.11 + '@esbuild/linux-ia32': 0.19.11 + '@esbuild/linux-loong64': 0.19.11 + '@esbuild/linux-mips64el': 0.19.11 + '@esbuild/linux-ppc64': 0.19.11 + '@esbuild/linux-riscv64': 0.19.11 + '@esbuild/linux-s390x': 0.19.11 + '@esbuild/linux-x64': 0.19.11 + '@esbuild/netbsd-x64': 0.19.11 + '@esbuild/openbsd-x64': 0.19.11 + '@esbuild/sunos-x64': 0.19.11 + '@esbuild/win32-arm64': 0.19.11 + '@esbuild/win32-ia32': 0.19.11 + '@esbuild/win32-x64': 0.19.11 + + escalade@3.1.1: {} + + escape-string-regexp@1.0.5: {} + + esprima@4.0.1: {} + + extendable-error@0.1.7: {} + + external-editor@3.1.0: + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + + fast-glob@3.3.2: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + + fastq@1.16.0: + dependencies: + reusify: 1.0.4 + + fill-range@7.0.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + find-yarn-workspace-root2@1.2.16: + dependencies: + micromatch: 4.0.5 + pkg-dir: 4.2.0 + + for-each@0.3.3: + dependencies: + is-callable: 1.2.7 + + fs-extra@7.0.1: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs-extra@8.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + function.prototype.name@1.1.6: + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + functions-have-names: 1.2.3 + + functions-have-names@1.2.3: {} + + get-caller-file@2.0.5: {} + + get-func-name@2.0.2: {} + + get-intrinsic@1.2.2: + dependencies: + function-bind: 1.1.2 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.0 + + get-symbol-description@1.0.0: + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + + get-tsconfig@4.7.2: + dependencies: + resolve-pkg-maps: 1.0.0 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + globalthis@1.0.3: + dependencies: + define-properties: 1.2.1 + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.0 + merge2: 1.4.1 + slash: 3.0.0 + + gopd@1.0.1: + dependencies: + get-intrinsic: 1.2.2 + + graceful-fs@4.2.11: {} + + grapheme-splitter@1.0.4: {} + + hard-rejection@2.1.0: {} + + has-bigints@1.0.2: {} + + has-flag@3.0.0: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.1: + dependencies: + get-intrinsic: 1.2.2 + + has-proto@1.0.1: {} + + has-symbols@1.0.3: {} + + has-tostringtag@1.0.0: + dependencies: + has-symbols: 1.0.3 + + hasown@2.0.0: + dependencies: + function-bind: 1.1.2 + + hosted-git-info@2.8.9: {} + + human-id@1.0.2: {} + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + optional: true + + ignore@5.3.0: {} + + image-size@0.5.5: + optional: true + + immutable@4.3.4: + optional: true + + indent-string@4.0.0: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + internal-slot@1.0.6: + dependencies: + get-intrinsic: 1.2.2 + hasown: 2.0.0 + side-channel: 1.0.4 + + is-array-buffer@3.0.2: + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + is-typed-array: 1.1.12 + + is-arrayish@0.2.1: {} + + is-bigint@1.0.4: + dependencies: + has-bigints: 1.0.2 + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.2.0 + optional: true + + is-boolean-object@1.1.2: + dependencies: + call-bind: 1.0.5 + has-tostringtag: 1.0.0 + + is-callable@1.2.7: {} + + is-core-module@2.13.1: + dependencies: + hasown: 2.0.0 + + is-date-object@1.0.5: + dependencies: + has-tostringtag: 1.0.0 + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-negative-zero@2.0.2: {} + + is-number-object@1.0.7: + dependencies: + has-tostringtag: 1.0.0 + + is-number@7.0.0: {} + + is-plain-obj@1.1.0: {} + + is-regex@1.1.4: + dependencies: + call-bind: 1.0.5 + has-tostringtag: 1.0.0 + + is-shared-array-buffer@1.0.2: + dependencies: + call-bind: 1.0.5 + + is-string@1.0.7: + dependencies: + has-tostringtag: 1.0.0 + + is-subdir@1.2.0: + dependencies: + better-path-resolve: 1.0.0 + + is-symbol@1.0.4: + dependencies: + has-symbols: 1.0.3 + + is-typed-array@1.1.12: + dependencies: + which-typed-array: 1.1.13 + + is-weakref@1.0.2: + dependencies: + call-bind: 1.0.5 + + is-what@3.14.1: + optional: true + + is-windows@1.0.2: {} + + isarray@2.0.5: {} + + isexe@2.0.0: {} + + js-tokens@4.0.0: {} + + js-yaml@3.14.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + json-parse-even-better-errors@2.3.1: {} + + jsonc-parser@3.2.0: {} + + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + + kind-of@6.0.3: {} + + kleur@4.1.5: {} + + less@4.2.0: + dependencies: + copy-anything: 2.0.6 + parse-node-version: 1.0.1 + tslib: 2.6.2 + optionalDependencies: + errno: 0.1.8 + graceful-fs: 4.2.11 + image-size: 0.5.5 + make-dir: 2.1.0 + mime: 1.6.0 + needle: 3.3.1 + source-map: 0.6.1 + optional: true + + lines-and-columns@1.2.4: {} + + load-yaml-file@0.2.0: + dependencies: + graceful-fs: 4.2.11 + js-yaml: 3.14.1 + pify: 4.0.1 + strip-bom: 3.0.0 + + local-pkg@0.4.3: {} + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.startcase@4.4.0: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + optional: true + + loupe@2.3.7: + dependencies: + get-func-name: 2.0.2 + + lru-cache@4.1.5: + dependencies: + pseudomap: 1.0.2 + yallist: 2.1.2 + + lru-cache@6.0.0: + dependencies: + yallist: 4.0.0 + + magic-string@0.30.5: + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + + make-dir@2.1.0: + dependencies: + pify: 4.0.1 + semver: 5.7.2 + optional: true + + map-obj@1.0.1: {} + + map-obj@4.3.0: {} + + meow@6.1.1: + dependencies: + '@types/minimist': 1.2.5 + camelcase-keys: 6.2.2 + decamelize-keys: 1.1.1 + hard-rejection: 2.1.0 + minimist-options: 4.1.0 + normalize-package-data: 2.5.0 + read-pkg-up: 7.0.1 + redent: 3.0.0 + trim-newlines: 3.0.1 + type-fest: 0.13.1 + yargs-parser: 18.1.3 + + merge2@1.4.1: {} + + micromatch@4.0.5: + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + + mime@1.6.0: + optional: true + + min-indent@1.0.1: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimist-options@4.1.0: + dependencies: + arrify: 1.0.1 + is-plain-obj: 1.1.0 + kind-of: 6.0.3 + + mixme@0.5.10: {} + + mlly@1.4.2: + dependencies: + acorn: 8.15.0 + pathe: 1.1.1 + pkg-types: 1.0.3 + ufo: 1.3.2 + + ms@2.1.2: {} + + nanoid@3.3.7: {} + + needle@3.3.1: + dependencies: + iconv-lite: 0.6.3 + sax: 1.3.0 + optional: true + + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + + normalize-package-data@2.5.0: + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.8 + semver: 5.7.2 + validate-npm-package-license: 3.0.4 + + normalize-path@3.0.0: + optional: true + + object-inspect@1.13.1: {} + + object-keys@1.1.1: {} + + object.assign@4.1.5: + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + has-symbols: 1.0.3 + object-keys: 1.1.1 + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + os-tmpdir@1.0.2: {} + + outdent@0.5.0: {} + + p-filter@2.1.0: + dependencies: + p-map: 2.1.0 + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-limit@4.0.0: + dependencies: + yocto-queue: 1.0.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-map@2.1.0: {} + + p-try@2.2.0: {} + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.23.5 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse-node-version@1.0.1: + optional: true + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-parse@1.0.7: {} + + path-type@4.0.0: {} + + pathe@1.1.1: {} + + pathval@1.1.1: {} + + pg-int8@1.0.1: {} + + pg-protocol@1.10.3: {} + + pg-types@2.2.0: + dependencies: + pg-int8: 1.0.1 + postgres-array: 2.0.0 + postgres-bytea: 1.0.0 + postgres-date: 1.0.7 + postgres-interval: 1.2.0 + + picocolors@1.0.0: {} + + picomatch@2.3.1: {} + + pify@4.0.1: {} + + pkg-dir@4.2.0: + dependencies: + find-up: 4.1.0 + + pkg-types@1.0.3: + dependencies: + jsonc-parser: 3.2.0 + mlly: 1.4.2 + pathe: 1.1.1 + + postcss@8.4.33: + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.0.2 + + postgres-array@2.0.0: {} + + postgres-bytea@1.0.0: {} + + postgres-date@1.0.7: {} + + postgres-interval@1.2.0: + dependencies: + xtend: 4.0.2 + + postgres@3.4.7: {} + + preferred-pm@3.1.2: + dependencies: + find-up: 5.0.0 + find-yarn-workspace-root2: 1.2.16 + path-exists: 4.0.0 + which-pm: 2.0.0 + + prettier@2.8.8: {} + + prettier@3.1.1: {} + + pretty-format@29.7.0: + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.2.0 + + prr@1.0.1: + optional: true + + pseudomap@1.0.2: {} + + queue-microtask@1.2.3: {} + + quick-lru@4.0.1: {} + + react-is@18.2.0: {} + + react@18.2.0: + dependencies: + loose-envify: 1.4.0 + optional: true + + read-pkg-up@7.0.1: + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + + read-pkg@5.2.0: + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + + read-yaml-file@1.1.0: + dependencies: + graceful-fs: 4.2.11 + js-yaml: 3.14.1 + pify: 4.0.1 + strip-bom: 3.0.0 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + optional: true + + redent@3.0.0: + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + + regenerator-runtime@0.14.1: {} + + regexp.prototype.flags@1.5.1: + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + set-function-name: 2.0.1 + + require-directory@2.1.1: {} + + require-main-filename@2.0.0: {} + + resolve-from@5.0.0: {} + + resolve-pkg-maps@1.0.0: {} + + resolve@1.22.8: + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + reusify@1.0.4: {} + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + rollup@3.29.4: + optionalDependencies: + fsevents: 2.3.3 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + safe-array-concat@1.0.1: + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + has-symbols: 1.0.3 + isarray: 2.0.5 + + safe-regex-test@1.0.0: + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + is-regex: 1.1.4 + + safer-buffer@2.1.2: {} + + sass@1.69.7: + dependencies: + chokidar: 3.5.3 + immutable: 4.3.4 + source-map-js: 1.0.2 + optional: true + + sax@1.2.4: + optional: true + + sax@1.3.0: + optional: true + + semver@5.7.2: {} + + semver@7.5.4: + dependencies: + lru-cache: 6.0.0 + + set-blocking@2.0.0: {} + + set-function-length@1.1.1: + dependencies: + define-data-property: 1.1.1 + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + + set-function-name@2.0.1: + dependencies: + define-data-property: 1.1.1 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.1 + + shebang-command@1.2.0: + dependencies: + shebang-regex: 1.0.0 + + shebang-regex@1.0.0: {} + + side-channel@1.0.4: + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + object-inspect: 1.13.1 + + siginfo@2.0.0: {} + + signal-exit@3.0.7: {} + + slash@3.0.0: {} + + smartwrap@2.0.2: + dependencies: + array.prototype.flat: 1.3.2 + breakword: 1.0.6 + grapheme-splitter: 1.0.4 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + yargs: 15.4.1 + + source-map-js@1.0.2: {} + + source-map@0.6.1: + optional: true + + source-map@0.7.4: + optional: true + + spawndamnit@2.0.0: + dependencies: + cross-spawn: 5.1.0 + signal-exit: 3.0.7 + + spdx-correct@3.2.0: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.16 + + spdx-exceptions@2.3.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.3.0 + spdx-license-ids: 3.0.16 + + spdx-license-ids@3.0.16: {} + + sprintf-js@1.0.3: {} + + stackback@0.0.2: {} + + std-env@3.7.0: {} + + stream-transform@2.1.3: + dependencies: + mixme: 0.5.10 + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string.prototype.trim@1.2.8: + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + + string.prototype.trimend@1.0.7: + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + + string.prototype.trimstart@1.0.7: + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-bom@3.0.0: {} + + strip-indent@3.0.0: + dependencies: + min-indent: 1.0.1 + + strip-literal@1.3.0: + dependencies: + acorn: 8.15.0 + + stylus@0.59.0: + dependencies: + '@adobe/css-tools': 4.3.2 + debug: 4.3.4 + glob: 7.2.3 + sax: 1.2.4 + source-map: 0.7.4 + transitivePeerDependencies: + - supports-color + optional: true + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + term-size@2.2.1: {} + + tinybench@2.5.1: {} + + tinypool@0.6.0: {} + + tinyspy@2.2.0: {} + + tmp@0.0.33: + dependencies: + os-tmpdir: 1.0.2 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + tr46@0.0.3: {} + + trim-newlines@3.0.1: {} + + tslib@2.6.2: + optional: true + + tsx@4.7.0: + dependencies: + esbuild: 0.19.11 + get-tsconfig: 4.7.2 + optionalDependencies: + fsevents: 2.3.3 + + tty-table@4.2.3: + dependencies: + chalk: 4.1.2 + csv: 5.5.3 + kleur: 4.1.5 + smartwrap: 2.0.2 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + yargs: 17.7.2 + + turbo-darwin-64@1.11.3: + optional: true + + turbo-darwin-arm64@1.11.3: + optional: true + + turbo-linux-64@1.11.3: + optional: true + + turbo-linux-arm64@1.11.3: + optional: true + + turbo-windows-64@1.11.3: + optional: true + + turbo-windows-arm64@1.11.3: + optional: true + + turbo@1.11.3: + optionalDependencies: + turbo-darwin-64: 1.11.3 + turbo-darwin-arm64: 1.11.3 + turbo-linux-64: 1.11.3 + turbo-linux-arm64: 1.11.3 + turbo-windows-64: 1.11.3 + turbo-windows-arm64: 1.11.3 + + type-detect@4.0.8: {} + + type-fest@0.13.1: {} + + type-fest@0.6.0: {} + + type-fest@0.8.1: {} + + typed-array-buffer@1.0.0: + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + is-typed-array: 1.1.12 + + typed-array-byte-length@1.0.0: + dependencies: + call-bind: 1.0.5 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + + typed-array-byte-offset@1.0.0: + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.5 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + + typed-array-length@1.0.4: + dependencies: + call-bind: 1.0.5 + for-each: 0.3.3 + is-typed-array: 1.1.12 + + typescript@5.3.3: {} + + ufo@1.3.2: {} + + unbox-primitive@1.0.2: + dependencies: + call-bind: 1.0.5 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + + undici-types@5.26.5: {} + + universalify@0.1.2: {} + + validate-npm-package-license@3.0.4: + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + + vite-node@0.33.0(@types/node@20.11.0)(less@4.2.0)(sass@1.69.7)(stylus@0.59.0): + dependencies: + cac: 6.7.14 + debug: 4.3.4 + mlly: 1.4.2 + pathe: 1.1.1 + picocolors: 1.0.0 + vite: 4.5.1(@types/node@20.11.0)(less@4.2.0)(sass@1.69.7)(stylus@0.59.0) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + + vite@4.5.1(@types/node@20.11.0)(less@4.2.0)(sass@1.69.7)(stylus@0.59.0): + dependencies: + esbuild: 0.18.20 + postcss: 8.4.33 + rollup: 3.29.4 + optionalDependencies: + '@types/node': 20.11.0 + fsevents: 2.3.3 + less: 4.2.0 + sass: 1.69.7 + stylus: 0.59.0 + + vitest@0.33.0(less@4.2.0)(sass@1.69.7)(stylus@0.59.0): + dependencies: + '@types/chai': 4.3.11 + '@types/chai-subset': 1.3.5 + '@types/node': 20.11.0 + '@vitest/expect': 0.33.0 + '@vitest/runner': 0.33.0 + '@vitest/snapshot': 0.33.0 + '@vitest/spy': 0.33.0 + '@vitest/utils': 0.33.0 + acorn: 8.15.0 + acorn-walk: 8.3.1 + cac: 6.7.14 + chai: 4.3.10 + debug: 4.3.4 + local-pkg: 0.4.3 + magic-string: 0.30.5 + pathe: 1.1.1 + picocolors: 1.0.0 + std-env: 3.7.0 + strip-literal: 1.3.0 + tinybench: 2.5.1 + tinypool: 0.6.0 + vite: 4.5.1(@types/node@20.11.0)(less@4.2.0)(sass@1.69.7)(stylus@0.59.0) + vite-node: 0.33.0(@types/node@20.11.0)(less@4.2.0)(sass@1.69.7)(stylus@0.59.0) + why-is-node-running: 2.2.2 + transitivePeerDependencies: + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + + wcwidth@1.0.1: + dependencies: + defaults: 1.0.4 + + webidl-conversions@3.0.1: {} + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + which-boxed-primitive@1.0.2: + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + + which-module@2.0.1: {} + + which-pm@2.0.0: + dependencies: + load-yaml-file: 0.2.0 + path-exists: 4.0.0 + + which-typed-array@1.1.13: + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.5 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + + which@1.3.1: + dependencies: + isexe: 2.0.0 + + why-is-node-running@2.2.2: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + + wrap-ansi@6.2.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrappy@1.0.2: {} + + xtend@4.0.2: {} + + y18n@4.0.3: {} + + y18n@5.0.8: {} + + yallist@2.1.2: {} + + yallist@4.0.0: {} + + yargs-parser@18.1.3: + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + + yargs-parser@21.1.1: {} + + yargs@15.4.1: + dependencies: + cliui: 6.0.0 + decamelize: 1.2.0 + find-up: 4.1.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 4.2.3 + which-module: 2.0.1 + y18n: 4.0.3 + yargs-parser: 18.1.3 + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yocto-queue@0.1.0: {} + + yocto-queue@1.0.0: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 0000000..97739df --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,4 @@ +packages: + - 'apps/*' + - 'packages/*' + - 'tests/*' diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..42a6ed3 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "outDir": "dist", + "target": "es5", + "lib": ["esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "incremental": true, + "paths": { + "#/*": ["./*"] + } + }, + "exclude": ["node_modules", "dist"] +} diff --git a/turbo.json b/turbo.json new file mode 100644 index 0000000..cda84ce --- /dev/null +++ b/turbo.json @@ -0,0 +1,46 @@ +{ + "pipeline": { + "//#prettier-script": { + "outputs": ["node_modules/.cache/prettier/.prettier-cache"] + }, + "build": { + "dependsOn": ["^build"], + "outputs": ["dist/**", "dist-site/**"] + }, + "conformance": { + "dependsOn": ["^build"] + }, + "dev": { + "dependsOn": ["^build"], + "cache": false + }, + "dev-turbo": { + "dependsOn": ["^build"], + "cache": false + }, + "dev-webpack": { + "dependsOn": ["^build"], + "cache": false + }, + "lint-copy": { + "inputs": ["**/*.{md,mdx}"] + }, + "build-release-packages": { + "dependsOn": ["@kubiks/otel-drizzle"] + }, + "root-conformance": {}, + "//#root-conformance": {}, + "type-check": { + "dependsOn": ["^build"], + "outputs": ["**/node_modules/.cache/tsbuildinfo.json"] + }, + "e2e-test": { + "dependsOn": ["^build"], + "inputs": ["**/*.{js,jsx,ts,tsx}"] + }, + "unit-test": { + "dependsOn": ["^build"], + "inputs": ["**/*.{js,jsx,ts,tsx}"] + } + } +}