diff --git a/.gitignore b/.gitignore
index f2471a36d..9ba4ef9ab 100644
--- a/.gitignore
+++ b/.gitignore
@@ -13,3 +13,4 @@ postgres/pgsql-test/output/
.env.local
graphql/server/logs/
graphql/server/*.heapsnapshot
+graphql/server/perf/results/
diff --git a/graphile/graphile-multi-tenancy-cache/README.md b/graphile/graphile-multi-tenancy-cache/README.md
new file mode 100644
index 000000000..caafb36a3
--- /dev/null
+++ b/graphile/graphile-multi-tenancy-cache/README.md
@@ -0,0 +1,232 @@
+# graphile-multi-tenancy-cache
+
+
+
+
+
+
+
+
+
+
+
+
+
+Multi-tenancy cache utilities for PostGraphile. This package implements exact-match buildKey-based handler reuse for Constructive's GraphQL server runtime.
+
+The runtime model is intentionally conservative:
+
+- reuse handlers only when build inputs match exactly
+- no template sharing
+- no SQL rewrite
+- no fingerprint-based handler reuse
+
+## Table of contents
+
+- [Installation](#installation)
+- [Usage](#usage)
+- [Features](#features)
+- [Core concepts](#core-concepts)
+- [How the handler cache works](#how-the-handler-cache-works)
+- [API](#api)
+- [License](#license)
+
+## Installation
+
+```bash
+npm install graphile-multi-tenancy-cache
+```
+
+## Usage
+
+This package is a runtime orchestrator, not a schema plugin. You configure it with a preset builder, then resolve handlers per request.
+
+```typescript
+import {
+ configureMultiTenancyCache,
+ getTenantInstance,
+ getOrCreateTenantInstance,
+ flushTenantInstance,
+ shutdownMultiTenancyCache,
+} from 'graphile-multi-tenancy-cache';
+
+configureMultiTenancyCache({
+ basePresetBuilder(pool, schemas, anonRole, roleName) {
+ return {
+ extends: [],
+ grafast: {
+ context: () => ({})
+ },
+ pgServices: [],
+ };
+ },
+});
+
+async function handleGraphql(req, res) {
+ const svcKey = req.svc_key;
+
+ let tenant = getTenantInstance(svcKey);
+ if (!tenant) {
+ tenant = await getOrCreateTenantInstance({
+ svcKey,
+ pool: req.pgPool,
+ schemas: req.api.schema,
+ anonRole: req.api.anonRole,
+ roleName: req.api.roleName,
+ databaseId: req.api.databaseId,
+ });
+ }
+
+ tenant.handler(req, res);
+}
+
+process.on('SIGTERM', async () => {
+ await shutdownMultiTenancyCache();
+});
+```
+
+## Features
+
+- **Exact-match buildKey reuse** — handlers are shared only when connection identity, schema set, and role inputs match exactly
+- **Request-key indirection** — `svc_key` remains the routing and flush key while `buildKey` becomes the handler identity
+- **Single-flight creation** — concurrent requests for the same `buildKey` coalesce onto one in-flight handler build
+- **Safe rebinding** — reassigning a `svc_key` to a new `buildKey` cleans up unreachable handlers and stale indexes
+- **Targeted flush APIs** — evict by `svc_key` or by `databaseId`
+- **Handler lifecycle management** — graceful disposal and full shutdown support
+- **Diagnostics-friendly** — exposes cache stats and `svc_key -> buildKey` lookup helpers
+
+## Core concepts
+
+| Concept | Meaning |
+|--------|---------|
+| `svc_key` | Request routing key. Used to look up which cached handler the current request should hit. |
+| `buildKey` | Handler identity. A canonical string computed from the inputs that materially affect Graphile instance construction. |
+| `databaseId` | Metadata/flush key. Used to evict all handlers associated with a database. |
+
+### What goes into the buildKey
+
+`buildKey` is computed from:
+
+- connection identity
+- schema list
+- `anonRole`
+- `roleName`
+
+It does **not** include:
+
+- `svc_key`
+- `databaseId`
+- request host/domain
+- auth tokens or transient headers
+
+The value is stored as a canonical plain-text key rather than a truncated hash, so different build inputs cannot collide onto the same handler key.
+
+Schema order is preserved. `['a', 'b']` and `['b', 'a']` intentionally produce different buildKeys.
+
+Examples:
+
+- A buildKey is a canonical string derived from connection identity, schemas, and role inputs:
+
+```json
+{"conn":"127.0.0.1:5432/mydb@postgres","schemas":["services_public"],"anonRole":"administrator","roleName":"administrator"}
+```
+
+- Different route keys can still share the same handler when they resolve to the same build inputs:
+
+```text
+svc_key: tenant-a.example.com
+svc_key: tenant-b.example.com
+svc_key: api:main-db:services-api
+svc_key: schemata:main-db:services_public
+```
+
+ Each route key is first resolved into the inputs that matter for handler construction:
+
+ - `dbname`
+ - `schemas`
+ - `anonRole`
+ - `roleName`
+
+ These then feed into the buildKey:
+
+```json
+{"conn":":/@","schemas":[...],"anonRole":"...","roleName":"..."}
+```
+
+ Different route keys only share a `buildKey` if they ultimately resolve to the same:
+
+ - `conn`
+ - `schemas`
+ - `anonRole`
+ - `roleName`
+
+ In practice, the resolution rules differ by path:
+
+ - domain lookup / `X-Api-Name` usually resolve roles from the API record
+ - `X-Schemata` uses administrator defaults and takes schemas directly from the header
+
+ For example, `api:main-db:services-api` and `schemata:main-db:services_public`
+ only share a handler if the `services-api` lookup ultimately resolves to the
+ same schema list and the same role settings. In many deployments, they do not.
+
+- Schema order matters, so these produce different buildKeys:
+
+```json
+{"conn":"127.0.0.1:5432/mydb@postgres","schemas":["services_public","metaschema_public"],"anonRole":"administrator","roleName":"administrator"}
+{"conn":"127.0.0.1:5432/mydb@postgres","schemas":["metaschema_public","services_public"],"anonRole":"administrator","roleName":"administrator"}
+```
+
+- Different database connections also produce different buildKeys, even when schema names match.
+
+## How the handler cache works
+
+At runtime the cache maintains three main indexes:
+
+- `buildKey -> TenantInstance`
+- `svc_key -> buildKey`
+- `databaseId -> Set`
+
+The flow is:
+
+1. Compute the `buildKey` from pool identity, schemas, and role inputs.
+2. Check the handler cache for an existing `buildKey`.
+3. If another request is already building that handler, await the shared promise.
+4. If no handler exists, create a fresh PostGraphile instance.
+5. Register the `svc_key -> buildKey` mapping only after creation succeeds.
+
+This means:
+
+- different request keys can share one handler when build inputs are identical
+- failed in-flight creation does not leave orphaned mappings
+- stale `svc_key` rebindings can be evicted cleanly
+
+### Fast path vs slow path
+
+- **Fast path**: `svc_key -> buildKey -> TenantInstance`
+- **Slow path**: compute `buildKey`, create/coalesce handler, then register mapping
+
+### Flush and shutdown
+
+The package supports:
+
+- flushing one routed tenant by `svc_key`
+- flushing all handlers associated with a `databaseId`
+- full shutdown and disposal of cached handlers
+
+## API
+
+| Export | Purpose |
+|--------|---------|
+| `configureMultiTenancyCache(config)` | Registers the base preset builder. Must be called before handler creation. |
+| `getTenantInstance(svcKey)` | Fast-path lookup via `svc_key`. |
+| `getOrCreateTenantInstance(config)` | Resolve or create a handler for a request. |
+| `flushTenantInstance(svcKey)` | Evict the handler currently mapped to a route key. |
+| `flushByDatabaseId(databaseId)` | Evict all handlers associated with a database. |
+| `getMultiTenancyCacheStats()` | Return cache/index counts for diagnostics. |
+| `shutdownMultiTenancyCache()` | Dispose handlers and clear all internal state. |
+| `computeBuildKey(pool, schemas, anonRole, roleName)` | Compute the exact-match handler identity. |
+| `getBuildKeyForSvcKey(svcKey)` | Resolve the buildKey currently mapped to a route key. |
+
+## License
+
+MIT
diff --git a/graphile/graphile-multi-tenancy-cache/jest.config.js b/graphile/graphile-multi-tenancy-cache/jest.config.js
new file mode 100644
index 000000000..057a9420e
--- /dev/null
+++ b/graphile/graphile-multi-tenancy-cache/jest.config.js
@@ -0,0 +1,18 @@
+/** @type {import('ts-jest').JestConfigWithTsJest} */
+module.exports = {
+ preset: 'ts-jest',
+ testEnvironment: 'node',
+ transform: {
+ '^.+\\.tsx?$': [
+ 'ts-jest',
+ {
+ babelConfig: false,
+ tsconfig: 'tsconfig.json',
+ },
+ ],
+ },
+ transformIgnorePatterns: [`/node_modules/*`],
+ testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$',
+ moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
+ modulePathIgnorePatterns: ['dist/*']
+};
diff --git a/graphile/graphile-multi-tenancy-cache/package.json b/graphile/graphile-multi-tenancy-cache/package.json
new file mode 100644
index 000000000..a0e33b1a7
--- /dev/null
+++ b/graphile/graphile-multi-tenancy-cache/package.json
@@ -0,0 +1,53 @@
+{
+ "name": "graphile-multi-tenancy-cache",
+ "version": "0.1.0",
+ "author": "Constructive ",
+ "description": "Multi-tenancy cache utilities for PostGraphile — exact-match buildKey handler reuse",
+ "main": "index.js",
+ "module": "esm/index.js",
+ "types": "index.d.ts",
+ "homepage": "https://github.com/constructive-io/constructive",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public",
+ "directory": "dist"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/constructive-io/constructive"
+ },
+ "scripts": {
+ "clean": "makage clean",
+ "prepack": "npm run build",
+ "build": "makage build",
+ "build:dev": "makage build --dev",
+ "lint": "eslint . --fix",
+ "test": "jest",
+ "test:watch": "jest --watch"
+ },
+ "keywords": [
+ "postgraphile",
+ "graphile",
+ "multi-tenancy",
+ "cache",
+ "buildkey",
+ "constructive"
+ ],
+ "bugs": {
+ "url": "https://github.com/constructive-io/constructive/issues"
+ },
+ "dependencies": {
+ "@pgpmjs/logger": "workspace:^",
+ "express": "^5.2.1",
+ "grafserv": "1.0.0",
+ "graphile-config": "1.0.0",
+ "pg": "^8.11.3",
+ "postgraphile": "5.0.0"
+ },
+ "devDependencies": {
+ "@types/express": "^5.0.6",
+ "@types/pg": "^8.10.9",
+ "makage": "^0.3.0",
+ "ts-node": "^10.9.2"
+ }
+}
diff --git a/graphile/graphile-multi-tenancy-cache/src/__tests__/buildkey.test.ts b/graphile/graphile-multi-tenancy-cache/src/__tests__/buildkey.test.ts
new file mode 100644
index 000000000..fc9c1856e
--- /dev/null
+++ b/graphile/graphile-multi-tenancy-cache/src/__tests__/buildkey.test.ts
@@ -0,0 +1,1110 @@
+/**
+ * Unit tests for buildKey-based handler caching.
+ *
+ * Tests cover:
+ * - buildKey computation determinism and sensitivity
+ * - identical build inputs with different svc_keys share the same handler
+ * - different schemas / roles produce different buildKeys
+ * - svc_key-based flush evicts the correct handler
+ * - databaseId-level flush works correctly
+ * - shutdown clears all state
+ */
+
+// We test computeBuildKey directly and use mocks for the orchestrator functions
+// that depend on PostGraphile.
+
+// --- computeBuildKey tests (pure function, no mocking needed) ---
+
+import { computeBuildKey } from '../multi-tenancy-cache';
+
+/**
+ * Create a mock Pool that matches the REAL pg-cache shape:
+ * `new pg.Pool({ connectionString })`.
+ *
+ * pg-cache's getPgPool() creates pools with connectionString only —
+ * individual fields (host, port, database, user) are NOT on pool.options.
+ * This mock must match that shape to test the real code path.
+ */
+function makeMockPool(overrides: {
+ host?: string;
+ port?: number;
+ database?: string;
+ user?: string;
+ password?: string;
+} = {}): import('pg').Pool {
+ const host = overrides.host ?? 'localhost';
+ const port = overrides.port ?? 5432;
+ const database = overrides.database ?? 'testdb';
+ const user = overrides.user ?? 'postgres';
+ const password = overrides.password ?? 'pass';
+ const connectionString = `postgres://${user}:${password}@${host}:${port}/${database}`;
+ return { options: { connectionString } } as unknown as import('pg').Pool;
+}
+
+describe('computeBuildKey', () => {
+ it('should be deterministic for identical inputs', () => {
+ const pool = makeMockPool();
+ const k1 = computeBuildKey(pool, ['public'], 'anon', 'authenticated');
+ const k2 = computeBuildKey(pool, ['public'], 'anon', 'authenticated');
+ expect(k1).toBe(k2);
+ });
+
+ it('should produce a canonical JSON string', () => {
+ const pool = makeMockPool();
+ const key = computeBuildKey(pool, ['public'], 'anon', 'authenticated');
+ expect(key).toBe(
+ JSON.stringify({
+ conn: 'localhost:5432/testdb@postgres',
+ schemas: ['public'],
+ anonRole: 'anon',
+ roleName: 'authenticated',
+ }),
+ );
+ });
+
+ it('should differ when schemas differ', () => {
+ const pool = makeMockPool();
+ const k1 = computeBuildKey(pool, ['public'], 'anon', 'authenticated');
+ const k2 = computeBuildKey(pool, ['private'], 'anon', 'authenticated');
+ expect(k1).not.toBe(k2);
+ });
+
+ it('should differ when schema order differs', () => {
+ const pool = makeMockPool();
+ const k1 = computeBuildKey(pool, ['public', 'private'], 'anon', 'authenticated');
+ const k2 = computeBuildKey(pool, ['private', 'public'], 'anon', 'authenticated');
+ expect(k1).not.toBe(k2);
+ });
+
+ it('should differ when anonRole differs', () => {
+ const pool = makeMockPool();
+ const k1 = computeBuildKey(pool, ['public'], 'anon', 'authenticated');
+ const k2 = computeBuildKey(pool, ['public'], 'guest', 'authenticated');
+ expect(k1).not.toBe(k2);
+ });
+
+ it('should differ when roleName differs', () => {
+ const pool = makeMockPool();
+ const k1 = computeBuildKey(pool, ['public'], 'anon', 'authenticated');
+ const k2 = computeBuildKey(pool, ['public'], 'anon', 'admin');
+ expect(k1).not.toBe(k2);
+ });
+
+ it('should differ when database differs', () => {
+ const p1 = makeMockPool({ database: 'db_a' });
+ const p2 = makeMockPool({ database: 'db_b' });
+ const k1 = computeBuildKey(p1, ['public'], 'anon', 'authenticated');
+ const k2 = computeBuildKey(p2, ['public'], 'anon', 'authenticated');
+ expect(k1).not.toBe(k2);
+ });
+
+ it('should differ when host differs', () => {
+ const p1 = makeMockPool({ host: 'host-a' });
+ const p2 = makeMockPool({ host: 'host-b' });
+ const k1 = computeBuildKey(p1, ['public'], 'anon', 'authenticated');
+ const k2 = computeBuildKey(p2, ['public'], 'anon', 'authenticated');
+ expect(k1).not.toBe(k2);
+ });
+
+ it('should differ when port differs', () => {
+ const p1 = makeMockPool({ port: 5432 });
+ const p2 = makeMockPool({ port: 5433 });
+ const k1 = computeBuildKey(p1, ['public'], 'anon', 'authenticated');
+ const k2 = computeBuildKey(p2, ['public'], 'anon', 'authenticated');
+ expect(k1).not.toBe(k2);
+ });
+
+ it('should differ when user differs', () => {
+ const p1 = makeMockPool({ user: 'alice' });
+ const p2 = makeMockPool({ user: 'bob' });
+ const k1 = computeBuildKey(p1, ['public'], 'anon', 'authenticated');
+ const k2 = computeBuildKey(p2, ['public'], 'anon', 'authenticated');
+ expect(k1).not.toBe(k2);
+ });
+
+ it('should NOT differ when only svc_key would differ (svc_key is not an input)', () => {
+ // Same pool, schemas, roles → same buildKey, regardless of svc_key
+ const pool = makeMockPool();
+ const k1 = computeBuildKey(pool, ['services_public'], 'administrator', 'administrator');
+ const k2 = computeBuildKey(pool, ['services_public'], 'administrator', 'administrator');
+ expect(k1).toBe(k2);
+ });
+});
+
+// --- Orchestrator tests (require mocking PostGraphile) ---
+
+// Mock the heavy dependencies before importing the orchestrator
+jest.mock('postgraphile', () => ({
+ postgraphile: jest.fn(() => ({
+ createServ: jest.fn(() => ({
+ addTo: jest.fn(async () => {}),
+ ready: jest.fn(async () => {}),
+ })),
+ release: jest.fn(async () => {}),
+ })),
+}));
+
+jest.mock('grafserv/express/v4', () => ({
+ grafserv: 'mock-grafserv',
+}));
+
+jest.mock('express', () => {
+ const mockExpress = jest.fn(() => {
+ const app = jest.fn();
+ return app;
+ });
+ return mockExpress;
+});
+
+jest.mock('node:http', () => ({
+ createServer: jest.fn(() => ({
+ listening: false,
+ close: jest.fn((cb: () => void) => cb()),
+ })),
+}));
+
+jest.mock('@pgpmjs/logger', () => ({
+ Logger: jest.fn().mockImplementation(() => ({
+ info: jest.fn(),
+ debug: jest.fn(),
+ warn: jest.fn(),
+ error: jest.fn(),
+ })),
+}));
+
+import {
+ configureMultiTenancyCache,
+ getOrCreateTenantInstance,
+ getTenantInstance,
+ flushTenantInstance,
+ flushByDatabaseId,
+ getMultiTenancyCacheStats,
+ shutdownMultiTenancyCache,
+ getBuildKeyForSvcKey,
+} from '../multi-tenancy-cache';
+
+const mockPresetBuilder = jest.fn((_pool: import('pg').Pool, _schemas: string[], _anon: string, _role: string): import('graphile-config').GraphileConfig.Preset => ({
+ extends: [] as import('graphile-config').GraphileConfig.Preset[],
+ pgServices: [] as never[],
+}));
+
+beforeEach(async () => {
+ await shutdownMultiTenancyCache();
+ configureMultiTenancyCache({ basePresetBuilder: mockPresetBuilder });
+ mockPresetBuilder.mockClear();
+});
+
+afterAll(async () => {
+ await shutdownMultiTenancyCache();
+});
+
+describe('getOrCreateTenantInstance — buildKey deduplication', () => {
+ it('should return same handler for different svc_keys with identical build inputs', async () => {
+ const pool = makeMockPool();
+
+ const t1 = await getOrCreateTenantInstance({
+ svcKey: 'schemata:db-0001-tenant-a:services_public',
+ pool,
+ schemas: ['services_public'],
+ anonRole: 'administrator',
+ roleName: 'administrator',
+ });
+
+ const t2 = await getOrCreateTenantInstance({
+ svcKey: 'schemata:db-0002-tenant-b:services_public',
+ pool,
+ schemas: ['services_public'],
+ anonRole: 'administrator',
+ roleName: 'administrator',
+ });
+
+ // Same handler object (same buildKey)
+ expect(t1).toBe(t2);
+ expect(t1.buildKey).toBe(t2.buildKey);
+
+ // Preset builder called only once (deduplication)
+ expect(mockPresetBuilder).toHaveBeenCalledTimes(1);
+
+ // Both svc_keys resolve to the same buildKey
+ expect(getBuildKeyForSvcKey('schemata:db-0001-tenant-a:services_public')).toBe(t1.buildKey);
+ expect(getBuildKeyForSvcKey('schemata:db-0002-tenant-b:services_public')).toBe(t1.buildKey);
+ });
+
+ it('should return different handlers when schemas differ', async () => {
+ const pool = makeMockPool();
+
+ const t1 = await getOrCreateTenantInstance({
+ svcKey: 'tenant-a',
+ pool,
+ schemas: ['schema_a'],
+ anonRole: 'anon',
+ roleName: 'auth',
+ });
+
+ const t2 = await getOrCreateTenantInstance({
+ svcKey: 'tenant-b',
+ pool,
+ schemas: ['schema_b'],
+ anonRole: 'anon',
+ roleName: 'auth',
+ });
+
+ expect(t1).not.toBe(t2);
+ expect(t1.buildKey).not.toBe(t2.buildKey);
+ expect(mockPresetBuilder).toHaveBeenCalledTimes(2);
+ });
+
+ it('should return different handlers when roles differ', async () => {
+ const pool = makeMockPool();
+
+ const t1 = await getOrCreateTenantInstance({
+ svcKey: 'tenant-a',
+ pool,
+ schemas: ['public'],
+ anonRole: 'anon',
+ roleName: 'user',
+ });
+
+ const t2 = await getOrCreateTenantInstance({
+ svcKey: 'tenant-b',
+ pool,
+ schemas: ['public'],
+ anonRole: 'anon',
+ roleName: 'admin',
+ });
+
+ expect(t1).not.toBe(t2);
+ expect(t1.buildKey).not.toBe(t2.buildKey);
+ });
+});
+
+describe('getTenantInstance — fast path', () => {
+ it('should return handler after registration via getOrCreateTenantInstance', async () => {
+ const pool = makeMockPool();
+ await getOrCreateTenantInstance({
+ svcKey: 'key-1',
+ pool,
+ schemas: ['public'],
+ anonRole: 'anon',
+ roleName: 'auth',
+ });
+
+ const result = getTenantInstance('key-1');
+ expect(result).toBeDefined();
+ expect(result!.buildKey).toBeTruthy();
+ });
+
+ it('should return undefined for unregistered svc_key', () => {
+ expect(getTenantInstance('nonexistent')).toBeUndefined();
+ });
+});
+
+describe('flushTenantInstance — svc_key-based flush', () => {
+ it('should evict the handler and clear all svc_key mappings for the buildKey', async () => {
+ const pool = makeMockPool();
+
+ // Two svc_keys share the same handler
+ await getOrCreateTenantInstance({
+ svcKey: 'key-a',
+ pool,
+ schemas: ['public'],
+ anonRole: 'anon',
+ roleName: 'auth',
+ });
+ await getOrCreateTenantInstance({
+ svcKey: 'key-b',
+ pool,
+ schemas: ['public'],
+ anonRole: 'anon',
+ roleName: 'auth',
+ });
+
+ expect(getTenantInstance('key-a')).toBeDefined();
+ expect(getTenantInstance('key-b')).toBeDefined();
+
+ // Flush via key-a
+ flushTenantInstance('key-a');
+
+ // Both svc_keys should lose their handler (same buildKey was evicted)
+ expect(getTenantInstance('key-a')).toBeUndefined();
+ expect(getTenantInstance('key-b')).toBeUndefined();
+
+ const stats = getMultiTenancyCacheStats();
+ expect(stats.handlerCacheSize).toBe(0);
+ expect(stats.svcKeyMappings).toBe(0);
+ });
+
+ it('should not affect handlers with different buildKeys', async () => {
+ const pool = makeMockPool();
+
+ await getOrCreateTenantInstance({
+ svcKey: 'key-a',
+ pool,
+ schemas: ['schema_a'],
+ anonRole: 'anon',
+ roleName: 'auth',
+ });
+ await getOrCreateTenantInstance({
+ svcKey: 'key-b',
+ pool,
+ schemas: ['schema_b'],
+ anonRole: 'anon',
+ roleName: 'auth',
+ });
+
+ flushTenantInstance('key-a');
+
+ expect(getTenantInstance('key-a')).toBeUndefined();
+ expect(getTenantInstance('key-b')).toBeDefined();
+
+ const stats = getMultiTenancyCacheStats();
+ expect(stats.handlerCacheSize).toBe(1);
+ });
+
+ it('should be a no-op for unknown svc_key', () => {
+ expect(() => flushTenantInstance('nonexistent')).not.toThrow();
+ });
+});
+
+describe('flushByDatabaseId — database-level flush', () => {
+ it('should evict all handlers associated with a databaseId', async () => {
+ const pool = makeMockPool();
+
+ await getOrCreateTenantInstance({
+ svcKey: 'key-a',
+ pool,
+ schemas: ['schema_a'],
+ anonRole: 'anon',
+ roleName: 'auth',
+ databaseId: 'db-001',
+ });
+ await getOrCreateTenantInstance({
+ svcKey: 'key-b',
+ pool,
+ schemas: ['schema_b'],
+ anonRole: 'anon',
+ roleName: 'auth',
+ databaseId: 'db-001',
+ });
+
+ expect(getMultiTenancyCacheStats().handlerCacheSize).toBe(2);
+
+ flushByDatabaseId('db-001');
+
+ expect(getTenantInstance('key-a')).toBeUndefined();
+ expect(getTenantInstance('key-b')).toBeUndefined();
+ expect(getMultiTenancyCacheStats().handlerCacheSize).toBe(0);
+ expect(getMultiTenancyCacheStats().databaseIdMappings).toBe(0);
+ });
+
+ it('should not affect handlers from other databaseIds', async () => {
+ const pool = makeMockPool();
+
+ await getOrCreateTenantInstance({
+ svcKey: 'key-a',
+ pool,
+ schemas: ['schema_a'],
+ anonRole: 'anon',
+ roleName: 'auth',
+ databaseId: 'db-001',
+ });
+ await getOrCreateTenantInstance({
+ svcKey: 'key-b',
+ pool,
+ schemas: ['schema_b'],
+ anonRole: 'anon',
+ roleName: 'auth',
+ databaseId: 'db-002',
+ });
+
+ flushByDatabaseId('db-001');
+
+ expect(getTenantInstance('key-a')).toBeUndefined();
+ expect(getTenantInstance('key-b')).toBeDefined();
+ expect(getMultiTenancyCacheStats().handlerCacheSize).toBe(1);
+ });
+
+ it('should be a no-op for unknown databaseId', () => {
+ expect(() => flushByDatabaseId('nonexistent')).not.toThrow();
+ });
+});
+
+describe('shutdownMultiTenancyCache', () => {
+ it('should clear all state', async () => {
+ const pool = makeMockPool();
+
+ await getOrCreateTenantInstance({
+ svcKey: 'key-a',
+ pool,
+ schemas: ['public'],
+ anonRole: 'anon',
+ roleName: 'auth',
+ databaseId: 'db-001',
+ });
+ await getOrCreateTenantInstance({
+ svcKey: 'key-b',
+ pool,
+ schemas: ['private'],
+ anonRole: 'anon',
+ roleName: 'auth',
+ databaseId: 'db-002',
+ });
+
+ expect(getMultiTenancyCacheStats().handlerCacheSize).toBe(2);
+ expect(getMultiTenancyCacheStats().svcKeyMappings).toBe(2);
+
+ await shutdownMultiTenancyCache();
+
+ const stats = getMultiTenancyCacheStats();
+ expect(stats.handlerCacheSize).toBe(0);
+ expect(stats.svcKeyMappings).toBe(0);
+ expect(stats.databaseIdMappings).toBe(0);
+ expect(stats.inflightCreations).toBe(0);
+ });
+});
+
+describe('getMultiTenancyCacheStats', () => {
+ it('should report correct counts', async () => {
+ const pool = makeMockPool();
+
+ // Create 3 svc_keys, 2 of which share the same buildKey
+ await getOrCreateTenantInstance({
+ svcKey: 'key-a',
+ pool,
+ schemas: ['public'],
+ anonRole: 'anon',
+ roleName: 'auth',
+ databaseId: 'db-001',
+ });
+ await getOrCreateTenantInstance({
+ svcKey: 'key-b',
+ pool,
+ schemas: ['public'],
+ anonRole: 'anon',
+ roleName: 'auth',
+ databaseId: 'db-001',
+ });
+ await getOrCreateTenantInstance({
+ svcKey: 'key-c',
+ pool,
+ schemas: ['private'],
+ anonRole: 'anon',
+ roleName: 'auth',
+ databaseId: 'db-002',
+ });
+
+ const stats = getMultiTenancyCacheStats();
+ expect(stats.handlerCacheSize).toBe(2); // 2 unique buildKeys
+ expect(stats.svcKeyMappings).toBe(3); // 3 svc_keys
+ expect(stats.databaseIdMappings).toBe(2); // 2 databaseIds
+ expect(stats.inflightCreations).toBe(0);
+ });
+});
+
+describe('re-creation after flush', () => {
+ it('should create a new handler after flushing and re-requesting', async () => {
+ const pool = makeMockPool();
+
+ const t1 = await getOrCreateTenantInstance({
+ svcKey: 'key-a',
+ pool,
+ schemas: ['public'],
+ anonRole: 'anon',
+ roleName: 'auth',
+ });
+
+ flushTenantInstance('key-a');
+ expect(getTenantInstance('key-a')).toBeUndefined();
+
+ const t2 = await getOrCreateTenantInstance({
+ svcKey: 'key-a',
+ pool,
+ schemas: ['public'],
+ anonRole: 'anon',
+ roleName: 'auth',
+ });
+
+ // New handler instance (though same buildKey)
+ expect(t2).not.toBe(t1);
+ expect(t2.buildKey).toBe(t1.buildKey);
+ expect(getTenantInstance('key-a')).toBeDefined();
+ });
+});
+
+describe('handler creation failure — orphaned index cleanup', () => {
+ it('should clean up svc_key index when handler creation fails', async () => {
+ // Make the preset builder throw to simulate handler creation failure
+ const failingBuilder = jest.fn(() => {
+ throw new Error('simulated build failure');
+ });
+ configureMultiTenancyCache({ basePresetBuilder: failingBuilder as any });
+
+ const pool = makeMockPool();
+
+ await expect(
+ getOrCreateTenantInstance({
+ svcKey: 'failing-key',
+ pool,
+ schemas: ['public'],
+ anonRole: 'anon',
+ roleName: 'auth',
+ databaseId: 'db-fail',
+ }),
+ ).rejects.toThrow('simulated build failure');
+
+ // svc_key index should NOT have orphaned entries
+ expect(getBuildKeyForSvcKey('failing-key')).toBeUndefined();
+
+ // Stats should show clean state
+ const stats = getMultiTenancyCacheStats();
+ expect(stats.handlerCacheSize).toBe(0);
+ expect(stats.svcKeyMappings).toBe(0);
+ expect(stats.databaseIdMappings).toBe(0);
+ });
+
+ it('should not affect other svc_keys when one fails', async () => {
+ const pool = makeMockPool();
+
+ // First, create a successful handler
+ const t1 = await getOrCreateTenantInstance({
+ svcKey: 'good-key',
+ pool,
+ schemas: ['schema_a'],
+ anonRole: 'anon',
+ roleName: 'auth',
+ databaseId: 'db-001',
+ });
+
+ expect(getTenantInstance('good-key')).toBeDefined();
+
+ // Now make the next creation fail (different buildKey — different schemas)
+ const failingBuilder = jest.fn(() => {
+ throw new Error('simulated build failure');
+ });
+ configureMultiTenancyCache({ basePresetBuilder: failingBuilder as any });
+
+ await expect(
+ getOrCreateTenantInstance({
+ svcKey: 'bad-key',
+ pool,
+ schemas: ['schema_b'],
+ anonRole: 'anon',
+ roleName: 'auth',
+ databaseId: 'db-001',
+ }),
+ ).rejects.toThrow('simulated build failure');
+
+ // good-key should still work
+ expect(getTenantInstance('good-key')).toBeDefined();
+ expect(getTenantInstance('good-key')!.buildKey).toBe(t1.buildKey);
+
+ // bad-key should be cleaned up
+ expect(getBuildKeyForSvcKey('bad-key')).toBeUndefined();
+
+ const stats = getMultiTenancyCacheStats();
+ expect(stats.handlerCacheSize).toBe(1);
+ expect(stats.svcKeyMappings).toBe(1);
+ });
+});
+
+describe('connectionString-based pool identity', () => {
+ it('should produce different buildKeys for pools with different connectionStrings', () => {
+ // This is the REAL production scenario — pools created via pg-cache's getPgPool
+ // have { options: { connectionString } }, not { options: { host, database, user } }
+ const poolA = { options: { connectionString: 'postgres://user:pass@host-a:5432/db_a' } } as unknown as import('pg').Pool;
+ const poolB = { options: { connectionString: 'postgres://user:pass@host-b:5432/db_b' } } as unknown as import('pg').Pool;
+
+ const keyA = computeBuildKey(poolA, ['public'], 'anon', 'auth');
+ const keyB = computeBuildKey(poolB, ['public'], 'anon', 'auth');
+
+ expect(keyA).not.toBe(keyB);
+ });
+
+ it('should produce the same buildKey for identical connectionStrings', () => {
+ const pool1 = { options: { connectionString: 'postgres://user:pass@host:5432/mydb' } } as unknown as import('pg').Pool;
+ const pool2 = { options: { connectionString: 'postgres://user:pass@host:5432/mydb' } } as unknown as import('pg').Pool;
+
+ const key1 = computeBuildKey(pool1, ['public'], 'anon', 'auth');
+ const key2 = computeBuildKey(pool2, ['public'], 'anon', 'auth');
+
+ expect(key1).toBe(key2);
+ });
+
+ it('should differ when only database name differs in connectionString', () => {
+ const pool1 = { options: { connectionString: 'postgres://user:pass@host:5432/db_alpha' } } as unknown as import('pg').Pool;
+ const pool2 = { options: { connectionString: 'postgres://user:pass@host:5432/db_beta' } } as unknown as import('pg').Pool;
+
+ const key1 = computeBuildKey(pool1, ['public'], 'anon', 'auth');
+ const key2 = computeBuildKey(pool2, ['public'], 'anon', 'auth');
+
+ expect(key1).not.toBe(key2);
+ });
+
+ it('should not include password in identity (password changes should not change buildKey)', () => {
+ // Both pools connect to the same host/db/user, only password differs
+ const pool1 = { options: { connectionString: 'postgres://user:pass1@host:5432/mydb' } } as unknown as import('pg').Pool;
+ const pool2 = { options: { connectionString: 'postgres://user:pass2@host:5432/mydb' } } as unknown as import('pg').Pool;
+
+ const key1 = computeBuildKey(pool1, ['public'], 'anon', 'auth');
+ const key2 = computeBuildKey(pool2, ['public'], 'anon', 'auth');
+
+ // buildKeys should be identical — password doesn't affect handler construction
+ expect(key1).toBe(key2);
+ });
+
+ it('should handle pools with individual fields (fallback path)', () => {
+ // Some consumers might create pools with explicit fields instead of connectionString
+ const pool = { options: { host: 'myhost', port: 5432, database: 'mydb', user: 'myuser' } } as unknown as import('pg').Pool;
+ const key = computeBuildKey(pool, ['public'], 'anon', 'auth');
+ expect(key).toBe(
+ JSON.stringify({
+ conn: 'myhost:5432/mydb@myuser',
+ schemas: ['public'],
+ anonRole: 'anon',
+ roleName: 'auth',
+ }),
+ );
+ });
+});
+
+// --- Finding 1: Coalesced creation failure leaves no orphaned mappings ---
+
+describe('coalesced creation failure — no orphaned mappings (Finding 1)', () => {
+ it('should clean up both svc_keys when 2 coalesced requests fail', async () => {
+ const failingBuilder = jest.fn(() => { throw new Error('coalesced fail'); });
+ configureMultiTenancyCache({ basePresetBuilder: failingBuilder as any });
+
+ const pool = makeMockPool();
+ const base = { pool, schemas: ['public'] as string[], anonRole: 'anon', roleName: 'auth', databaseId: 'db-001' };
+
+ // Start two concurrent requests (same buildKey) — both will fail
+ const p1 = getOrCreateTenantInstance({ ...base, svcKey: 'coal-a' });
+ const p2 = getOrCreateTenantInstance({ ...base, svcKey: 'coal-b' });
+
+ const results = await Promise.allSettled([p1, p2]);
+ expect(results[0].status).toBe('rejected');
+ expect(results[1].status).toBe('rejected');
+
+ // No orphaned mappings for either svc_key
+ expect(getBuildKeyForSvcKey('coal-a')).toBeUndefined();
+ expect(getBuildKeyForSvcKey('coal-b')).toBeUndefined();
+
+ const stats = getMultiTenancyCacheStats();
+ expect(stats.handlerCacheSize).toBe(0);
+ expect(stats.svcKeyMappings).toBe(0);
+ expect(stats.databaseIdMappings).toBe(0);
+ expect(stats.inflightCreations).toBe(0);
+ });
+
+ it('should clean up all svc_keys when 3+ coalesced requests fail', async () => {
+ const failingBuilder = jest.fn(() => { throw new Error('coalesced fail 3+'); });
+ configureMultiTenancyCache({ basePresetBuilder: failingBuilder as any });
+
+ const pool = makeMockPool();
+ const base = { pool, schemas: ['public'] as string[], anonRole: 'anon', roleName: 'auth', databaseId: 'db-002' };
+
+ // Start 4 concurrent requests with the same buildKey
+ const promises = [
+ getOrCreateTenantInstance({ ...base, svcKey: 'coal-1' }),
+ getOrCreateTenantInstance({ ...base, svcKey: 'coal-2' }),
+ getOrCreateTenantInstance({ ...base, svcKey: 'coal-3' }),
+ getOrCreateTenantInstance({ ...base, svcKey: 'coal-4' }),
+ ];
+
+ const results = await Promise.allSettled(promises);
+ expect(results.every(r => r.status === 'rejected')).toBe(true);
+
+ // No orphaned mappings for any svc_key
+ for (const key of ['coal-1', 'coal-2', 'coal-3', 'coal-4']) {
+ expect(getBuildKeyForSvcKey(key)).toBeUndefined();
+ }
+
+ const stats = getMultiTenancyCacheStats();
+ expect(stats.handlerCacheSize).toBe(0);
+ expect(stats.svcKeyMappings).toBe(0);
+ expect(stats.databaseIdMappings).toBe(0);
+ expect(stats.inflightCreations).toBe(0);
+ });
+
+ it('should preserve all svc_key mappings when coalesced creation succeeds', async () => {
+ // Uses the default (working) preset builder from beforeEach
+ const pool = makeMockPool();
+ const base = { pool, schemas: ['public'] as string[], anonRole: 'anon', roleName: 'auth', databaseId: 'db-003' };
+
+ // Start 3 concurrent requests (same buildKey)
+ const p1 = getOrCreateTenantInstance({ ...base, svcKey: 'ok-1' });
+ const p2 = getOrCreateTenantInstance({ ...base, svcKey: 'ok-2' });
+ const p3 = getOrCreateTenantInstance({ ...base, svcKey: 'ok-3' });
+
+ const [r1, r2, r3] = await Promise.all([p1, p2, p3]);
+
+ // All got the same handler instance
+ expect(r1).toBe(r2);
+ expect(r2).toBe(r3);
+ expect(r1.buildKey).toBe(r2.buildKey);
+
+ // All 3 svc_key mappings exist
+ expect(getBuildKeyForSvcKey('ok-1')).toBe(r1.buildKey);
+ expect(getBuildKeyForSvcKey('ok-2')).toBe(r1.buildKey);
+ expect(getBuildKeyForSvcKey('ok-3')).toBe(r1.buildKey);
+
+ const stats = getMultiTenancyCacheStats();
+ expect(stats.handlerCacheSize).toBe(1);
+ expect(stats.svcKeyMappings).toBe(3);
+ expect(stats.inflightCreations).toBe(0);
+ });
+});
+
+// --- Finding 2: svc_key rebinding cleans up old handler ---
+
+describe('svc_key rebinding — old handler cleanup (Finding 2)', () => {
+ it('should evict old buildKey when rebound svc_key was its only reference', async () => {
+ const pool = makeMockPool();
+
+ // Create handler with schema_a
+ const tA = await getOrCreateTenantInstance({
+ svcKey: 'rebind-key',
+ pool,
+ schemas: ['schema_a'],
+ anonRole: 'anon',
+ roleName: 'auth',
+ databaseId: 'db-r1',
+ });
+ const buildKeyA = tA.buildKey;
+
+ expect(getMultiTenancyCacheStats().handlerCacheSize).toBe(1);
+
+ // Rebind the same svc_key to a different buildKey (different schemas)
+ const tB = await getOrCreateTenantInstance({
+ svcKey: 'rebind-key',
+ pool,
+ schemas: ['schema_b'],
+ anonRole: 'anon',
+ roleName: 'auth',
+ databaseId: 'db-r1',
+ });
+ const buildKeyB = tB.buildKey;
+ expect(buildKeyA).not.toBe(buildKeyB);
+
+ // Old buildKey A should be evicted (no remaining svc_key references)
+ expect(getBuildKeyForSvcKey('rebind-key')).toBe(buildKeyB);
+ expect(getMultiTenancyCacheStats().handlerCacheSize).toBe(1); // only B remains
+ expect(getTenantInstance('rebind-key')).toBe(tB);
+ });
+
+ it('should NOT evict old buildKey if another svc_key still references it', async () => {
+ const pool = makeMockPool();
+
+ // Two svc_keys share the same buildKey (identical build inputs)
+ await getOrCreateTenantInstance({
+ svcKey: 'shared-1',
+ pool,
+ schemas: ['schema_a'],
+ anonRole: 'anon',
+ roleName: 'auth',
+ });
+ const tShared = await getOrCreateTenantInstance({
+ svcKey: 'shared-2',
+ pool,
+ schemas: ['schema_a'],
+ anonRole: 'anon',
+ roleName: 'auth',
+ });
+ const sharedBuildKey = tShared.buildKey;
+
+ expect(getMultiTenancyCacheStats().handlerCacheSize).toBe(1);
+ expect(getMultiTenancyCacheStats().svcKeyMappings).toBe(2);
+
+ // Rebind shared-1 to a different buildKey (different schemas)
+ const tNew = await getOrCreateTenantInstance({
+ svcKey: 'shared-1',
+ pool,
+ schemas: ['schema_b'],
+ anonRole: 'anon',
+ roleName: 'auth',
+ });
+
+ // Old buildKey should still exist — shared-2 still references it
+ expect(getBuildKeyForSvcKey('shared-1')).toBe(tNew.buildKey);
+ expect(getBuildKeyForSvcKey('shared-2')).toBe(sharedBuildKey);
+ expect(getMultiTenancyCacheStats().handlerCacheSize).toBe(2); // old + new
+ expect(getTenantInstance('shared-2')).toBe(tShared);
+ });
+
+ it('should keep databaseIdToBuildKeys consistent after rebinding', async () => {
+ const pool = makeMockPool();
+
+ // Create with databaseId
+ await getOrCreateTenantInstance({
+ svcKey: 'db-key',
+ pool,
+ schemas: ['schema_a'],
+ anonRole: 'anon',
+ roleName: 'auth',
+ databaseId: 'db-x',
+ });
+
+ expect(getMultiTenancyCacheStats().databaseIdMappings).toBe(1);
+
+ // Rebind to different schemas (different buildKey), same databaseId
+ await getOrCreateTenantInstance({
+ svcKey: 'db-key',
+ pool,
+ schemas: ['schema_b'],
+ anonRole: 'anon',
+ roleName: 'auth',
+ databaseId: 'db-x',
+ });
+
+ // Old buildKey evicted (no remaining refs), new buildKey under same databaseId
+ expect(getMultiTenancyCacheStats().handlerCacheSize).toBe(1);
+ expect(getMultiTenancyCacheStats().databaseIdMappings).toBe(1);
+
+ // Flushing by databaseId should still work
+ flushByDatabaseId('db-x');
+ expect(getTenantInstance('db-key')).toBeUndefined();
+ expect(getMultiTenancyCacheStats().handlerCacheSize).toBe(0);
+ expect(getMultiTenancyCacheStats().databaseIdMappings).toBe(0);
+ });
+
+ it('should allow flush to work correctly after rebinding', async () => {
+ const pool = makeMockPool();
+
+ // Create handler A
+ await getOrCreateTenantInstance({
+ svcKey: 'flush-key',
+ pool,
+ schemas: ['schema_a'],
+ anonRole: 'anon',
+ roleName: 'auth',
+ });
+
+ // Rebind to handler B
+ await getOrCreateTenantInstance({
+ svcKey: 'flush-key',
+ pool,
+ schemas: ['schema_b'],
+ anonRole: 'anon',
+ roleName: 'auth',
+ });
+
+ // Flush via the rebound svc_key — should flush the NEW handler
+ flushTenantInstance('flush-key');
+ expect(getTenantInstance('flush-key')).toBeUndefined();
+ expect(getMultiTenancyCacheStats().handlerCacheSize).toBe(0);
+ expect(getMultiTenancyCacheStats().svcKeyMappings).toBe(0);
+ });
+});
+
+// ---------------------------------------------------------------------------
+// svc_key race condition tests
+// ---------------------------------------------------------------------------
+
+describe('getOrCreateTenantInstance — svc_key race condition (epoch guard)', () => {
+ /**
+ * Access the module-level postgraphile mock so we can override it
+ * per-test with gate-controlled behaviour.
+ */
+ const pgMock = () =>
+ (jest.requireMock('postgraphile') as { postgraphile: jest.Mock }).postgraphile;
+
+ /**
+ * Install a gated postgraphile mock. Each call to `postgraphile()`
+ * creates a new gate; `serv.ready()` blocks until the gate is resolved.
+ * Returns the ordered array of gates so the test can resolve them in
+ * any desired order.
+ */
+ function installGatedMock(): Array<{ resolve: () => void }> {
+ const gates: Array<{ resolve: () => void }> = [];
+ pgMock().mockImplementation(() => {
+ let resolve!: () => void;
+ const promise = new Promise((r) => {
+ resolve = r;
+ });
+ gates.push({ resolve });
+ return {
+ createServ: jest.fn(() => ({
+ addTo: jest.fn(async () => {}),
+ ready: jest.fn(async () => {
+ await promise;
+ }),
+ })),
+ release: jest.fn(async () => {}),
+ };
+ });
+ return gates;
+ }
+
+ afterEach(() => {
+ // Restore the default (instant-resolving) mock so other tests are unaffected
+ pgMock().mockImplementation(() => ({
+ createServ: jest.fn(() => ({
+ addTo: jest.fn(async () => {}),
+ ready: jest.fn(async () => {}),
+ })),
+ release: jest.fn(async () => {}),
+ }));
+ });
+
+ it('newer request finishes first — final mapping stays on newer buildKey', async () => {
+ const gates = installGatedMock();
+ const pool = makeMockPool();
+
+ // Start OLDER request (buildKey A — schemas=['schema_old'])
+ const pOld = getOrCreateTenantInstance({
+ svcKey: 'race-svc',
+ pool,
+ schemas: ['schema_old'],
+ anonRole: 'anon',
+ roleName: 'auth',
+ });
+
+ // Start NEWER request (buildKey B — schemas=['schema_new'])
+ const pNew = getOrCreateTenantInstance({
+ svcKey: 'race-svc',
+ pool,
+ schemas: ['schema_new'],
+ anonRole: 'anon',
+ roleName: 'auth',
+ });
+
+ // Two separate handler creations (different buildKeys → no coalescing)
+ expect(gates.length).toBe(2);
+
+ // Resolve NEWER first
+ gates[1].resolve();
+ const resultNew = await pNew;
+ expect(getBuildKeyForSvcKey('race-svc')).toBe(resultNew.buildKey);
+
+ // Resolve OLDER (stale completion)
+ gates[0].resolve();
+ await pOld;
+
+ // Flush microtask queue for deferred orphan cleanup
+ await new Promise((r) => queueMicrotask(r));
+
+ // Final mapping MUST remain on the newer buildKey
+ expect(getBuildKeyForSvcKey('race-svc')).toBe(resultNew.buildKey);
+ });
+
+ it('older request finishes first — final mapping ends on newer buildKey', async () => {
+ const gates = installGatedMock();
+ const pool = makeMockPool();
+
+ const pOld = getOrCreateTenantInstance({
+ svcKey: 'race-svc-2',
+ pool,
+ schemas: ['schema_old'],
+ anonRole: 'anon',
+ roleName: 'auth',
+ });
+
+ const pNew = getOrCreateTenantInstance({
+ svcKey: 'race-svc-2',
+ pool,
+ schemas: ['schema_new'],
+ anonRole: 'anon',
+ roleName: 'auth',
+ });
+
+ expect(gates.length).toBe(2);
+
+ // Resolve OLDER first — this is stale since newer epoch already exists
+ gates[0].resolve();
+ await pOld;
+
+ // Flush microtask queue
+ await new Promise((r) => queueMicrotask(r));
+
+ // Resolve NEWER
+ gates[1].resolve();
+ const resultNew = await pNew;
+
+ await new Promise((r) => queueMicrotask(r));
+
+ // Final mapping MUST be on the newer buildKey
+ expect(getBuildKeyForSvcKey('race-svc-2')).toBe(resultNew.buildKey);
+ });
+
+ it('no orphaned handler/index state remains after race', async () => {
+ const gates = installGatedMock();
+ const pool = makeMockPool();
+
+ const pOld = getOrCreateTenantInstance({
+ svcKey: 'race-svc-3',
+ pool,
+ schemas: ['schema_old'],
+ anonRole: 'anon',
+ roleName: 'auth',
+ databaseId: 'db-race',
+ });
+
+ const pNew = getOrCreateTenantInstance({
+ svcKey: 'race-svc-3',
+ pool,
+ schemas: ['schema_new'],
+ anonRole: 'anon',
+ roleName: 'auth',
+ databaseId: 'db-race',
+ });
+
+ expect(gates.length).toBe(2);
+
+ // Resolve newer first, then older (worst-case for orphans)
+ gates[1].resolve();
+ await pNew;
+ gates[0].resolve();
+ await pOld;
+
+ // Flush microtask queue for deferred orphan cleanup
+ await new Promise((r) => queueMicrotask(r));
+
+ const stats = getMultiTenancyCacheStats();
+
+ // Only 1 handler should remain (the newer one)
+ expect(stats.handlerCacheSize).toBe(1);
+ // Only 1 svc_key mapping
+ expect(stats.svcKeyMappings).toBe(1);
+ // No in-flight creations
+ expect(stats.inflightCreations).toBe(0);
+ // The surviving handler is reachable via the svc_key
+ expect(getTenantInstance('race-svc-3')).toBeDefined();
+ expect(getBuildKeyForSvcKey('race-svc-3')).toBeDefined();
+ });
+
+ it('same-buildKey coalescing still works with epoch tracking', async () => {
+ // Epoch mechanism must NOT break single-flight behavior when two
+ // different svc_keys compute the same buildKey.
+ const pool = makeMockPool();
+
+ const p1 = getOrCreateTenantInstance({
+ svcKey: 'coalesce-A',
+ pool,
+ schemas: ['shared_schema'],
+ anonRole: 'anon',
+ roleName: 'auth',
+ });
+
+ const p2 = getOrCreateTenantInstance({
+ svcKey: 'coalesce-B',
+ pool,
+ schemas: ['shared_schema'],
+ anonRole: 'anon',
+ roleName: 'auth',
+ });
+
+ const [r1, r2] = await Promise.all([p1, p2]);
+
+ // Same handler (coalesced on identical buildKey)
+ expect(r1.buildKey).toBe(r2.buildKey);
+ expect(r1).toBe(r2);
+
+ // Both svc_keys mapped
+ expect(getBuildKeyForSvcKey('coalesce-A')).toBe(r1.buildKey);
+ expect(getBuildKeyForSvcKey('coalesce-B')).toBe(r2.buildKey);
+
+ // Single handler in cache
+ expect(getMultiTenancyCacheStats().handlerCacheSize).toBe(1);
+ expect(getMultiTenancyCacheStats().svcKeyMappings).toBe(2);
+ });
+});
diff --git a/graphile/graphile-multi-tenancy-cache/src/index.ts b/graphile/graphile-multi-tenancy-cache/src/index.ts
new file mode 100644
index 000000000..03a60b362
--- /dev/null
+++ b/graphile/graphile-multi-tenancy-cache/src/index.ts
@@ -0,0 +1,19 @@
+// --- Orchestrator (primary API) ---
+export {
+ configureMultiTenancyCache,
+ getOrCreateTenantInstance,
+ getTenantInstance,
+ flushTenantInstance,
+ flushByDatabaseId,
+ getMultiTenancyCacheStats,
+ shutdownMultiTenancyCache,
+ computeBuildKey,
+ getBuildKeyForSvcKey,
+} from './multi-tenancy-cache';
+
+export type {
+ TenantConfig,
+ TenantInstance,
+ MultiTenancyCacheStats,
+ MultiTenancyCacheConfig,
+} from './multi-tenancy-cache';
diff --git a/graphile/graphile-multi-tenancy-cache/src/multi-tenancy-cache.ts b/graphile/graphile-multi-tenancy-cache/src/multi-tenancy-cache.ts
new file mode 100644
index 000000000..f11783175
--- /dev/null
+++ b/graphile/graphile-multi-tenancy-cache/src/multi-tenancy-cache.ts
@@ -0,0 +1,487 @@
+/**
+ * Multi-tenancy cache orchestrator.
+ *
+ * Caches one independent PostGraphile handler per **buildKey** (a canonical
+ * string derived from the inputs that materially affect Graphile handler
+ * construction).
+ *
+ * Multiple svc_key values with identical build inputs share the same handler.
+ * svc_key remains the request routing key and flush targeting key.
+ *
+ * No template sharing, no SQL rewrite, no fingerprinting.
+ *
+ * Index structures:
+ * handlerCache: buildKey → TenantInstance
+ * svcKeyToBuildKey: svc_key → buildKey
+ * databaseIdToBuildKeys: databaseId → Set
+ */
+
+import { createServer } from 'node:http';
+import { Logger } from '@pgpmjs/logger';
+import express from 'express';
+import { postgraphile } from 'postgraphile';
+import { grafserv } from 'grafserv/express/v4';
+import type { Pool } from 'pg';
+import type { GraphileConfig } from 'graphile-config';
+
+const log = new Logger('multi-tenancy-cache');
+
+// --- Types ---
+
+export interface TenantConfig {
+ svcKey: string;
+ pool: Pool;
+ schemas: string[];
+ anonRole: string;
+ roleName: string;
+ databaseId?: string;
+}
+
+export interface TenantInstance {
+ buildKey: string;
+ handler: import('express').Express;
+ schemas: string[];
+ pgl: import('postgraphile').PostGraphileInstance;
+ httpServer: import('http').Server;
+ createdAt: number;
+ lastUsedAt: number;
+}
+
+export interface MultiTenancyCacheStats {
+ handlerCacheSize: number;
+ svcKeyMappings: number;
+ databaseIdMappings: number;
+ inflightCreations: number;
+}
+
+interface BuildKeyParts {
+ conn: string;
+ schemas: string[];
+ anonRole: string;
+ roleName: string;
+}
+
+// --- Internal state ---
+
+/** buildKey → TenantInstance (the real handler cache) */
+const handlerCache = new Map();
+
+/** svc_key → buildKey (routing index) */
+const svcKeyToBuildKey = new Map();
+
+/** databaseId → Set (flush-by-database index) */
+const databaseIdToBuildKeys = new Map>();
+
+/** buildKey → Promise (single-flight coalescing) */
+const creatingHandlers = new Map>();
+
+/**
+ * Per-svc_key monotonic epoch.
+ *
+ * Each call to getOrCreateTenantInstance increments the epoch for its
+ * svc_key. After handler creation completes, the caller only registers
+ * a mapping if its captured epoch still matches the current value.
+ *
+ * This prevents a stale (older, slower) build from overwriting a
+ * newer binding that completed earlier.
+ */
+const svcKeyEpoch = new Map();
+
+/** The preset builder, set once by configureMultiTenancyCache(). */
+let presetBuilder: ((
+ pool: Pool,
+ schemas: string[],
+ anonRole: string,
+ roleName: string,
+) => GraphileConfig.Preset) | null = null;
+
+// --- Configuration ---
+
+export interface MultiTenancyCacheConfig {
+ basePresetBuilder: (
+ pool: Pool,
+ schemas: string[],
+ anonRole: string,
+ roleName: string,
+ ) => GraphileConfig.Preset;
+}
+
+/**
+ * One-time package bootstrap. Stores the preset builder.
+ * Must be called before any getOrCreateTenantInstance() calls.
+ */
+export function configureMultiTenancyCache(config: MultiTenancyCacheConfig): void {
+ presetBuilder = config.basePresetBuilder;
+ log.info('Multi-tenancy cache configured (buildKey-based handler caching)');
+}
+
+// --- BuildKey computation ---
+
+/**
+ * Derive the pool connection identity from a pg.Pool instance.
+ *
+ * Real pg.Pool instances created via `new Pool({ connectionString })` store
+ * only `{ connectionString }` in `pool.options` — the individual fields
+ * (host, port, database, user) are NOT parsed onto the options object.
+ *
+ * This function handles both shapes:
+ * 1. connectionString-based (production — via pg-cache's getPgPool)
+ * 2. individual fields (fallback for pools created with explicit fields)
+ */
+function getPoolIdentity(pool: Pool): string {
+ const opts = (pool as unknown as { options: Record }).options || {};
+
+ // Primary path: parse connectionString (matches real pg-cache pool shape)
+ if (typeof opts.connectionString === 'string') {
+ try {
+ const url = new URL(opts.connectionString);
+ const host = url.hostname || 'localhost';
+ const port = url.port || '5432';
+ const database = url.pathname.slice(1) || '';
+ const user = decodeURIComponent(url.username || '');
+ return `${host}:${port}/${database}@${user}`;
+ } catch {
+ // If URL parsing fails, use the raw connectionString (will be hashed anyway)
+ return opts.connectionString;
+ }
+ }
+
+ // Fallback: individual fields (for pools created with explicit host/database/user)
+ if (opts.host || opts.database || opts.user) {
+ return `${opts.host || 'localhost'}:${opts.port || 5432}/${opts.database || ''}@${opts.user || ''}`;
+ }
+
+ // Last resort: no identity available — log a warning
+ log.warn('Pool has no connectionString or individual connection fields — buildKey may not be unique');
+ return 'unknown-pool';
+}
+
+/**
+ * Compute the buildKey from the inputs that materially affect
+ * Graphile handler construction.
+ *
+ * Includes:
+ * - connection identity (host:port/database@user)
+ * - schemas (order preserved — NOT sorted)
+ * - anonRole
+ * - roleName
+ *
+ * Does NOT include:
+ * - svc_key (routing-only)
+ * - databaseId (metadata-only)
+ * - token data, host/domain, transient headers
+ *
+ * The buildKey is intentionally stored as a canonical plain-text string
+ * rather than a truncated hash so there is no collision risk between
+ * different tenant build inputs.
+ */
+export function computeBuildKey(
+ pool: Pool,
+ schemas: string[],
+ anonRole: string,
+ roleName: string,
+): string {
+ const input: BuildKeyParts = {
+ conn: getPoolIdentity(pool),
+ schemas,
+ anonRole,
+ roleName,
+ };
+ return JSON.stringify(input);
+}
+
+// --- Index management ---
+
+/**
+ * Register a svc_key → buildKey mapping and update the databaseId index.
+ *
+ * If the svc_key was previously mapped to a different buildKey, the old
+ * mapping is cleaned up first. If no other svc_keys still reference the
+ * old buildKey, it is evicted (handler disposed, indexes purged).
+ */
+function registerMapping(svcKey: string, buildKey: string, databaseId?: string): void {
+ const oldBuildKey = svcKeyToBuildKey.get(svcKey);
+
+ if (oldBuildKey && oldBuildKey !== buildKey) {
+ // Rebinding — detach this svc_key from the old buildKey first
+ svcKeyToBuildKey.delete(svcKey);
+
+ // If old buildKey has no remaining svc_key references, evict it
+ if (getSvcKeysForBuildKey(oldBuildKey).length === 0) {
+ evictBuildKey(oldBuildKey);
+ }
+ }
+
+ svcKeyToBuildKey.set(svcKey, buildKey);
+ if (databaseId) {
+ let keys = databaseIdToBuildKeys.get(databaseId);
+ if (!keys) {
+ keys = new Set();
+ databaseIdToBuildKeys.set(databaseId, keys);
+ }
+ keys.add(buildKey);
+ }
+}
+
+/**
+ * Collect all svc_keys that map to a given buildKey.
+ */
+function getSvcKeysForBuildKey(buildKey: string): string[] {
+ const result: string[] = [];
+ for (const [svcKey, bk] of svcKeyToBuildKey) {
+ if (bk === buildKey) result.push(svcKey);
+ }
+ return result;
+}
+
+/**
+ * Remove a buildKey from all indexes and dispose the handler (if present).
+ *
+ * Also cleans orphaned indexes — if handler creation failed, the handler
+ * won't be in handlerCache but the svc_key and databaseId indexes may
+ * still reference the buildKey. This function cleans those too.
+ */
+function evictBuildKey(buildKey: string): void {
+ const handler = handlerCache.get(buildKey);
+
+ // Always clean indexes, even if handler isn't cached (handles orphaned indexes)
+ handlerCache.delete(buildKey);
+
+ // Remove all svc_key → buildKey mappings pointing to this buildKey
+ for (const svcKey of getSvcKeysForBuildKey(buildKey)) {
+ svcKeyToBuildKey.delete(svcKey);
+ }
+
+ // Remove from databaseId index
+ for (const [dbId, keys] of databaseIdToBuildKeys) {
+ keys.delete(buildKey);
+ if (keys.size === 0) databaseIdToBuildKeys.delete(dbId);
+ }
+
+ if (handler) {
+ disposeTenant(handler).catch((err) => {
+ log.error(`Failed to dispose handler buildKey=${buildKey}:`, err);
+ });
+ }
+
+ log.debug(`Evicted buildKey=${buildKey} (handler=${handler ? 'disposed' : 'none/orphaned'})`);
+}
+
+// --- Core API ---
+
+/**
+ * Fast-path lookup: svc_key → buildKey → handler.
+ */
+export function getTenantInstance(svcKey: string): TenantInstance | undefined {
+ const buildKey = svcKeyToBuildKey.get(svcKey);
+ if (!buildKey) return undefined;
+
+ const handler = handlerCache.get(buildKey);
+ if (handler) {
+ handler.lastUsedAt = Date.now();
+ }
+ return handler;
+}
+
+/**
+ * Resolve the buildKey for a given svc_key (for diagnostics / external use).
+ */
+export function getBuildKeyForSvcKey(svcKey: string): string | undefined {
+ return svcKeyToBuildKey.get(svcKey);
+}
+
+/**
+ * Resolve or create a tenant handler.
+ *
+ * Flow:
+ * 1. Compute buildKey from config's build inputs
+ * 2. Check handlerCache (fast path) → register mapping, return
+ * 3. Check creatingHandlers (single-flight coalesce) → await, register on success
+ * 4. Create a new independent PostGraphile instance keyed by buildKey
+ * 5. On success: register mapping, store in handlerCache, return
+ *
+ * Registration is deferred until AFTER handler creation succeeds. This
+ * ensures that if the shared in-flight promise rejects, NO participating
+ * svc_key leaves orphaned mappings — creator or follower alike.
+ */
+export async function getOrCreateTenantInstance(
+ config: TenantConfig,
+): Promise {
+ const { svcKey, pool, schemas, anonRole, roleName, databaseId } = config;
+
+ if (!presetBuilder) {
+ throw new Error('Multi-tenancy cache not configured. Call configureMultiTenancyCache() first.');
+ }
+
+ const buildKey = computeBuildKey(pool, schemas, anonRole, roleName);
+
+ // Capture a monotonically increasing epoch for this svc_key.
+ // Only the request holding the latest epoch is allowed to register.
+ const epoch = (svcKeyEpoch.get(svcKey) ?? 0) + 1;
+ svcKeyEpoch.set(svcKey, epoch);
+
+ // Step 1: Fast path — handler already cached
+ const existing = handlerCache.get(buildKey);
+ if (existing) {
+ existing.lastUsedAt = Date.now();
+ if (svcKeyEpoch.get(svcKey) === epoch) {
+ registerMapping(svcKey, buildKey, databaseId);
+ }
+ return existing;
+ }
+
+ // Step 2: Single-flight coalesce — handler being created by another request
+ const pending = creatingHandlers.get(buildKey);
+ if (pending) {
+ // Await the shared promise; register only on success
+ const result = await pending;
+ if (svcKeyEpoch.get(svcKey) === epoch) {
+ registerMapping(svcKey, buildKey, databaseId);
+ }
+ return result;
+ }
+
+ // Step 3: Creator path — build a new handler
+ const promise = doCreateHandler(buildKey, pool, schemas, anonRole, roleName);
+ creatingHandlers.set(buildKey, promise);
+
+ try {
+ const result = await promise;
+ if (svcKeyEpoch.get(svcKey) === epoch) {
+ registerMapping(svcKey, buildKey, databaseId);
+ } else {
+ // Stale completion — a newer request for this svc_key superseded us.
+ // Defer the orphan check so coalesced followers from OTHER svc_keys
+ // have a chance to register before we decide the buildKey is orphaned.
+ queueMicrotask(() => {
+ if (getSvcKeysForBuildKey(buildKey).length === 0) {
+ evictBuildKey(buildKey);
+ }
+ });
+ }
+ return result;
+ } finally {
+ creatingHandlers.delete(buildKey);
+ }
+}
+
+async function doCreateHandler(
+ buildKey: string,
+ pool: Pool,
+ schemas: string[],
+ anonRole: string,
+ roleName: string,
+): Promise {
+ const schemaLabel = schemas.join(',') || 'unknown';
+
+ log.info(`Building handler buildKey=${buildKey} schemas=${schemaLabel}`);
+
+ const preset = presetBuilder!(pool, schemas, anonRole, roleName);
+ const pgl = postgraphile(preset);
+ const serv = pgl.createServ(grafserv);
+
+ const handler = express();
+ const httpServer = createServer(handler);
+ await serv.addTo(handler, httpServer);
+ await serv.ready();
+
+ const tenant: TenantInstance = {
+ buildKey,
+ handler,
+ schemas,
+ pgl,
+ httpServer,
+ createdAt: Date.now(),
+ lastUsedAt: Date.now(),
+ };
+
+ handlerCache.set(buildKey, tenant);
+
+ log.info(`Handler created buildKey=${buildKey} schemas=${schemaLabel}`);
+ return tenant;
+}
+
+/**
+ * Flush by svc_key: resolve to buildKey, evict the handler.
+ *
+ * This removes the handler AND all svc_key mappings pointing to
+ * the same buildKey. Other svc_keys that shared the handler will
+ * re-create it on next request.
+ */
+export function flushTenantInstance(svcKey: string): void {
+ const buildKey = svcKeyToBuildKey.get(svcKey);
+ if (!buildKey) return;
+
+ evictBuildKey(buildKey);
+ log.debug(`Flushed via svc_key=${svcKey} → buildKey=${buildKey}`);
+}
+
+/**
+ * Flush all handlers associated with a databaseId.
+ */
+export function flushByDatabaseId(databaseId: string): void {
+ const buildKeys = databaseIdToBuildKeys.get(databaseId);
+ if (!buildKeys || buildKeys.size === 0) return;
+
+ // Copy to avoid mutation during iteration
+ const keysToEvict = [...buildKeys];
+ for (const buildKey of keysToEvict) {
+ evictBuildKey(buildKey);
+ }
+
+ // Clean up the databaseId entry (evictBuildKey already removes individual keys)
+ databaseIdToBuildKeys.delete(databaseId);
+
+ log.debug(`Flushed ${keysToEvict.length} handler(s) for databaseId=${databaseId}`);
+}
+
+async function disposeTenant(tenant: TenantInstance): Promise {
+ try {
+ if (tenant.httpServer?.listening) {
+ await new Promise((resolve) => {
+ tenant.httpServer.close(() => resolve());
+ });
+ }
+ if (tenant.pgl) {
+ await tenant.pgl.release();
+ }
+ } catch (err) {
+ log.error(`Error disposing handler buildKey=${tenant.buildKey}:`, err);
+ }
+}
+
+/**
+ * Get diagnostic stats for the multi-tenancy cache system.
+ */
+export function getMultiTenancyCacheStats(): MultiTenancyCacheStats {
+ return {
+ handlerCacheSize: handlerCache.size,
+ svcKeyMappings: svcKeyToBuildKey.size,
+ databaseIdMappings: databaseIdToBuildKeys.size,
+ inflightCreations: creatingHandlers.size,
+ };
+}
+
+/**
+ * Release all resources — handler cache, indexes, and in-flight trackers.
+ */
+export async function shutdownMultiTenancyCache(): Promise {
+ log.info('Shutting down multi-tenancy cache...');
+
+ // Dispose all cached handlers
+ const disposals: Promise[] = [];
+ for (const handler of handlerCache.values()) {
+ disposals.push(disposeTenant(handler));
+ }
+ await Promise.allSettled(disposals);
+
+ // Clear all state
+ handlerCache.clear();
+ svcKeyToBuildKey.clear();
+ databaseIdToBuildKeys.clear();
+ creatingHandlers.clear();
+ svcKeyEpoch.clear();
+ presetBuilder = null;
+
+ log.info('Multi-tenancy cache shutdown complete');
+}
diff --git a/graphile/graphile-multi-tenancy-cache/tsconfig.esm.json b/graphile/graphile-multi-tenancy-cache/tsconfig.esm.json
new file mode 100644
index 000000000..02d148781
--- /dev/null
+++ b/graphile/graphile-multi-tenancy-cache/tsconfig.esm.json
@@ -0,0 +1,7 @@
+{
+ "extends": "./tsconfig.json",
+ "compilerOptions": {
+ "outDir": "dist/esm",
+ "module": "nodenext"
+ }
+}
diff --git a/graphile/graphile-multi-tenancy-cache/tsconfig.json b/graphile/graphile-multi-tenancy-cache/tsconfig.json
new file mode 100644
index 000000000..c013e618c
--- /dev/null
+++ b/graphile/graphile-multi-tenancy-cache/tsconfig.json
@@ -0,0 +1,10 @@
+{
+ "extends": "../../tsconfig.json",
+ "compilerOptions": {
+ "outDir": "dist",
+ "rootDir": "src",
+ "module": "nodenext",
+ "moduleResolution": "nodenext"
+ },
+ "include": ["src/**/*"]
+}
diff --git a/graphql/env/src/env.ts b/graphql/env/src/env.ts
index fdf8d62c2..bcb41b7f4 100644
--- a/graphql/env/src/env.ts
+++ b/graphql/env/src/env.ts
@@ -27,6 +27,7 @@ export const getGraphQLEnvVars = (env: NodeJS.ProcessEnv = process.env): Partial
API_ANON_ROLE,
API_ROLE_NAME,
API_DEFAULT_DATABASE_ID,
+ USE_MULTI_TENANCY_CACHE,
EMBEDDER_PROVIDER,
EMBEDDER_MODEL,
@@ -57,6 +58,7 @@ export const getGraphQLEnvVars = (env: NodeJS.ProcessEnv = process.env): Partial
...(API_ANON_ROLE && { anonRole: API_ANON_ROLE }),
...(API_ROLE_NAME && { roleName: API_ROLE_NAME }),
...(API_DEFAULT_DATABASE_ID && { defaultDatabaseId: API_DEFAULT_DATABASE_ID }),
+ ...(USE_MULTI_TENANCY_CACHE && { useMultiTenancyCache: parseEnvBoolean(USE_MULTI_TENANCY_CACHE) }),
},
...((EMBEDDER_PROVIDER || CHAT_PROVIDER) && {
llm: {
diff --git a/graphql/server/package.json b/graphql/server/package.json
index 79754bf02..2784511f5 100644
--- a/graphql/server/package.json
+++ b/graphql/server/package.json
@@ -63,6 +63,7 @@
"graphile-build-pg": "5.0.0",
"graphile-cache": "workspace:^",
"graphile-config": "1.0.0",
+ "graphile-multi-tenancy-cache": "workspace:^",
"graphile-settings": "workspace:^",
"graphile-utils": "5.0.0",
"graphql": "16.13.0",
diff --git a/graphql/server/perf/E2E_BENCHMARK_REPORT.md b/graphql/server/perf/E2E_BENCHMARK_REPORT.md
new file mode 100644
index 000000000..bfac913a5
--- /dev/null
+++ b/graphql/server/perf/E2E_BENCHMARK_REPORT.md
@@ -0,0 +1,148 @@
+# Multi-Tenancy Cache Stress Test Report
+
+This document captures the stress-test results for the current multi-tenancy caching strategy.
+
+The optimization logic evaluated here is:
+
+- exact-match buildKey handler reuse
+- perf stress testing of the old vs new request path
+
+## Test Configuration
+
+| Parameter | Value |
+|---|---|
+| **Server** | Constructive GraphQL server |
+| **Database** | PostgreSQL on localhost:5432, `postgres_perf` |
+| **Node.js** | `NODE_ENV=development` |
+| **Mode comparison** | OLD = dedicated instances (`GRAPHILE_CACHE_MAX` tuned); NEW = `USE_MULTI_TENANCY_CACHE=true` |
+| **Benchmark tool** | `e2e-benchmark.ts` through Express -> PostGraphile -> Grafast -> PostgreSQL |
+| **Query mix** | ListApis (40%), ListApps (20%), ListDomains (20%), Introspection (10%), MetaQuery (10%) |
+
+## Stress Matrix
+
+| # | Test | K | Workers | Duration | Schema Variants | Extras |
+|---|------|---|---------|----------|-----------------|--------|
+| 1 | High-K scale | 100 | 10 | 5 min | `SCHEMA_VARIANTS=4` | `MULTI_ENDPOINT=true` |
+| 2 | High concurrency | 30 | 10 | 5 min | `SCHEMA_VARIANTS=4` | `MULTI_ENDPOINT=true` |
+| 3 | Flush under load | 30 | 10 | 5 min | `SCHEMA_VARIANTS=4` | `CHAOS_FLUSH=true FLUSH_INTERVAL=30` |
+| 4 | Mixed buildKeys (max divergence) | 30 | 10 | 5 min | `SCHEMA_VARIANTS=8` | — |
+| 5 | Soak | 30 | 10 | 2 hr | `SCHEMA_VARIANTS=4` | `CHAOS_FLUSH=true FLUSH_INTERVAL=60` |
+| 6 | Startup burst | 30 | 10 | 1 min | `SCHEMA_VARIANTS=4` | `BURST_START=true` |
+
+Each test was run in OLD mode and NEW mode.
+
+## Results Summary
+
+### Throughput and Memory
+
+| # | Test | OLD QPS | NEW QPS | QPS Delta | OLD Heap Delta | NEW Heap Delta | Heap Saved | svc_keys | Errors |
+|---|------|---------|---------|-----------|----------------|----------------|------------|----------|--------|
+| 1 | High-K | 697 | 772 | +11% | 1,502 MB | 191 MB | -87% | 400 | 0 |
+| 2 | High concurrency | 717 | 731 | +2% | 648 MB | 262 MB | -60% | 120 | 0 |
+| 3 | Flush under load | 689 | 738 | +7% | 1,019 MB | 220 MB | -78% | 120 | 0 |
+| 4 | Mixed buildKeys | 730 | 760 | +4% | 950 MB | 51 MB | -95% | 240 | 0 |
+| 5 | Soak | 733 | 763 | +4% | 856 MB | 560 MB | -35% | 120 | 0 |
+| 6 | Startup burst | 728 | 746 | +2% | 1,216 MB | 264 MB | -78% | 120 | 0 |
+
+### Latency
+
+| # | Test | OLD p50 | NEW p50 | OLD p95 | NEW p95 | OLD p99 | NEW p99 |
+|---|------|---------|---------|---------|---------|---------|---------|
+| 1 | High-K | 14 ms | 14 ms | 21 ms | 19 ms | 25 ms | 21 ms |
+| 2 | High concurrency | 15 ms | 15 ms | 21 ms | 21 ms | 25 ms | 24 ms |
+| 3 | Flush under load | 15 ms | 14 ms | 23 ms | 21 ms | 30 ms | 25 ms |
+| 4 | Mixed buildKeys | 14 ms | 14 ms | 21 ms | 20 ms | 25 ms | 23 ms |
+| 5 | Soak | 15 ms | 14 ms | 21 ms | 20 ms | 24 ms | 23 ms |
+| 6 | Startup burst | 14 ms | 14 ms | 21 ms | 20 ms | 25 ms | 25 ms |
+
+### Soak Detail
+
+| Metric | OLD | NEW |
+|--------|-----|-----|
+| Total queries | 5,281,481 | 5,493,698 |
+| QPS | 733 | 763 |
+| Errors | 0 | 0 |
+| Chaos flush events | 119 | 119 |
+| Flush errors | 0 | 0 |
+| Avg flush latency | 23 ms | 23 ms |
+
+## Analysis
+
+### Why the heap savings are so large
+
+The dominant effect is exact-match buildKey deduplication.
+
+In OLD mode, every `svc_key` keeps its own PostGraphile instance, compiled schema, and runtime caches.
+In NEW mode, `svc_key`s that resolve to the same build inputs share a single handler.
+
+Those build inputs are:
+
+- connection identity
+- schema set
+- `anonRole`
+- `roleName`
+
+This means the memory benefit depends on the ratio between:
+
+- total `svc_key`s observed by the benchmark
+- distinct buildKeys that actually need handlers
+
+When many keys collapse onto a small set of buildKeys, heap savings become dramatic.
+
+### Why throughput gains are smaller than heap gains
+
+The benchmark exercises full HTTP traffic through Express, PostGraphile, Grafast, and PostgreSQL. That means request execution is still dominated by network and query work, not only handler reuse.
+
+The new path still wins because:
+
+- fewer handlers means less GC pressure
+- working-set size is smaller under load
+- hot handlers stay reused across many route keys
+
+At higher `K` and higher `svc_key` fanout, these effects become more visible.
+
+### Why the soak run saves less heap than the short runs
+
+The 2-hour soak includes repeated flushes. That means both modes spend time destroying and rebuilding runtime state instead of converging to a steady-state heap profile.
+
+The new mode still uses less memory, but the gap narrows because:
+
+- handlers are repeatedly evicted
+- rebuilt handlers temporarily increase active memory
+- steady-state reuse is interrupted by churn
+
+### Stability under concurrency and churn
+
+The stress runs validate the runtime fixes added around the buildKey path:
+
+- deferred registration prevents failed in-flight creation from leaving orphaned mappings
+- rebinding cleanup prevents stale buildKey entries from becoming unreachable leaks
+- the `svc_key` epoch guard prevents stale completions from overwriting newer bindings
+
+The 2-hour soak is the strongest signal here: millions of queries, repeated flushes, and no observed request errors.
+
+## What Drives the Results
+
+| Factor | Heap Impact | QPS Impact | Stability Impact |
+|--------|-------------|------------|------------------|
+| buildKey deduplication | dominant | moderate | — |
+| reduced GC pressure | secondary | primary at higher fanout | — |
+| deferred registration | leak prevention | — | critical |
+| rebinding cleanup | leak prevention | — | critical |
+| epoch guard | — | — | critical |
+
+## Conclusion
+
+The current strategy of exact-match buildKey handler reuse delivers substantial memory savings while preserving stable throughput and correctness under load.
+
+For this workload pattern, the results show:
+
+- large heap savings when many `svc_key`s collapse onto few buildKeys
+- modest but consistent QPS gains
+- stable long-running behavior under repeated flush churn
+- no need to reintroduce template sharing or SQL rewriting to get meaningful wins from handler reuse
+
+## Notes
+
+- This file is a results document for the current evaluation cycle.
+- For current script entrypoints and workflow guidance, use `README.md` in the same directory.
diff --git a/graphql/server/perf/README.md b/graphql/server/perf/README.md
new file mode 100644
index 000000000..c467a520f
--- /dev/null
+++ b/graphql/server/perf/README.md
@@ -0,0 +1,186 @@
+# Constructive GraphQL Server Perf Suite
+
+This directory contains the performance tooling for the GraphQL server.
+
+The current optimization model being exercised is:
+
+- exact-match buildKey handler reuse
+- no template sharing
+- no SQL rewrite
+- no fingerprint-based handler reuse in the runtime path
+
+In practice, handlers are reused only when the build inputs match exactly:
+
+- connection identity
+- schema set
+- role configuration
+
+## Perf Lanes
+
+There are two distinct lanes in this folder.
+
+### 1. Lightweight HTTP comparison
+
+This lane drives real HTTP requests through Express -> PostGraphile -> Grafast -> PostgreSQL.
+
+Primary entrypoints:
+
+- `e2e-benchmark.ts`
+- `run-comparison.sh`
+- `run-stress-suite.sh`
+
+Use this lane when you want:
+
+- old vs new mode comparison
+- QPS / latency / heap snapshots
+- repeated server restarts and cache warm/cold behavior
+
+`e2e-benchmark.ts` is the simple benchmark entrypoint. It currently exercises the private-routing path with header-based requests and a fixed query mix.
+
+### 2. DBPM-backed perf framework
+
+This lane provisions real tenant data, builds token pools and request profiles, and can be used for longer-running or more realistic tenant workflows.
+
+Primary entrypoints:
+
+- `phase1-preflight.mjs`
+- `phase1-tech-validate-dbpm.mjs`
+- `phase2-load.mjs`
+- `run-test-spec.mjs`
+- `run-k-sweep.mjs`
+
+Use this lane when you want:
+
+- DBPM tenant provisioning
+- business-table validation
+- shape-variant experiments
+- profile-driven sustained load
+
+## Option A Shape Variants
+
+The DBPM flow now supports Option A shape divergence through additional provisioned tables created via the same provisioning mutation used for the main business table.
+
+Relevant files:
+
+- `phase1-tech-validate-dbpm.mjs`
+- `phase1-preflight.mjs`
+- `summarize-shapes.mjs`
+
+The intended usage is:
+
+1. Provision the normal tenant database and main business table.
+2. Add extra provisioned variant tables for selected tenants with `--dbpm-shape-variants`.
+3. Keep the main CRUD workload pointed only at the original business table.
+4. Use `summarize-shapes.mjs` to inspect structural divergence without relying on raw GraphQL introspection names.
+
+`summarize-shapes.mjs` is a perf-local diagnostic. It is not part of the runtime handler reuse mechanism.
+
+## Quick Start
+
+### Old vs New comparison
+
+```bash
+bash graphql/server/perf/run-comparison.sh --k 20 --duration 300 --workers 8
+```
+
+This runs:
+
+- old mode with enlarged `GRAPHILE_CACHE_MAX`
+- new mode with `USE_MULTI_TENANCY_CACHE=true`
+- a simple side-by-side comparison of throughput, latency, and heap
+
+### Stress suite
+
+```bash
+bash graphql/server/perf/run-stress-suite.sh
+```
+
+This is the curated multi-run shell harness for repeated old/new comparisons under a fixed matrix of scenarios.
+
+### DBPM preflight + load
+
+```bash
+node graphql/server/perf/phase1-preflight.mjs \
+ --run-dir /tmp/constructive-perf/run1 \
+ --dbpm-tenant-count 20 \
+ --dbpm-shape-variants 3
+
+node graphql/server/perf/phase2-load.mjs \
+ --run-dir /tmp/constructive-perf/run1 \
+ --workers 8 \
+ --duration-seconds 300
+```
+
+### Shape summary
+
+```bash
+node graphql/server/perf/summarize-shapes.mjs \
+ --manifest /tmp/constructive-perf/run1/data/business-table-manifest.json
+```
+
+## Key Scripts
+
+| Script | Purpose |
+|---|---|
+| `e2e-benchmark.ts` | Simple HTTP benchmark through the full GraphQL stack |
+| `run-comparison.sh` | Old vs new comparison harness |
+| `run-stress-suite.sh` | Curated multi-run stress matrix |
+| `phase1-preflight.mjs` | Preflight orchestration, DBPM validation, token/keyspace/profile setup |
+| `phase1-tech-validate-dbpm.mjs` | DBPM tenant provisioning and business-table validation |
+| `phase2-load.mjs` | Sustained profile-driven GraphQL load |
+| `run-test-spec.mjs` | Wrapper around phase orchestration |
+| `run-k-sweep.mjs` | Multi-k orchestration |
+| `build-token-pool.mjs` | Sign-in and bearer-token generation |
+| `build-keyspace-profiles.mjs` | Route/keyspace expansion |
+| `build-business-op-profiles.mjs` | Business workload profile construction |
+| `reset-business-test-data.mjs` | Cleanup between runs |
+| `prepare-public-test-access.mjs` | Public-lane preparation |
+| `public-test-access-lib.mjs` | Shared helpers for public-lane access |
+| `summarize-shapes.mjs` | Name-agnostic structural shape summary |
+
+## Important Notes
+
+### `GRAPHILE_CACHE_MAX`
+
+For old-mode comparisons, enlarge `GRAPHILE_CACHE_MAX` so dedicated-instance mode is not artificially dominated by LRU churn.
+
+`run-comparison.sh` already does this automatically.
+
+### Interpreting the two lanes
+
+The lightweight benchmark lane is best for:
+
+- cache-mode comparison
+- heap growth
+- restart / warmup / burst behavior
+
+The DBPM-backed lane is best for:
+
+- tenant provisioning realism
+- shape-variant experiments
+- profile-driven workload behavior
+
+### Report file
+
+`E2E_BENCHMARK_REPORT.md` is the archived stress-test writeup for the current multi-tenancy cache evaluation. Treat it as a results document, not as the single source of truth for script capabilities.
+
+## Output Layout
+
+Most scripts write to a run directory under `/tmp/constructive-perf/`:
+
+```text
+/
+├── data/
+├── logs/
+├── reports/
+└── tmp-scripts/
+```
+
+Typical artifacts include:
+
+- tenant credentials
+- token pools
+- business table manifests
+- business operation profiles
+- load summaries
+- debug and memory snapshots
diff --git a/graphql/server/perf/build-business-op-profiles.mjs b/graphql/server/perf/build-business-op-profiles.mjs
new file mode 100644
index 000000000..89b5e44d6
--- /dev/null
+++ b/graphql/server/perf/build-business-op-profiles.mjs
@@ -0,0 +1,483 @@
+#!/usr/bin/env node
+
+import fs from 'node:fs/promises';
+import path from 'node:path';
+import { Pool } from 'pg';
+
+import {
+ DEFAULT_BASE_URL,
+ DEFAULT_TMP_ROOT,
+ ensureRunDirs,
+ getArgValue,
+ makeRunId,
+ writeJson,
+} from './common.mjs';
+
+const args = process.argv.slice(2);
+
+const runId = getArgValue(args, '--run-id', makeRunId('business-op-profiles'));
+const runDir = path.resolve(getArgValue(args, '--run-dir', path.join(DEFAULT_TMP_ROOT, runId)));
+const baseUrl = getArgValue(args, '--base-url', DEFAULT_BASE_URL);
+
+const manifestPath = path.resolve(
+ getArgValue(args, '--manifest', path.join(runDir, 'data', 'business-table-manifest.json')),
+);
+const tokensPath = path.resolve(
+ getArgValue(args, '--tokens', path.join(runDir, 'data', 'tokens.json')),
+);
+
+const routingMode = getArgValue(args, '--routing-mode', 'private').trim().toLowerCase();
+const compatRoutingMode = getArgValue(
+ args,
+ '--compat-routing-mode',
+ routingMode === 'dual' ? 'private' : routingMode,
+)
+ .trim()
+ .toLowerCase();
+const publicApiName = getArgValue(args, '--public-api-name', 'app').trim();
+const publicSubdomainPrefix = getArgValue(args, '--public-subdomain-prefix', 'app-public-').trim();
+
+const outputPath = path.resolve(
+ getArgValue(args, '--output', path.join(runDir, 'data', 'business-op-profiles.json')),
+);
+const privateOutputPath = path.resolve(
+ getArgValue(
+ args,
+ '--private-output',
+ routingMode === 'dual' ? path.join(runDir, 'data', 'business-op-profiles.private.json') : outputPath,
+ ),
+);
+const publicOutputPath = path.resolve(
+ getArgValue(
+ args,
+ '--public-output',
+ routingMode === 'dual' ? path.join(runDir, 'data', 'business-op-profiles.public.json') : outputPath,
+ ),
+);
+
+const pgConfig = {
+ host: getArgValue(args, '--pg-host', process.env.PGHOST || 'localhost'),
+ port: Number.parseInt(getArgValue(args, '--pg-port', process.env.PGPORT || '5432'), 10),
+ database: getArgValue(args, '--pg-database', process.env.PGDATABASE || 'constructive'),
+ user: getArgValue(args, '--pg-user', process.env.PGUSER || 'postgres'),
+ password: getArgValue(args, '--pg-password', process.env.PGPASSWORD || 'password'),
+};
+
+const VALID_ROUTING_MODES = new Set(['private', 'public', 'dual']);
+
+const toPascalCase = (value) =>
+ String(value)
+ .split(/[^a-zA-Z0-9]+/)
+ .filter(Boolean)
+ .map((part) => part[0].toUpperCase() + part.slice(1))
+ .join('');
+
+const toCamelCase = (pascal) => (pascal.length ? pascal[0].toLowerCase() + pascal.slice(1) : pascal);
+
+const loadJson = async (filePath) => {
+ const raw = await fs.readFile(filePath, 'utf8');
+ return JSON.parse(raw);
+};
+
+const extractTokenProfiles = (payload) => {
+ if (Array.isArray(payload)) return payload;
+ if (Array.isArray(payload?.profiles)) return payload.profiles;
+ return [];
+};
+
+const buildTokenIndex = (tokenProfiles) => {
+ const byTenantKey = new Map();
+ const byEmail = new Map();
+
+ for (const profile of tokenProfiles) {
+ if (profile?.tenantKey) byTenantKey.set(profile.tenantKey, profile);
+ if (profile?.email) byEmail.set(profile.email, profile);
+ }
+
+ return {
+ byTenantKey,
+ byEmail,
+ find(manifestRow) {
+ if (manifestRow.tenantKey && byTenantKey.has(manifestRow.tenantKey)) {
+ return byTenantKey.get(manifestRow.tenantKey);
+ }
+ if (manifestRow.email && byEmail.has(manifestRow.email)) {
+ return byEmail.get(manifestRow.email);
+ }
+ return null;
+ },
+ };
+};
+
+const unique = (items) => [...new Set(items.filter(Boolean))];
+
+const buildGraphqlNames = (tableName) => {
+ const typeName = toPascalCase(tableName);
+ const nodeField = toCamelCase(typeName);
+ const queryField = `${nodeField}s`;
+
+ return {
+ typeName,
+ nodeField,
+ queryField,
+ createMutation: `create${typeName}`,
+ updateMutation: `update${typeName}`,
+ deleteMutation: `delete${typeName}`,
+ createInputType: `Create${typeName}Input`,
+ updateInputType: `Update${typeName}Input`,
+ patchField: `${nodeField}Patch`,
+ };
+};
+
+const getRequestedModes = (mode) => {
+ if (mode === 'dual') return ['private', 'public'];
+ return [mode];
+};
+
+const toHost = (domain, subdomain) => (subdomain ? `${subdomain}.${domain}` : domain);
+
+const scorePublicRoute = ({ apiName, subdomain }, { publicApiName: targetApiName, publicSubdomainPrefix: prefix }) => {
+ let score = 0;
+ if (apiName === targetApiName) score += 20;
+ if (typeof subdomain === 'string' && subdomain.length > 0) {
+ score += 5;
+ if (prefix && subdomain.startsWith(prefix)) score += 10;
+ }
+ return score;
+};
+
+const pickBestPublicRoute = (routes, scoringOptions) => {
+ if (!Array.isArray(routes) || routes.length === 0) return null;
+ const ranked = [...routes]
+ .map((row) => ({ row, score: scorePublicRoute(row, scoringOptions) }))
+ .sort((a, b) => b.score - a.score || String(a.row.host).localeCompare(String(b.row.host)));
+ return ranked[0]?.row ?? null;
+};
+
+const resolvePublicHostMap = async ({ databaseIds, pgConfig, publicApiName, publicSubdomainPrefix }) => {
+ const hostByDatabaseId = new Map();
+ if (!Array.isArray(databaseIds) || databaseIds.length === 0) {
+ return hostByDatabaseId;
+ }
+
+ const pool = new Pool(pgConfig);
+ try {
+ const sql = `
+ select
+ a.database_id::text as database_id,
+ a.name as api_name,
+ d.domain,
+ d.subdomain
+ from services_public.apis a
+ join services_public.domains d on d.api_id = a.id
+ where a.is_public = true
+ and a.database_id::text = any($1::text[])
+ `;
+
+ const result = await pool.query(sql, [databaseIds]);
+ const grouped = new Map();
+
+ for (const row of result.rows ?? []) {
+ const databaseId = row.database_id;
+ const domain = row.domain;
+ const subdomain = row.subdomain;
+ const apiName = row.api_name;
+ if (!databaseId || !domain) continue;
+
+ const host = toHost(domain, subdomain);
+ if (!grouped.has(databaseId)) {
+ grouped.set(databaseId, []);
+ }
+
+ grouped.get(databaseId).push({
+ databaseId,
+ apiName,
+ domain,
+ subdomain,
+ host,
+ });
+ }
+
+ for (const databaseId of databaseIds) {
+ const candidates = grouped.get(databaseId) ?? [];
+ const best = pickBestPublicRoute(candidates, { publicApiName, publicSubdomainPrefix });
+ if (best?.host) {
+ hostByDatabaseId.set(databaseId, best.host);
+ }
+ }
+
+ return hostByDatabaseId;
+ } finally {
+ await pool.end();
+ }
+};
+
+const buildHeadersForMode = ({ mode, tokenProfile, row, publicHost }) => {
+ const headers = {};
+
+ if (mode === 'private') {
+ headers.Host = tokenProfile.headers?.Host || 'localhost';
+ headers['X-Database-Id'] = row.databaseId;
+ headers['X-Schemata'] = row.physicalSchema;
+ } else {
+ headers.Host = publicHost;
+ }
+
+ if (tokenProfile.headers?.Authorization) {
+ headers.Authorization = tokenProfile.headers.Authorization;
+ }
+
+ return headers;
+};
+
+const buildBaseProfile = ({ mode, row, tokenProfile }) => {
+ const gqlNames = buildGraphqlNames(row.tableName);
+
+ const availableSchemas = unique(
+ (Array.isArray(row.availableSchemas) ? row.availableSchemas : [])
+ .map((item) => (typeof item === 'string' ? item : item?.schemaName))
+ .concat([row.physicalSchema]),
+ );
+
+ return {
+ key: `business:${row.tenantKey ?? row.email ?? row.tableName}`,
+ mode: mode === 'private' ? 'business-table-private' : 'business-table-public',
+ routingMode: mode,
+ tenantKey: row.tenantKey ?? null,
+ email: row.email ?? null,
+ graphqlUrl: tokenProfile.graphqlUrl || '/graphql',
+ table: {
+ databaseId: row.databaseId,
+ schemaId: row.schemaId ?? null,
+ tableId: row.tableId ?? null,
+ tableName: row.tableName,
+ physicalSchema: row.physicalSchema,
+ availableSchemas,
+ ...gqlNames,
+ },
+ seed: {
+ rowId: row.seedRowId ?? null,
+ },
+ operationWeights: {
+ create: 0.2,
+ getById: 0.4,
+ updateById: 0.2,
+ listRecent: 0.2,
+ },
+ };
+};
+
+const buildOutputPayload = ({
+ routingMode,
+ runDir,
+ baseUrl,
+ manifestPath,
+ tokensPath,
+ totalManifestRows,
+ totalTokenProfiles,
+ profiles,
+ failures,
+ meta,
+}) => ({
+ createdAt: new Date().toISOString(),
+ runDir,
+ baseUrl,
+ routingMode,
+ manifestPath,
+ tokensPath,
+ totalManifestRows,
+ totalTokenProfiles,
+ successCount: profiles.length,
+ failureCount: failures.length,
+ failures,
+ meta,
+ profiles,
+});
+
+const main = async () => {
+ if (!VALID_ROUTING_MODES.has(routingMode)) {
+ throw new Error(`Invalid --routing-mode=${routingMode}; expected private|public|dual`);
+ }
+
+ if (!VALID_ROUTING_MODES.has(compatRoutingMode) || compatRoutingMode === 'dual') {
+ throw new Error(`Invalid --compat-routing-mode=${compatRoutingMode}; expected private|public`);
+ }
+
+ await ensureRunDirs(runDir);
+
+ const manifest = await loadJson(manifestPath);
+ if (!Array.isArray(manifest) || manifest.length === 0) {
+ throw new Error(`No manifest rows found in ${manifestPath}`);
+ }
+
+ const tokenPayload = await loadJson(tokensPath);
+ const tokenProfiles = extractTokenProfiles(tokenPayload);
+ if (tokenProfiles.length === 0) {
+ throw new Error(`No token profiles found in ${tokensPath}`);
+ }
+
+ const tokenIndex = buildTokenIndex(tokenProfiles);
+ const requestedModes = getRequestedModes(routingMode);
+ const profileSets = {
+ private: [],
+ public: [],
+ };
+ const failureSets = {
+ private: [],
+ public: [],
+ };
+
+ const manifestDatabaseIds = unique(manifest.map((row) => row?.databaseId).filter(Boolean));
+ const publicHostByDatabaseId = requestedModes.includes('public')
+ ? await resolvePublicHostMap({
+ databaseIds: manifestDatabaseIds,
+ pgConfig,
+ publicApiName,
+ publicSubdomainPrefix,
+ })
+ : new Map();
+
+ for (const row of manifest) {
+ const tokenProfile = tokenIndex.find(row);
+ const baseFailure = {
+ tenantKey: row?.tenantKey ?? null,
+ email: row?.email ?? null,
+ };
+
+ if (!tokenProfile) {
+ for (const mode of requestedModes) {
+ failureSets[mode].push({ ...baseFailure, reason: 'matching token profile not found' });
+ }
+ continue;
+ }
+
+ if (!row.databaseId || !row.physicalSchema || !row.tableName) {
+ for (const mode of requestedModes) {
+ failureSets[mode].push({
+ ...baseFailure,
+ reason: 'manifest row missing databaseId/physicalSchema/tableName',
+ });
+ }
+ continue;
+ }
+
+ for (const mode of requestedModes) {
+ const baseProfile = buildBaseProfile({ mode, row, tokenProfile });
+
+ if (mode === 'public') {
+ const publicHost = publicHostByDatabaseId.get(row.databaseId);
+ if (!publicHost) {
+ failureSets.public.push({
+ ...baseFailure,
+ databaseId: row.databaseId,
+ reason: `public host not found (api=${publicApiName})`,
+ });
+ continue;
+ }
+
+ baseProfile.headers = buildHeadersForMode({
+ mode,
+ tokenProfile,
+ row,
+ publicHost,
+ });
+ profileSets.public.push(baseProfile);
+ } else {
+ baseProfile.headers = buildHeadersForMode({
+ mode,
+ tokenProfile,
+ row,
+ publicHost: null,
+ });
+ profileSets.private.push(baseProfile);
+ }
+ }
+ }
+
+ const privatePayload = buildOutputPayload({
+ routingMode: 'private',
+ runDir,
+ baseUrl,
+ manifestPath,
+ tokensPath,
+ totalManifestRows: manifest.length,
+ totalTokenProfiles: tokenProfiles.length,
+ profiles: profileSets.private,
+ failures: failureSets.private,
+ meta: {
+ publicApiName,
+ publicSubdomainPrefix,
+ },
+ });
+
+ const publicPayload = buildOutputPayload({
+ routingMode: 'public',
+ runDir,
+ baseUrl,
+ manifestPath,
+ tokensPath,
+ totalManifestRows: manifest.length,
+ totalTokenProfiles: tokenProfiles.length,
+ profiles: profileSets.public,
+ failures: failureSets.public,
+ meta: {
+ publicApiName,
+ publicSubdomainPrefix,
+ resolvedPublicHosts: publicHostByDatabaseId.size,
+ },
+ });
+
+ const writtenPaths = [];
+
+ if (requestedModes.includes('private')) {
+ await writeJson(privateOutputPath, privatePayload);
+ writtenPaths.push({ mode: 'private', path: privateOutputPath, successCount: privatePayload.successCount });
+ }
+
+ if (requestedModes.includes('public')) {
+ await writeJson(publicOutputPath, publicPayload);
+ writtenPaths.push({ mode: 'public', path: publicOutputPath, successCount: publicPayload.successCount });
+ }
+
+ const compatPayload = compatRoutingMode === 'public' ? publicPayload : privatePayload;
+ const compatSupported = requestedModes.includes(compatRoutingMode);
+
+ if (!compatSupported) {
+ throw new Error(
+ `compat routing mode (${compatRoutingMode}) not generated in --routing-mode=${routingMode}; ` +
+ 'set --compat-routing-mode to one of the generated modes',
+ );
+ }
+
+ await writeJson(outputPath, compatPayload);
+
+ console.log(
+ JSON.stringify(
+ {
+ outputPath,
+ routingMode,
+ compatRoutingMode,
+ privateOutputPath: requestedModes.includes('private') ? privateOutputPath : null,
+ publicOutputPath: requestedModes.includes('public') ? publicOutputPath : null,
+ writtenPaths,
+ counts: {
+ privateSuccess: privatePayload.successCount,
+ privateFailure: privatePayload.failureCount,
+ publicSuccess: publicPayload.successCount,
+ publicFailure: publicPayload.failureCount,
+ },
+ },
+ null,
+ 2,
+ ),
+ );
+
+ if (compatPayload.successCount === 0) {
+ process.exitCode = 2;
+ }
+};
+
+main().catch((error) => {
+ console.error(error instanceof Error ? error.stack : String(error));
+ process.exit(1);
+});
diff --git a/graphql/server/perf/build-keyspace-profiles.mjs b/graphql/server/perf/build-keyspace-profiles.mjs
new file mode 100644
index 000000000..528f3fd16
--- /dev/null
+++ b/graphql/server/perf/build-keyspace-profiles.mjs
@@ -0,0 +1,333 @@
+#!/usr/bin/env node
+
+import fs from 'node:fs/promises';
+import path from 'node:path';
+
+import {
+ DEFAULT_BASE_URL,
+ DEFAULT_TMP_ROOT,
+ ensureRunDirs,
+ getArgValue,
+ makeRunId,
+ postJson,
+ writeJson,
+} from './common.mjs';
+
+const args = process.argv.slice(2);
+
+const runId = getArgValue(args, '--run-id', makeRunId());
+const runDir = path.resolve(getArgValue(args, '--run-dir', path.join(DEFAULT_TMP_ROOT, runId)));
+const baseUrl = getArgValue(args, '--base-url', DEFAULT_BASE_URL);
+const inputPath = path.resolve(getArgValue(args, '--input', path.join(runDir, 'data', 'tokens.json')));
+const outputPath = path.resolve(
+ getArgValue(args, '--output', path.join(runDir, 'data', 'tokens.keyspace.json')),
+);
+const readyProfilesPath = path.resolve(
+ getArgValue(args, '--ready-profiles', path.join(runDir, 'data', 'request-profiles.ready.json')),
+);
+
+const mode = getArgValue(args, '--mode', 'schemata');
+const targetRouteKeys = Number.parseInt(getArgValue(args, '--target-route-keys', '20'), 10);
+const maxSchemaWidth = Math.max(1, Number.parseInt(getArgValue(args, '--max-schema-width', '3'), 10));
+const maxProfiles = Math.max(1, Number.parseInt(getArgValue(args, '--max-profiles', '5000'), 10));
+const noSmokeCheck = args.includes('--no-smoke-check');
+const smokeQuery = getArgValue(args, '--smoke-query', '{ __typename }');
+
+const schemaPool = getArgValue(
+ args,
+ '--schema-pool',
+ 'constructive_public,constructive_auth_public,constructive_users_public,constructive_memberships_public,services_public',
+)
+ .split(',')
+ .map((s) => s.trim())
+ .filter(Boolean);
+
+const uniqueBy = (items, keyFn) => {
+ const seen = new Set();
+ const out = [];
+ for (const item of items) {
+ const key = keyFn(item);
+ if (!seen.has(key)) {
+ seen.add(key);
+ out.push(item);
+ }
+ }
+ return out;
+};
+
+const routeKeyFromHeaders = (headers = {}) => {
+ const apiName = headers['X-Api-Name'];
+ const databaseId = headers['X-Database-Id'];
+ const schemata = headers['X-Schemata'];
+ const metaSchema = headers['X-Meta-Schema'];
+ const host = headers.Host || 'localhost';
+
+ if (apiName && databaseId) return `api:${databaseId}:${apiName}`;
+ if (schemata && databaseId) return `schemata:${databaseId}:${schemata}`;
+ if (metaSchema && databaseId) return `metaschema:api:${databaseId}`;
+ return host;
+};
+
+const normalizeRoutingHeaders = (headers = {}) => {
+ const out = {};
+ if (headers.Host) out.Host = headers.Host;
+ if (headers['X-Api-Name']) out['X-Api-Name'] = headers['X-Api-Name'];
+ if (headers['X-Database-Id']) out['X-Database-Id'] = headers['X-Database-Id'];
+ if (headers['X-Schemata']) out['X-Schemata'] = headers['X-Schemata'];
+ if (headers['X-Meta-Schema']) out['X-Meta-Schema'] = headers['X-Meta-Schema'];
+ return out;
+};
+
+const generateSchemaCombinations = (schemas, maxWidth, hardLimit) => {
+ const out = [];
+
+ const walk = (startIndex, prefix) => {
+ if (out.length >= hardLimit) return;
+ if (prefix.length > 0) {
+ out.push([...prefix]);
+ }
+ if (prefix.length === maxWidth) return;
+ for (let i = startIndex; i < schemas.length; i += 1) {
+ prefix.push(schemas[i]);
+ walk(i + 1, prefix);
+ prefix.pop();
+ if (out.length >= hardLimit) return;
+ }
+ };
+
+ walk(0, []);
+ return out;
+};
+
+const extractTokenProfiles = async (filePath) => {
+ const raw = await fs.readFile(filePath, 'utf8');
+ const parsed = JSON.parse(raw);
+ const profiles = Array.isArray(parsed) ? parsed : parsed?.profiles;
+ if (!Array.isArray(profiles) || profiles.length === 0) {
+ throw new Error(`No profiles found in ${filePath}`);
+ }
+ return { raw: parsed, profiles };
+};
+
+const readReadyProfiles = async (filePath) => {
+ try {
+ const raw = await fs.readFile(filePath, 'utf8');
+ const parsed = JSON.parse(raw);
+ return Array.isArray(parsed) ? parsed : [];
+ } catch {
+ return [];
+ }
+};
+
+const buildCandidateRoutes = async ({ baseProfiles }) => {
+ const candidates = [];
+
+ for (const profile of baseProfiles) {
+ const headers = normalizeRoutingHeaders(profile.headers);
+ const routeKey = routeKeyFromHeaders(headers);
+ candidates.push({
+ type: 'existing',
+ routeKey,
+ headers,
+ });
+ }
+
+ const wantApi = mode === 'api' || mode === 'mixed';
+ const wantSchemata = mode === 'schemata' || mode === 'mixed';
+
+ if (wantApi) {
+ const readyProfiles = await readReadyProfiles(readyProfilesPath);
+ for (const profile of readyProfiles) {
+ if (profile?.mode !== 'private-header-routing') continue;
+ const headers = normalizeRoutingHeaders(profile.headers);
+ if (!headers['X-Api-Name'] || !headers['X-Database-Id']) continue;
+ candidates.push({
+ type: 'api',
+ routeKey: routeKeyFromHeaders(headers),
+ headers,
+ });
+ }
+ }
+
+ if (wantSchemata) {
+ const dbToHost = new Map();
+ for (const profile of baseProfiles) {
+ const db = profile.headers?.['X-Database-Id'];
+ if (!db) continue;
+ if (!dbToHost.has(db)) {
+ dbToHost.set(db, profile.headers?.Host || 'localhost');
+ }
+ }
+
+ const combos = generateSchemaCombinations(schemaPool, maxSchemaWidth, targetRouteKeys * 4);
+ for (const [databaseId, host] of dbToHost.entries()) {
+ for (const combo of combos) {
+ const headers = {
+ Host: host,
+ 'X-Database-Id': databaseId,
+ 'X-Schemata': combo.join(','),
+ };
+ candidates.push({
+ type: 'schemata',
+ routeKey: routeKeyFromHeaders(headers),
+ headers,
+ });
+ }
+ }
+ }
+
+ return uniqueBy(candidates, (route) => route.routeKey);
+};
+
+const smokeRoute = async ({ route, probeProfile }) => {
+ const headers = {
+ Authorization: probeProfile.headers?.Authorization,
+ ...route.headers,
+ };
+ const result = await postJson({
+ url: `${baseUrl}${probeProfile.graphqlUrl ?? '/graphql'}`,
+ headers,
+ payload: { query: smokeQuery },
+ timeoutMs: 15000,
+ });
+
+ const hasErrors = Array.isArray(result.json?.errors) && result.json.errors.length > 0;
+ const ok =
+ result.ok &&
+ !hasErrors &&
+ (result.json?.data?.__typename === 'Query' || result.json?.data != null);
+
+ return {
+ ok,
+ status: result.status,
+ elapsedMs: result.elapsedMs,
+ error: result.error ?? result.json?.errors?.[0]?.message ?? null,
+ };
+};
+
+const pickRouteSet = async ({ baseProfiles, candidates }) => {
+ const selected = [];
+ const diagnostics = [];
+
+ const probeByDb = new Map();
+ for (const profile of baseProfiles) {
+ const db = profile.headers?.['X-Database-Id'] || '__host__';
+ if (!probeByDb.has(db)) {
+ probeByDb.set(db, profile);
+ }
+ }
+
+ for (const route of candidates) {
+ if (selected.length >= targetRouteKeys) break;
+
+ if (noSmokeCheck) {
+ selected.push(route);
+ continue;
+ }
+
+ const db = route.headers?.['X-Database-Id'] || '__host__';
+ const probeProfile = probeByDb.get(db) ?? baseProfiles[0];
+ const smoke = await smokeRoute({ route, probeProfile });
+ diagnostics.push({ routeKey: route.routeKey, type: route.type, ...smoke });
+ if (smoke.ok) {
+ selected.push(route);
+ }
+ }
+
+ return { selected, diagnostics };
+};
+
+const mergeRouteHeaders = (baseHeaders = {}, routeHeaders = {}) => {
+ const out = { ...baseHeaders };
+ delete out['X-Api-Name'];
+ delete out['X-Database-Id'];
+ delete out['X-Schemata'];
+ delete out['X-Meta-Schema'];
+
+ return {
+ ...out,
+ ...routeHeaders,
+ };
+};
+
+const expandProfiles = ({ baseProfiles, routes }) => {
+ const out = [];
+ for (const profile of baseProfiles) {
+ const baseDb = profile.headers?.['X-Database-Id'] ?? null;
+ for (const route of routes) {
+ const routeDb = route.headers?.['X-Database-Id'] ?? null;
+ if (routeDb && baseDb && routeDb !== baseDb) {
+ continue;
+ }
+ out.push({
+ ...profile,
+ key: `${profile.key}|${route.routeKey}`,
+ routeKey: route.routeKey,
+ routeType: route.type,
+ headers: mergeRouteHeaders(profile.headers, route.headers),
+ });
+ if (out.length >= maxProfiles) {
+ return out;
+ }
+ }
+ }
+ return out;
+};
+
+const main = async () => {
+ await ensureRunDirs(runDir);
+ const { raw: inputPayload, profiles: baseProfiles } = await extractTokenProfiles(inputPath);
+
+ const candidates = await buildCandidateRoutes({ baseProfiles });
+ const { selected, diagnostics } = await pickRouteSet({ baseProfiles, candidates });
+
+ if (selected.length === 0) {
+ throw new Error(
+ 'No valid routes selected for keyspace expansion. Try --no-smoke-check or adjust --schema-pool.',
+ );
+ }
+
+ const expandedProfiles = expandProfiles({ baseProfiles, routes: selected });
+ if (expandedProfiles.length === 0) {
+ throw new Error('Expanded profile set is empty.');
+ }
+
+ const payload = {
+ createdAt: new Date().toISOString(),
+ baseUrl,
+ inputPath,
+ mode,
+ targetRouteKeys,
+ selectedRouteKeys: selected.length,
+ schemaPool,
+ noSmokeCheck,
+ smokeQuery,
+ totalInputProfiles: baseProfiles.length,
+ totalOutputProfiles: expandedProfiles.length,
+ selectedRoutes: selected,
+ diagnostics,
+ profiles: expandedProfiles,
+ source: inputPayload,
+ };
+
+ await writeJson(outputPath, payload);
+
+ console.log(
+ JSON.stringify(
+ {
+ outputPath,
+ mode,
+ selectedRouteKeys: selected.length,
+ totalInputProfiles: baseProfiles.length,
+ totalOutputProfiles: expandedProfiles.length,
+ },
+ null,
+ 2,
+ ),
+ );
+};
+
+main().catch((error) => {
+ console.error(error instanceof Error ? error.stack : String(error));
+ process.exit(1);
+});
diff --git a/graphql/server/perf/build-token-pool.mjs b/graphql/server/perf/build-token-pool.mjs
new file mode 100644
index 000000000..b779987d6
--- /dev/null
+++ b/graphql/server/perf/build-token-pool.mjs
@@ -0,0 +1,161 @@
+#!/usr/bin/env node
+
+import fs from 'node:fs/promises';
+import path from 'node:path';
+
+import {
+ DEFAULT_BASE_URL,
+ DEFAULT_TMP_ROOT,
+ ensureRunDirs,
+ getArgValue,
+ makeRunId,
+ postJson,
+ writeJson,
+} from './common.mjs';
+
+const args = process.argv.slice(2);
+
+const runId = getArgValue(args, '--run-id', makeRunId());
+const runDir = path.resolve(
+ getArgValue(args, '--run-dir', path.join(DEFAULT_TMP_ROOT, runId)),
+);
+const baseUrl = getArgValue(args, '--base-url', DEFAULT_BASE_URL);
+const credentialsPath = path.resolve(
+ getArgValue(args, '--credentials', path.join(runDir, 'data', 'tenant-credentials.json')),
+);
+const outputPath = path.resolve(
+ getArgValue(args, '--output', path.join(runDir, 'data', 'tokens.json')),
+);
+
+const signInMutation = `
+mutation SignIn($input: SignInInput!) {
+ signIn(input: $input) {
+ result {
+ id
+ userId
+ accessToken
+ accessTokenExpiresAt
+ }
+ }
+}
+`;
+
+const toRouteHeaders = (row) => {
+ if (row.apiName && row.databaseId) {
+ return {
+ Host: row.host || 'localhost',
+ 'X-Api-Name': row.apiName,
+ 'X-Database-Id': row.databaseId,
+ };
+ }
+
+ if (row.host) {
+ return { Host: row.host };
+ }
+
+ throw new Error(
+ `credential row requires either {apiName,databaseId} or {host}; row=${JSON.stringify({
+ tenantKey: row.tenantKey ?? null,
+ email: row.email ?? null,
+ })}`,
+ );
+};
+
+const main = async () => {
+ await ensureRunDirs(runDir);
+
+ const raw = await fs.readFile(credentialsPath, 'utf8');
+ const credentials = JSON.parse(raw);
+
+ if (!Array.isArray(credentials) || credentials.length === 0) {
+ throw new Error(`No credential rows found in ${credentialsPath}`);
+ }
+
+ const results = [];
+ const failures = [];
+
+ for (const row of credentials) {
+ const headers = toRouteHeaders(row);
+ const response = await postJson({
+ url: `${baseUrl}/graphql`,
+ headers,
+ payload: {
+ query: signInMutation,
+ variables: {
+ input: {
+ email: row.email,
+ password: row.password,
+ rememberMe: true,
+ },
+ },
+ },
+ timeoutMs: 20000,
+ });
+
+ const signInResult = response.json?.data?.signIn?.result;
+ const accessToken = signInResult?.accessToken;
+
+ if (!response.ok || !accessToken) {
+ failures.push({
+ tenantKey: row.tenantKey ?? null,
+ email: row.email ?? null,
+ status: response.status,
+ error:
+ response.error ??
+ response.json?.errors?.[0]?.message ??
+ 'signIn did not return accessToken',
+ });
+ continue;
+ }
+
+ results.push({
+ key: `token:${row.tenantKey ?? row.email}`,
+ mode: 'auth-token',
+ tenantKey: row.tenantKey ?? null,
+ email: row.email,
+ userId: signInResult.userId ?? null,
+ tokenId: signInResult.id ?? null,
+ accessTokenExpiresAt: signInResult.accessTokenExpiresAt ?? null,
+ graphqlUrl: '/graphql',
+ headers: {
+ ...headers,
+ Authorization: `Bearer ${accessToken}`,
+ },
+ });
+ }
+
+ const payload = {
+ createdAt: new Date().toISOString(),
+ baseUrl,
+ credentialsPath,
+ totalInput: credentials.length,
+ successCount: results.length,
+ failureCount: failures.length,
+ failures,
+ profiles: results,
+ };
+
+ await writeJson(outputPath, payload);
+
+ console.log(
+ JSON.stringify(
+ {
+ outputPath,
+ totalInput: credentials.length,
+ successCount: results.length,
+ failureCount: failures.length,
+ },
+ null,
+ 2,
+ ),
+ );
+
+ if (failures.length > 0 && results.length === 0) {
+ process.exit(2);
+ }
+};
+
+main().catch((error) => {
+ console.error(error instanceof Error ? error.stack : String(error));
+ process.exit(1);
+});
diff --git a/graphql/server/perf/common.mjs b/graphql/server/perf/common.mjs
new file mode 100644
index 000000000..b8db37552
--- /dev/null
+++ b/graphql/server/perf/common.mjs
@@ -0,0 +1,231 @@
+import fs from 'node:fs/promises';
+import http from 'node:http';
+import https from 'node:https';
+import path from 'node:path';
+
+export const DEFAULT_TMP_ROOT = '/tmp/constructive-perf';
+export const DEFAULT_BASE_URL = 'http://localhost:3000';
+
+export const getArgValue = (args, flag, fallback = null) => {
+ const index = args.indexOf(flag);
+ if (index === -1 || index === args.length - 1) {
+ return fallback;
+ }
+ return args[index + 1];
+};
+
+export const hasFlag = (args, flag) => args.includes(flag);
+
+export const parseIntArg = (value, fallback) => {
+ const parsed = Number.parseInt(String(value ?? ''), 10);
+ return Number.isFinite(parsed) ? parsed : fallback;
+};
+
+export const toIsoFileTime = (date = new Date()) =>
+ date.toISOString().replace(/[:.]/g, '-');
+
+export const makeRunId = (prefix = 'graphile-cache-leak') =>
+ `${prefix}-${toIsoFileTime(new Date())}-pid${process.pid}`;
+
+export const ensureRunDirs = async (runDir) => {
+ const dirs = {
+ runDir,
+ logsDir: path.join(runDir, 'logs'),
+ samplerDir: path.join(runDir, 'logs', 'sampler'),
+ heapDir: path.join(runDir, 'logs', 'heap'),
+ dataDir: path.join(runDir, 'data'),
+ reportsDir: path.join(runDir, 'reports'),
+ tmpScriptsDir: path.join(runDir, 'tmp-scripts'),
+ };
+
+ await Promise.all(Object.values(dirs).map((dir) => fs.mkdir(dir, { recursive: true })));
+ return dirs;
+};
+
+export const writeJson = async (filePath, payload) => {
+ await fs.mkdir(path.dirname(filePath), { recursive: true });
+ await fs.writeFile(filePath, `${JSON.stringify(payload, null, 2)}\n`, 'utf8');
+};
+
+export const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
+
+const hasHostHeader = (headers = {}) =>
+ Object.keys(headers || {}).some((key) => key.toLowerCase() === 'host');
+
+const requestJsonViaNodeHttp = async ({ url, method, headers = {}, body = null, timeoutMs = 15000 }) => {
+ const startedAt = Date.now();
+
+ return await new Promise((resolve) => {
+ const target = new URL(url);
+ const client = target.protocol === 'https:' ? https : http;
+ const requestHeaders = { ...headers };
+ if (body != null && requestHeaders['Content-Length'] == null && requestHeaders['content-length'] == null) {
+ requestHeaders['Content-Length'] = Buffer.byteLength(body);
+ }
+
+ const req = client.request(
+ {
+ protocol: target.protocol,
+ hostname: target.hostname,
+ port: target.port || (target.protocol === 'https:' ? 443 : 80),
+ path: `${target.pathname}${target.search}`,
+ method,
+ headers: requestHeaders,
+ },
+ (res) => {
+ const chunks = [];
+ res.on('data', (chunk) => chunks.push(chunk));
+ res.on('end', () => {
+ const text = Buffer.concat(chunks).toString('utf8');
+ let json = null;
+ try {
+ json = JSON.parse(text);
+ } catch {
+ json = null;
+ }
+ resolve({
+ ok: Number(res.statusCode ?? 0) >= 200 && Number(res.statusCode ?? 0) < 300,
+ status: Number(res.statusCode ?? 0),
+ elapsedMs: Date.now() - startedAt,
+ json,
+ text,
+ });
+ });
+ },
+ );
+
+ req.on('error', (error) => {
+ resolve({
+ ok: false,
+ status: 0,
+ elapsedMs: Date.now() - startedAt,
+ error: error instanceof Error ? error.message : String(error),
+ });
+ });
+
+ req.setTimeout(timeoutMs, () => {
+ req.destroy(new Error(`Request timeout after ${timeoutMs}ms`));
+ });
+
+ if (body != null) {
+ req.write(body);
+ }
+ req.end();
+ });
+};
+
+export const postJson = async ({ url, payload, headers = {}, timeoutMs = 15000 }) => {
+ const mergedHeaders = {
+ 'Content-Type': 'application/json',
+ ...headers,
+ };
+
+ if (hasHostHeader(mergedHeaders)) {
+ return await requestJsonViaNodeHttp({
+ url,
+ method: 'POST',
+ headers: mergedHeaders,
+ body: JSON.stringify(payload),
+ timeoutMs,
+ });
+ }
+
+ const startedAt = Date.now();
+ const controller = new AbortController();
+ const timeout = setTimeout(() => controller.abort(), timeoutMs);
+
+ try {
+ const response = await fetch(url, {
+ method: 'POST',
+ headers: mergedHeaders,
+ body: JSON.stringify(payload),
+ signal: controller.signal,
+ });
+
+ const text = await response.text();
+ let json = null;
+ try {
+ json = JSON.parse(text);
+ } catch {
+ json = null;
+ }
+
+ return {
+ ok: response.ok,
+ status: response.status,
+ elapsedMs: Date.now() - startedAt,
+ json,
+ text,
+ };
+ } catch (error) {
+ return {
+ ok: false,
+ status: 0,
+ elapsedMs: Date.now() - startedAt,
+ error: error instanceof Error ? error.message : String(error),
+ };
+ } finally {
+ clearTimeout(timeout);
+ }
+};
+
+export const getJson = async ({ url, headers = {}, timeoutMs = 10000 }) => {
+ if (hasHostHeader(headers)) {
+ return await requestJsonViaNodeHttp({
+ url,
+ method: 'GET',
+ headers,
+ timeoutMs,
+ });
+ }
+
+ const startedAt = Date.now();
+ const controller = new AbortController();
+ const timeout = setTimeout(() => controller.abort(), timeoutMs);
+
+ try {
+ const response = await fetch(url, {
+ method: 'GET',
+ headers,
+ signal: controller.signal,
+ });
+ const text = await response.text();
+ let json = null;
+ try {
+ json = JSON.parse(text);
+ } catch {
+ json = null;
+ }
+ return {
+ ok: response.ok,
+ status: response.status,
+ elapsedMs: Date.now() - startedAt,
+ json,
+ text,
+ };
+ } catch (error) {
+ return {
+ ok: false,
+ status: 0,
+ elapsedMs: Date.now() - startedAt,
+ error: error instanceof Error ? error.message : String(error),
+ };
+ } finally {
+ clearTimeout(timeout);
+ }
+};
+
+export const stableStringify = (value) => JSON.stringify(value, Object.keys(value).sort());
+
+export const dedupeBy = (items, makeKey) => {
+ const seen = new Set();
+ const out = [];
+ for (const item of items) {
+ const key = makeKey(item);
+ if (!seen.has(key)) {
+ seen.add(key);
+ out.push(item);
+ }
+ }
+ return out;
+};
diff --git a/graphql/server/perf/e2e-benchmark.ts b/graphql/server/perf/e2e-benchmark.ts
new file mode 100644
index 000000000..ad1575713
--- /dev/null
+++ b/graphql/server/perf/e2e-benchmark.ts
@@ -0,0 +1,398 @@
+#!/usr/bin/env npx ts-node
+/**
+ * E2E GraphQL Multi-Tenancy Benchmark
+ *
+ * Sends REAL GraphQL HTTP requests through the Express server,
+ * exercising the full PostGraphile/Grafast pipeline.
+ *
+ * Usage:
+ * MODE=old|new K=30 DURATION=300 WORKERS=8 npx ts-node perf/e2e-benchmark.ts
+ */
+
+import http from 'http';
+import fs from 'fs';
+import path from 'path';
+
+// ─── Configuration ──────────────────────────────────────────────────────────
+const K = parseInt(process.env.K || '30', 10);
+const DURATION_SEC = parseInt(process.env.DURATION || '300', 10);
+const WORKERS = parseInt(process.env.WORKERS || '8', 10);
+const SERVER_PORT = parseInt(process.env.SERVER_PORT || '3000', 10);
+const SERVER_HOST = process.env.SERVER_HOST || 'localhost';
+const MODE = process.env.MODE || 'old'; // 'old' or 'new'
+
+// Schemas to expose per tenant (via X-Schemata header)
+const SCHEMAS = 'services_public';
+
+// ─── Types ──────────────────────────────────────────────────────────────────
+interface TenantProfile {
+ tenantId: string;
+ databaseId: string;
+ headers: Record;
+}
+
+interface OperationProfile {
+ name: string;
+ weight: number;
+ query: string;
+ variables?: Record;
+}
+
+interface WorkerStats {
+ totalQueries: number;
+ errors: number;
+ latencies: number[];
+ errorSamples: string[];
+}
+
+interface BenchmarkResult {
+ mode: string;
+ k: number;
+ durationSec: number;
+ workers: number;
+ totalQueries: number;
+ errors: number;
+ qps: number;
+ p50: number;
+ p95: number;
+ p99: number;
+ heapBefore: number;
+ heapAfter: number;
+ heapDelta: number;
+ coldStartMs: number[];
+}
+
+// ─── HTTP Client ────────────────────────────────────────────────────────────
+const agent = new http.Agent({
+ keepAlive: true,
+ maxSockets: WORKERS * 4,
+ maxFreeSockets: WORKERS * 2,
+});
+
+function graphqlRequest(
+ query: string,
+ headers: Record,
+ variables?: Record,
+): Promise<{ data?: unknown; errors?: unknown[]; latencyMs: number }> {
+ return new Promise((resolve, reject) => {
+ const body = JSON.stringify({ query, variables });
+ const start = performance.now();
+
+ const req = http.request(
+ {
+ hostname: SERVER_HOST,
+ port: SERVER_PORT,
+ path: '/graphql',
+ method: 'POST',
+ agent,
+ headers: {
+ 'Content-Type': 'application/json',
+ 'Content-Length': Buffer.byteLength(body),
+ ...headers,
+ },
+ },
+ (res) => {
+ let data = '';
+ res.on('data', (chunk) => (data += chunk));
+ res.on('end', () => {
+ const latencyMs = performance.now() - start;
+ try {
+ const parsed = JSON.parse(data);
+ resolve({ ...parsed, latencyMs });
+ } catch {
+ resolve({ errors: [{ message: `Parse error: ${data.slice(0, 200)}` }], latencyMs });
+ }
+ });
+ },
+ );
+ req.on('error', (err) => reject(err));
+ req.write(body);
+ req.end();
+ });
+}
+
+// ─── Memory Snapshot ────────────────────────────────────────────────────────
+async function getHeapUsedMB(): Promise {
+ try {
+ const res = await new Promise((resolve, reject) => {
+ http
+ .get(`http://${SERVER_HOST}:${SERVER_PORT}/debug/memory`, (res) => {
+ let data = '';
+ res.on('data', (chunk) => (data += chunk));
+ res.on('end', () => resolve(data));
+ })
+ .on('error', reject);
+ });
+ const parsed = JSON.parse(res);
+ if (parsed.heapUsed) return parsed.heapUsed / 1024 / 1024;
+ } catch {
+ // fallback
+ }
+ return process.memoryUsage().heapUsed / 1024 / 1024;
+}
+
+// ─── Tenant Profiles ────────────────────────────────────────────────────────
+function buildTenantProfiles(k: number): TenantProfile[] {
+ const profiles: TenantProfile[] = [];
+ for (let i = 0; i < k; i++) {
+ const tenantId = `tenant-${i}`;
+ const databaseId = `db-${i.toString().padStart(4, '0')}-${tenantId}`;
+ profiles.push({
+ tenantId,
+ databaseId,
+ headers: {
+ 'X-Schemata': SCHEMAS,
+ 'X-Database-Id': databaseId,
+ },
+ });
+ }
+ return profiles;
+}
+
+// ─── Operation Profiles ─────────────────────────────────────────────────────
+function buildOperationProfiles(): OperationProfile[] {
+ return [
+ {
+ name: 'ListApis',
+ weight: 40,
+ query: `query ListApis { apis(first: 10) { nodes { id name dbname isPublic } totalCount } }`,
+ },
+ {
+ name: 'ListApps',
+ weight: 20,
+ query: `query ListApps { apps(first: 10) { nodes { id name databaseId } totalCount } }`,
+ },
+ {
+ name: 'ListDomains',
+ weight: 20,
+ query: `query ListDomains { domains(first: 10) { nodes { id domain subdomain } totalCount } }`,
+ },
+ {
+ name: 'Introspection',
+ weight: 10,
+ query: `query Introspect { __schema { queryType { name } mutationType { name } types { name kind } } }`,
+ },
+ {
+ name: 'MetaQuery',
+ weight: 10,
+ query: `query Meta { _meta { tables { name schemaName fields { name } } } }`,
+ },
+ ];
+}
+
+function pickWeightedOperation(profiles: OperationProfile[]): OperationProfile {
+ const totalWeight = profiles.reduce((sum, p) => sum + p.weight, 0);
+ let r = Math.random() * totalWeight;
+ for (const p of profiles) {
+ r -= p.weight;
+ if (r <= 0) return p;
+ }
+ return profiles[profiles.length - 1];
+}
+
+// ─── Cold Start: Warm up all tenants ────────────────────────────────────────
+async function warmUpTenants(tenants: TenantProfile[], operations: OperationProfile[]): Promise {
+ const coldStartMs: number[] = [];
+ const simpleQuery = operations[0]; // ListApis
+
+ console.log(`\n[Phase 1] Warming up ${tenants.length} tenants (cold start)...`);
+ for (const tenant of tenants) {
+ const start = performance.now();
+ const result = await graphqlRequest(simpleQuery.query, tenant.headers, simpleQuery.variables);
+ const elapsed = performance.now() - start;
+ coldStartMs.push(elapsed);
+
+ if (result.errors) {
+ console.error(` ERROR warming tenant ${tenant.tenantId}:`, JSON.stringify(result.errors).slice(0, 200));
+ } else {
+ console.log(` ${tenant.tenantId}: ${elapsed.toFixed(1)}ms (cold start)`);
+ }
+ }
+ return coldStartMs;
+}
+
+// ─── Pressure Worker ────────────────────────────────────────────────────────
+async function pressureWorker(
+ tenants: TenantProfile[],
+ operations: OperationProfile[],
+ durationMs: number,
+ _workerId: number,
+): Promise {
+ const stats: WorkerStats = { totalQueries: 0, errors: 0, latencies: [], errorSamples: [] };
+ const endTime = Date.now() + durationMs;
+
+ while (Date.now() < endTime) {
+ const tenant = tenants[Math.floor(Math.random() * tenants.length)];
+ const op = pickWeightedOperation(operations);
+
+ try {
+ const result = await graphqlRequest(op.query, tenant.headers, op.variables);
+ stats.totalQueries++;
+ stats.latencies.push(result.latencyMs);
+
+ if (result.errors) {
+ stats.errors++;
+ if (stats.errorSamples.length < 3) {
+ stats.errorSamples.push(`[${op.name}] ${JSON.stringify(result.errors).slice(0, 200)}`);
+ }
+ }
+ } catch (err) {
+ stats.errors++;
+ stats.totalQueries++;
+ if (stats.errorSamples.length < 3) {
+ stats.errorSamples.push(`[${op.name}] ${String(err).slice(0, 200)}`);
+ }
+ }
+ }
+
+ return stats;
+}
+
+// ─── Percentile Calculator ──────────────────────────────────────────────────
+function percentile(sorted: number[], p: number): number {
+ if (sorted.length === 0) return 0;
+ const idx = Math.ceil((p / 100) * sorted.length) - 1;
+ return sorted[Math.max(0, idx)];
+}
+
+// ─── Main Benchmark ─────────────────────────────────────────────────────────
+async function runBenchmark(): Promise {
+ console.log('='.repeat(70));
+ console.log(`E2E GraphQL Benchmark — Mode: ${MODE.toUpperCase()}`);
+ console.log(` K=${K} tenants, Duration=${DURATION_SEC}s, Workers=${WORKERS}`);
+ console.log(` Server: http://${SERVER_HOST}:${SERVER_PORT}`);
+ console.log(` Schemas: ${SCHEMAS}`);
+ console.log('='.repeat(70));
+
+ const tenants = buildTenantProfiles(K);
+ const operations = buildOperationProfiles();
+
+ // Phase 0: Pre-benchmark heap snapshot
+ const heapBefore = await getHeapUsedMB();
+ console.log(`\n[Phase 0] Heap before warmup: ${heapBefore.toFixed(2)} MB`);
+
+ // Phase 1: Cold start — warm up all tenants
+ const coldStartMs = await warmUpTenants(tenants, operations);
+
+ // Second warm-up pass to ensure operation plan caches are populated
+ console.log(`\n[Phase 1b] Second warm-up pass (populate operation plan caches)...`);
+ for (const tenant of tenants) {
+ for (const op of operations) {
+ await graphqlRequest(op.query, tenant.headers, op.variables);
+ }
+ }
+
+ // Phase 2: Heap snapshot after warmup
+ const heapAfterWarmup = await getHeapUsedMB();
+ console.log(`\n[Phase 2] Heap after warmup: ${heapAfterWarmup.toFixed(2)} MB`);
+
+ // Phase 3: Sustained pressure test
+ const durationMs = DURATION_SEC * 1000;
+ console.log(`\n[Phase 3] Starting ${WORKERS} workers for ${DURATION_SEC}s sustained load...`);
+ const startTime = Date.now();
+
+ const workerPromises: Promise[] = [];
+ for (let w = 0; w < WORKERS; w++) {
+ workerPromises.push(pressureWorker(tenants, operations, durationMs, w));
+ }
+
+ // Progress reporting
+ const progressInterval = setInterval(() => {
+ const elapsed = ((Date.now() - startTime) / 1000).toFixed(0);
+ const remaining = Math.max(0, DURATION_SEC - parseInt(elapsed));
+ process.stdout.write(`\r Elapsed: ${elapsed}s / ${DURATION_SEC}s (${remaining}s remaining) `);
+ }, 5000);
+
+ const results = await Promise.all(workerPromises);
+ clearInterval(progressInterval);
+ console.log('\n');
+
+ // Phase 4: Post-pressure heap snapshot
+ const heapAfter = await getHeapUsedMB();
+
+ // Aggregate stats
+ let totalQueries = 0;
+ let totalErrors = 0;
+ const allLatencies: number[] = [];
+ const allErrorSamples: string[] = [];
+
+ for (const r of results) {
+ totalQueries += r.totalQueries;
+ totalErrors += r.errors;
+ allLatencies.push(...r.latencies);
+ allErrorSamples.push(...r.errorSamples);
+ }
+
+ if (allErrorSamples.length > 0) {
+ console.log(`\n[Errors] Sample error messages (first ${Math.min(allErrorSamples.length, 5)}):`);
+ for (const s of allErrorSamples.slice(0, 5)) {
+ console.log(` ${s}`);
+ }
+ }
+
+ allLatencies.sort((a, b) => a - b);
+ const actualDuration = (Date.now() - startTime) / 1000;
+ const qps = totalQueries / actualDuration;
+
+ const result: BenchmarkResult = {
+ mode: MODE,
+ k: K,
+ durationSec: Math.round(actualDuration),
+ workers: WORKERS,
+ totalQueries,
+ errors: totalErrors,
+ qps: Math.round(qps),
+ p50: Math.round(percentile(allLatencies, 50)),
+ p95: Math.round(percentile(allLatencies, 95)),
+ p99: Math.round(percentile(allLatencies, 99)),
+ heapBefore: Math.round(heapBefore * 100) / 100,
+ heapAfter: Math.round(heapAfter * 100) / 100,
+ heapDelta: Math.round((heapAfter - heapBefore) * 100) / 100,
+ coldStartMs: coldStartMs.map((v) => Math.round(v)),
+ };
+
+ // Print results
+ console.log('\u2500'.repeat(70));
+ console.log('RESULTS:');
+ console.log('\u2500'.repeat(70));
+ console.log(` Mode: ${result.mode.toUpperCase()}`);
+ console.log(` Tenants (k): ${result.k}`);
+ console.log(` Duration: ${result.durationSec}s`);
+ console.log(` Workers: ${result.workers}`);
+ console.log(` Total Queries: ${result.totalQueries.toLocaleString()}`);
+ console.log(` Errors: ${result.errors}`);
+ console.log(` QPS: ${result.qps.toLocaleString()}`);
+ console.log(` p50 Latency: ${result.p50}ms`);
+ console.log(` p95 Latency: ${result.p95}ms`);
+ console.log(` p99 Latency: ${result.p99}ms`);
+ console.log(` Heap Before: ${result.heapBefore} MB`);
+ console.log(` Heap After: ${result.heapAfter} MB`);
+ console.log(` Heap Delta: ${result.heapDelta} MB`);
+ console.log(
+ ` Cold Start (first/last): ${result.coldStartMs[0]}ms / ${result.coldStartMs[result.coldStartMs.length - 1]}ms`,
+ );
+ console.log('\u2500'.repeat(70));
+
+ // Write result to JSON file
+ const resultsDir = path.join(__dirname, 'results');
+ fs.mkdirSync(resultsDir, { recursive: true });
+ const outFile = path.join(resultsDir, `e2e-benchmark-${MODE}-k${K}.json`);
+ fs.writeFileSync(outFile, JSON.stringify(result, null, 2));
+ console.log(`\nResults written to ${outFile}`);
+
+ // Also write to /tmp for compatibility with run scripts
+ const tmpFile = `/tmp/e2e-benchmark-${MODE}-k${K}.json`;
+ fs.writeFileSync(tmpFile, JSON.stringify(result, null, 2));
+
+ return result;
+}
+
+// ─── Entry Point ────────────────────────────────────────────────────────────
+runBenchmark()
+ .then((result) => {
+ process.exit(result.errors > 0 ? 1 : 0);
+ })
+ .catch((err) => {
+ console.error('Benchmark failed:', err);
+ process.exit(2);
+ });
diff --git a/graphql/server/perf/phase1-preflight.mjs b/graphql/server/perf/phase1-preflight.mjs
new file mode 100644
index 000000000..aeca1ecc0
--- /dev/null
+++ b/graphql/server/perf/phase1-preflight.mjs
@@ -0,0 +1,761 @@
+#!/usr/bin/env node
+
+import fs from 'node:fs/promises';
+import path from 'node:path';
+import { spawn } from 'node:child_process';
+import { fileURLToPath } from 'node:url';
+import { Pool } from 'pg';
+
+import {
+ DEFAULT_BASE_URL,
+ DEFAULT_TMP_ROOT,
+ dedupeBy,
+ ensureRunDirs,
+ getArgValue,
+ getJson,
+ hasFlag,
+ makeRunId,
+ postJson,
+ stableStringify,
+ writeJson,
+} from './common.mjs';
+
+const args = process.argv.slice(2);
+
+const runId = getArgValue(args, '--run-id', makeRunId());
+const tmpRoot = path.resolve(getArgValue(args, '--tmp-root', DEFAULT_TMP_ROOT));
+const runDir = path.resolve(getArgValue(args, '--run-dir', path.join(tmpRoot, runId)));
+const baseUrl = getArgValue(args, '--base-url', DEFAULT_BASE_URL);
+
+const requireTenants = Number.parseInt(getArgValue(args, '--min-tenant-count', '10'), 10);
+const enforceTenantScale = !hasFlag(args, '--allow-underprovisioned');
+
+const defaultMinTokenTenants = enforceTenantScale ? String(requireTenants) : '1';
+const minTokenTenants = Number.parseInt(
+ getArgValue(args, '--min-token-tenants', defaultMinTokenTenants),
+ 10,
+);
+const recommendedTokenTenants = Number.parseInt(
+ getArgValue(args, '--recommended-token-tenants', String(requireTenants)),
+ 10,
+);
+const bootstrapDefaultCredential = !hasFlag(args, '--no-bootstrap-default-credential');
+
+const defaultSigninEmail = getArgValue(
+ args,
+ '--default-signin-email',
+ process.env.PERF_SIGNIN_EMAIL || 'admin@constructive.io',
+);
+const defaultSigninPassword = getArgValue(
+ args,
+ '--default-signin-password',
+ process.env.PERF_SIGNIN_PASSWORD || 'admin123!@Constructive',
+);
+
+const credentialsPath = path.resolve(
+ getArgValue(args, '--credentials', path.join(runDir, 'data', 'tenant-credentials.json')),
+);
+const tokenOutputPath = path.resolve(
+ getArgValue(args, '--token-output', path.join(runDir, 'data', 'tokens.json')),
+);
+const dbTechValidationPath = path.resolve(
+ getArgValue(args, '--db-tech-validation', path.join(runDir, 'reports', 'db-tech-validation.json')),
+);
+const businessManifestPath = path.resolve(
+ getArgValue(args, '--business-manifest', path.join(runDir, 'data', 'business-table-manifest.json')),
+);
+const businessProfilesOutputPath = path.resolve(
+ getArgValue(
+ args,
+ '--business-profiles-output',
+ path.join(runDir, 'data', 'business-op-profiles.json'),
+ ),
+);
+const runDbpmTechValidation = !hasFlag(args, '--skip-dbpm-tech-validation');
+const dbpmTenantCount = Number.parseInt(
+ getArgValue(args, '--dbpm-tenant-count', String(Math.max(requireTenants, 2))),
+ 10,
+);
+const dbpmUserPassword = getArgValue(args, '--dbpm-user-password', 'Constructive!23456');
+const dbpmUserPrefix = getArgValue(args, '--dbpm-user-prefix', `dbpm-preflight-${Date.now()}`);
+const dbpmShapeVariants = Number.parseInt(
+ getArgValue(args, '--dbpm-shape-variants', '0'),
+ 10,
+);
+const keyspaceOutputPath = path.resolve(
+ getArgValue(args, '--keyspace-output', path.join(runDir, 'data', 'tokens.keyspace.json')),
+);
+const keyspaceMode = getArgValue(args, '--keyspace-mode', 'schemata');
+const keyspaceTargetRouteKeys = Number.parseInt(
+ getArgValue(args, '--keyspace-target-route-keys', '24'),
+ 10,
+);
+const keyspaceMinRouteKeys = Number.parseInt(
+ getArgValue(args, '--keyspace-min-route-keys', '16'),
+ 10,
+);
+const keyspaceMaxProfiles = Number.parseInt(getArgValue(args, '--keyspace-max-profiles', '5000'), 10);
+const keyspaceMaxSchemaWidth = Number.parseInt(
+ getArgValue(args, '--keyspace-max-schema-width', '3'),
+ 10,
+);
+const keyspaceSchemaPool = getArgValue(
+ args,
+ '--keyspace-schema-pool',
+ 'constructive_public,constructive_auth_public,constructive_users_public,constructive_memberships_public,services_public',
+);
+const keyspaceNoSmokeCheck = hasFlag(args, '--keyspace-no-smoke-check');
+
+const pgConfig = {
+ host: getArgValue(args, '--pg-host', process.env.PGHOST || 'localhost'),
+ port: Number.parseInt(getArgValue(args, '--pg-port', process.env.PGPORT || '5432'), 10),
+ database: getArgValue(args, '--pg-database', process.env.PGDATABASE || 'constructive'),
+ user: getArgValue(args, '--pg-user', process.env.PGUSER || 'postgres'),
+ password: getArgValue(args, '--pg-password', process.env.PGPASSWORD || 'password'),
+};
+
+const queries = {
+ tenantBaseline: `
+ select
+ (select count(*)::int from constructive_users_public.users where type = 2) as org_count,
+ (select count(distinct entity_id)::int from constructive_memberships_public.org_memberships) as org_membership_org_count,
+ (select count(distinct actor_id)::int from constructive_memberships_public.org_memberships) as org_membership_actor_count,
+ (select count(distinct database_id)::int from services_public.apis) as api_distinct_database_count,
+ (select count(*)::int from services_public.apis where is_public = true) as public_api_count,
+ (select count(*)::int from services_public.apis where is_public = false) as private_api_count
+ `,
+ apiCandidates: `
+ select
+ a.id::text as api_id,
+ a.name as api_name,
+ a.database_id::text as database_id,
+ a.is_public,
+ d.domain,
+ d.subdomain
+ from services_public.apis a
+ left join services_public.domains d on d.api_id = a.id
+ order by a.is_public, a.name, a.database_id
+ `,
+};
+
+const pathExists = async (targetPath) => {
+ try {
+ await fs.access(targetPath);
+ return true;
+ } catch {
+ return false;
+ }
+};
+
+const buildProfiles = (rows) => {
+ const privateProfiles = rows
+ .filter((row) => row.is_public === false)
+ .map((row) => ({
+ key: `private:${row.database_id}:${row.api_name}`,
+ mode: 'private-header-routing',
+ databaseId: row.database_id,
+ apiName: row.api_name,
+ graphqlUrl: '/graphql',
+ headers: {
+ Host: 'localhost',
+ 'X-Api-Name': row.api_name,
+ 'X-Database-Id': row.database_id,
+ },
+ }));
+
+ const publicProfiles = rows
+ .filter((row) => row.is_public === true && row.domain)
+ .map((row) => {
+ const host = row.subdomain ? `${row.subdomain}.${row.domain}` : row.domain;
+ return {
+ key: `public:${host}`,
+ mode: 'public-domain-routing',
+ graphqlUrl: '/graphql',
+ headers: {
+ Host: host,
+ },
+ };
+ });
+
+ return dedupeBy([...privateProfiles, ...publicProfiles], (profile) => stableStringify(profile));
+};
+
+const smokeCheckGraphql = async ({ baseUrl: root, profiles }) => {
+ const checks = [];
+ for (const profile of profiles) {
+ const result = await postJson({
+ url: `${root}${profile.graphqlUrl}`,
+ headers: profile.headers,
+ payload: { query: '{ __typename }' },
+ timeoutMs: 15000,
+ });
+
+ const hasTypename = result.json?.data?.__typename === 'Query';
+ const hasErrors = Array.isArray(result.json?.errors) && result.json.errors.length > 0;
+
+ checks.push({
+ profileKey: profile.key,
+ ok: result.ok && hasTypename,
+ status: result.status,
+ elapsedMs: result.elapsedMs,
+ hasTypename,
+ hasErrors,
+ error: result.error || null,
+ firstError: hasErrors ? result.json.errors[0]?.message ?? 'unknown GraphQL error' : null,
+ });
+ }
+ return checks;
+};
+
+const buildBootstrapCredentials = ({ readyProfiles }) => {
+ const privateProfiles = readyProfiles.filter((profile) => profile.mode === 'private-header-routing');
+
+ return privateProfiles.map((profile, index) => ({
+ tenantKey: profile.key || `tenant-${index + 1}`,
+ email: defaultSigninEmail,
+ password: defaultSigninPassword,
+ host: profile.headers?.Host || 'localhost',
+ apiName: profile.headers?.['X-Api-Name'],
+ databaseId: profile.headers?.['X-Database-Id'],
+ }));
+};
+
+const runTokenBuilder = async () => {
+ const scriptPath = fileURLToPath(new URL('./build-token-pool.mjs', import.meta.url));
+
+ return await new Promise((resolve) => {
+ const child = spawn(
+ process.execPath,
+ [
+ scriptPath,
+ '--run-dir',
+ runDir,
+ '--base-url',
+ baseUrl,
+ '--credentials',
+ credentialsPath,
+ '--output',
+ tokenOutputPath,
+ ],
+ { stdio: ['ignore', 'pipe', 'pipe'] },
+ );
+
+ let stdout = '';
+ let stderr = '';
+
+ child.stdout.on('data', (chunk) => {
+ stdout += String(chunk);
+ });
+ child.stderr.on('data', (chunk) => {
+ stderr += String(chunk);
+ });
+
+ child.on('close', (code) => {
+ resolve({
+ code,
+ ok: code === 0,
+ stdout: stdout.trim(),
+ stderr: stderr.trim(),
+ });
+ });
+ });
+};
+
+const runDbpmTechValidationScript = async () => {
+ const scriptPath = fileURLToPath(new URL('./phase1-tech-validate-dbpm.mjs', import.meta.url));
+
+ return await new Promise((resolve) => {
+ const child = spawn(
+ process.execPath,
+ [
+ scriptPath,
+ '--run-dir',
+ runDir,
+ '--base-url',
+ baseUrl,
+ '--tenant-count',
+ String(dbpmTenantCount),
+ '--user-password',
+ dbpmUserPassword,
+ '--user-prefix',
+ dbpmUserPrefix,
+ '--shape-variants',
+ String(dbpmShapeVariants),
+ ],
+ { stdio: ['ignore', 'pipe', 'pipe'] },
+ );
+
+ let stdout = '';
+ let stderr = '';
+
+ child.stdout.on('data', (chunk) => {
+ stdout += String(chunk);
+ });
+ child.stderr.on('data', (chunk) => {
+ stderr += String(chunk);
+ });
+
+ child.on('close', (code) => {
+ resolve({
+ code,
+ ok: code === 0,
+ stdout: stdout.trim(),
+ stderr: stderr.trim(),
+ });
+ });
+ });
+};
+
+const runBusinessProfileBuilder = async () => {
+ const scriptPath = fileURLToPath(new URL('./build-business-op-profiles.mjs', import.meta.url));
+
+ return await new Promise((resolve) => {
+ const child = spawn(
+ process.execPath,
+ [
+ scriptPath,
+ '--run-dir',
+ runDir,
+ '--base-url',
+ baseUrl,
+ '--manifest',
+ businessManifestPath,
+ '--tokens',
+ tokenOutputPath,
+ '--output',
+ businessProfilesOutputPath,
+ ],
+ { stdio: ['ignore', 'pipe', 'pipe'] },
+ );
+
+ let stdout = '';
+ let stderr = '';
+
+ child.stdout.on('data', (chunk) => {
+ stdout += String(chunk);
+ });
+ child.stderr.on('data', (chunk) => {
+ stderr += String(chunk);
+ });
+
+ child.on('close', (code) => {
+ resolve({
+ code,
+ ok: code === 0,
+ stdout: stdout.trim(),
+ stderr: stderr.trim(),
+ });
+ });
+ });
+};
+
+const runKeyspaceBuilder = async () => {
+ const scriptPath = fileURLToPath(new URL('./build-keyspace-profiles.mjs', import.meta.url));
+
+ const cmd = [
+ scriptPath,
+ '--run-dir',
+ runDir,
+ '--base-url',
+ baseUrl,
+ '--input',
+ tokenOutputPath,
+ '--output',
+ keyspaceOutputPath,
+ '--mode',
+ keyspaceMode,
+ '--target-route-keys',
+ String(keyspaceTargetRouteKeys),
+ '--max-profiles',
+ String(keyspaceMaxProfiles),
+ '--max-schema-width',
+ String(keyspaceMaxSchemaWidth),
+ '--schema-pool',
+ keyspaceSchemaPool,
+ ];
+
+ if (keyspaceNoSmokeCheck) {
+ cmd.push('--no-smoke-check');
+ }
+
+ return await new Promise((resolve) => {
+ const child = spawn(process.execPath, cmd, {
+ stdio: ['ignore', 'pipe', 'pipe'],
+ });
+
+ let stdout = '';
+ let stderr = '';
+
+ child.stdout.on('data', (chunk) => {
+ stdout += String(chunk);
+ });
+ child.stderr.on('data', (chunk) => {
+ stderr += String(chunk);
+ });
+
+ child.on('close', (code) => {
+ resolve({
+ code,
+ ok: code === 0,
+ stdout: stdout.trim(),
+ stderr: stderr.trim(),
+ });
+ });
+ });
+};
+
+const main = async () => {
+ const dirs = await ensureRunDirs(runDir);
+ const pool = new Pool(pgConfig);
+
+ const startedAt = new Date();
+ const report = {
+ startedAt: startedAt.toISOString(),
+ runId,
+ runDir,
+ baseUrl,
+ pg: {
+ host: pgConfig.host,
+ port: pgConfig.port,
+ database: pgConfig.database,
+ user: pgConfig.user,
+ },
+ readiness: {
+ phase1AReady: false,
+ phase1BReady: false,
+ phase1CReady: false,
+ phase1Ready: false,
+ tenantReadyForPhase2: false,
+ },
+ checks: {},
+ warnings: [],
+ errors: [],
+ };
+
+ try {
+ let phase1BReady = false;
+ let phase1CReady = false;
+
+ const [memoryCheck, dbCheck] = await Promise.all([
+ getJson({ url: `${baseUrl}/debug/memory` }),
+ getJson({ url: `${baseUrl}/debug/db` }),
+ ]);
+
+ report.checks.debugMemory = {
+ ok: memoryCheck.ok,
+ status: memoryCheck.status,
+ elapsedMs: memoryCheck.elapsedMs,
+ pid: memoryCheck.json?.pid ?? null,
+ error: memoryCheck.error ?? null,
+ };
+
+ report.checks.debugDb = {
+ ok: dbCheck.ok,
+ status: dbCheck.status,
+ elapsedMs: dbCheck.elapsedMs,
+ hasPool: !!dbCheck.json?.pool,
+ error: dbCheck.error ?? null,
+ };
+
+ const [tenantBaselineResult, apiCandidatesResult] = await Promise.all([
+ pool.query(queries.tenantBaseline),
+ pool.query(queries.apiCandidates),
+ ]);
+
+ const tenantBaseline = tenantBaselineResult.rows[0] ?? null;
+ const profiles = buildProfiles(apiCandidatesResult.rows ?? []);
+ const smoke = await smokeCheckGraphql({ baseUrl, profiles });
+
+ const healthyProfiles = smoke.filter((item) => item.ok);
+ const healthyProfileKeys = new Set(healthyProfiles.map((item) => item.profileKey));
+ const readyProfiles = profiles.filter((profile) => healthyProfileKeys.has(profile.key));
+
+ report.checks.tenantBaseline = tenantBaseline;
+ report.checks.routingProfiles = {
+ discovered: profiles.length,
+ healthy: readyProfiles.length,
+ unhealthy: profiles.length - readyProfiles.length,
+ smoke,
+ };
+
+ const orgCount = Number(tenantBaseline?.org_count ?? 0);
+ const orgScaleReady = orgCount >= requireTenants;
+
+ if (!runDbpmTechValidation && !orgScaleReady) {
+ const msg = `tenant scale insufficient: org_count=${orgCount} < min=${requireTenants}`;
+ if (enforceTenantScale) {
+ report.errors.push(msg);
+ } else {
+ report.warnings.push(`${msg} (allow-underprovisioned enabled)`);
+ }
+ } else if (!orgScaleReady) {
+ report.warnings.push(
+ `org_count (${orgCount}) is below min-tenant-count (${requireTenants}); DBPM technical validation path will provide tenant scale gate.`,
+ );
+ }
+
+ if (!report.checks.debugMemory.ok) {
+ report.errors.push('/debug/memory is not reachable.');
+ }
+ if (!report.checks.debugDb.ok) {
+ report.errors.push('/debug/db is not reachable.');
+ }
+ if (readyProfiles.length === 0) {
+ report.errors.push('No healthy GraphQL request profile found for this server/database config.');
+ }
+
+ report.readiness.phase1AReady = report.errors.length === 0;
+
+ await writeJson(path.join(dirs.dataDir, 'request-profiles.discovered.json'), profiles);
+ await writeJson(path.join(dirs.dataDir, 'request-profiles.ready.json'), readyProfiles);
+
+ if (runDbpmTechValidation && report.errors.length === 0) {
+ const dbpmTechValidation = await runDbpmTechValidationScript();
+ report.checks.dbpmTechValidation = dbpmTechValidation;
+
+ if (!dbpmTechValidation.ok) {
+ report.errors.push(
+ `DBPM tech validation failed (exit=${dbpmTechValidation.code}). stderr=${dbpmTechValidation.stderr || 'none'}`,
+ );
+ } else if (!(await pathExists(dbTechValidationPath))) {
+ report.errors.push(`DBPM tech validation report not found: ${dbTechValidationPath}`);
+ } else if (!(await pathExists(businessManifestPath))) {
+ report.errors.push(`Business manifest not found: ${businessManifestPath}`);
+ } else {
+ const dbTechPayload = JSON.parse(await fs.readFile(dbTechValidationPath, 'utf8'));
+ const manifestPayload = JSON.parse(await fs.readFile(businessManifestPath, 'utf8'));
+ const manifestRows = Array.isArray(manifestPayload) ? manifestPayload : [];
+ const manifestTenantCount = manifestRows.length;
+
+ report.checks.dbpmValidation = {
+ reportPath: dbTechValidationPath,
+ manifestPath: businessManifestPath,
+ requestedTenants: Number(dbTechPayload?.summary?.requestedTenants ?? dbpmTenantCount),
+ successTenants: Number(dbTechPayload?.summary?.successTenants ?? manifestTenantCount),
+ failedTenants: Number(dbTechPayload?.summary?.failedTenants ?? 0),
+ passed: !!dbTechPayload?.summary?.passed,
+ manifestTenantCount,
+ minTenantCount: requireTenants,
+ };
+
+ const dbpmScaleReady = manifestTenantCount >= requireTenants;
+ report.readiness.tenantReadyForPhase2 = dbpmScaleReady;
+
+ if (!dbpmScaleReady) {
+ const msg = `DBPM manifest tenant count insufficient: manifestTenantCount=${manifestTenantCount} < min=${requireTenants}`;
+ if (enforceTenantScale) {
+ report.errors.push(msg);
+ } else {
+ report.warnings.push(`${msg} (allow-underprovisioned enabled)`);
+ }
+ }
+ }
+ }
+
+ const hasCredentials = await pathExists(credentialsPath);
+ if (!hasCredentials) {
+ if (!bootstrapDefaultCredential) {
+ report.errors.push(
+ `Token phase requires credentials file but it does not exist: ${credentialsPath}`,
+ );
+ } else {
+ const credentials = buildBootstrapCredentials({ readyProfiles });
+ if (credentials.length === 0) {
+ report.errors.push(
+ 'Cannot bootstrap credentials because no healthy private-header routing profile is available.',
+ );
+ } else {
+ await writeJson(credentialsPath, credentials);
+ report.warnings.push(
+ `No credentials file provided; bootstrapped ${credentials.length} credential rows using default local admin credential.`,
+ );
+ }
+ }
+ }
+
+ if (report.errors.length === 0) {
+ const tokenBuild = await runTokenBuilder();
+ report.checks.tokenBuild = tokenBuild;
+
+ if (!tokenBuild.ok) {
+ report.errors.push(
+ `Token pool build failed (exit=${tokenBuild.code}). stderr=${tokenBuild.stderr || 'none'}`,
+ );
+ } else if (!(await pathExists(tokenOutputPath))) {
+ report.errors.push(`Token pool output not found: ${tokenOutputPath}`);
+ } else {
+ const tokenPayload = JSON.parse(await fs.readFile(tokenOutputPath, 'utf8'));
+ const profilesFromToken = Array.isArray(tokenPayload?.profiles) ? tokenPayload.profiles : [];
+ const distinctTenantKeys = new Set(
+ profilesFromToken.map((row) => row.tenantKey || row.key).filter(Boolean),
+ );
+
+ const successCount = Number(tokenPayload?.successCount ?? profilesFromToken.length);
+ const failureCount = Number(tokenPayload?.failureCount ?? 0);
+
+ report.checks.tokenPool = {
+ credentialsPath,
+ outputPath: tokenOutputPath,
+ successCount,
+ failureCount,
+ distinctTenantKeys: distinctTenantKeys.size,
+ minTokenTenants,
+ recommendedTokenTenants,
+ };
+
+ report.readiness.tenantReadyForPhase2 = distinctTenantKeys.size >= requireTenants;
+
+ if (successCount <= 0) {
+ report.errors.push('Token pool generated zero usable token profiles.');
+ }
+
+ if (distinctTenantKeys.size < minTokenTenants) {
+ report.errors.push(
+ `Token coverage insufficient: distinctTenantKeys=${distinctTenantKeys.size} < minTokenTenants=${minTokenTenants}`,
+ );
+ }
+
+ if (distinctTenantKeys.size < recommendedTokenTenants) {
+ report.warnings.push(
+ `Token coverage is below recommended scale: distinctTenantKeys=${distinctTenantKeys.size}, recommended=${recommendedTokenTenants}`,
+ );
+ }
+
+ if (failureCount > 0) {
+ report.warnings.push(
+ `Token pool had partial credential failures: failureCount=${failureCount}.`,
+ );
+ }
+
+ phase1BReady = report.errors.length === 0;
+
+ if (phase1BReady) {
+ const keyspaceBuild = await runKeyspaceBuilder();
+ report.checks.keyspaceBuild = keyspaceBuild;
+
+ if (!keyspaceBuild.ok) {
+ report.errors.push(
+ `Keyspace build failed (exit=${keyspaceBuild.code}). stderr=${keyspaceBuild.stderr || 'none'}`,
+ );
+ } else if (!(await pathExists(keyspaceOutputPath))) {
+ report.errors.push(`Keyspace output not found: ${keyspaceOutputPath}`);
+ } else {
+ const keyspacePayload = JSON.parse(await fs.readFile(keyspaceOutputPath, 'utf8'));
+ const selectedRouteKeys = Number(
+ keyspacePayload?.selectedRouteKeys ?? keyspacePayload?.selectedRoutes?.length ?? 0,
+ );
+ const totalOutputProfiles = Number(
+ keyspacePayload?.totalOutputProfiles ?? keyspacePayload?.profiles?.length ?? 0,
+ );
+ const totalInputProfiles = Number(
+ keyspacePayload?.totalInputProfiles ?? profilesFromToken.length,
+ );
+
+ report.checks.keyspace = {
+ inputPath: tokenOutputPath,
+ outputPath: keyspaceOutputPath,
+ mode: keyspaceMode,
+ targetRouteKeys: keyspaceTargetRouteKeys,
+ minRouteKeys: keyspaceMinRouteKeys,
+ selectedRouteKeys,
+ totalInputProfiles,
+ totalOutputProfiles,
+ noSmokeCheck: keyspaceNoSmokeCheck,
+ };
+
+ if (selectedRouteKeys < keyspaceMinRouteKeys) {
+ report.errors.push(
+ `Keyspace coverage insufficient: selectedRouteKeys=${selectedRouteKeys} < minRouteKeys=${keyspaceMinRouteKeys}`,
+ );
+ }
+
+ if (totalOutputProfiles <= 0) {
+ report.errors.push('Keyspace builder produced zero output profiles.');
+ }
+
+ if (selectedRouteKeys < keyspaceTargetRouteKeys) {
+ report.warnings.push(
+ `Keyspace route keys below target: selected=${selectedRouteKeys}, target=${keyspaceTargetRouteKeys}`,
+ );
+ }
+
+ const businessProfilesBuild = await runBusinessProfileBuilder();
+ report.checks.businessProfilesBuild = businessProfilesBuild;
+
+ if (!businessProfilesBuild.ok) {
+ report.errors.push(
+ `Business op profile build failed (exit=${businessProfilesBuild.code}). stderr=${businessProfilesBuild.stderr || 'none'}`,
+ );
+ } else if (!(await pathExists(businessProfilesOutputPath))) {
+ report.errors.push(`Business op profile output not found: ${businessProfilesOutputPath}`);
+ } else {
+ const businessPayload = JSON.parse(
+ await fs.readFile(businessProfilesOutputPath, 'utf8'),
+ );
+ const businessProfiles = Array.isArray(businessPayload?.profiles)
+ ? businessPayload.profiles
+ : [];
+ const businessTenantKeys = new Set(
+ businessProfiles.map((profile) => profile.tenantKey || profile.key).filter(Boolean),
+ );
+
+ report.checks.businessProfiles = {
+ outputPath: businessProfilesOutputPath,
+ successCount: Number(businessPayload?.successCount ?? businessProfiles.length),
+ failureCount: Number(businessPayload?.failureCount ?? 0),
+ distinctTenantKeys: businessTenantKeys.size,
+ };
+
+ if (businessProfiles.length === 0) {
+ report.errors.push('Business op profile builder produced zero profiles.');
+ }
+ }
+ }
+ }
+ }
+ }
+
+ phase1CReady = report.errors.length === 0 && !!report.checks.keyspace?.outputPath;
+ report.readiness.phase1BReady = phase1BReady;
+ report.readiness.phase1CReady = phase1CReady;
+ report.readiness.phase1Ready =
+ report.readiness.phase1AReady &&
+ report.readiness.phase1BReady &&
+ report.readiness.phase1CReady;
+
+ await writeJson(path.join(dirs.reportsDir, 'preflight.json'), report);
+
+ const summary = {
+ runDir,
+ phase1AReady: report.readiness.phase1AReady,
+ phase1BReady: report.readiness.phase1BReady,
+ phase1CReady: report.readiness.phase1CReady,
+ phase1Ready: report.readiness.phase1Ready,
+ tenantReadyForPhase2: report.readiness.tenantReadyForPhase2,
+ discoveredProfiles: report.checks.routingProfiles?.discovered ?? 0,
+ healthyProfiles: report.checks.routingProfiles?.healthy ?? 0,
+ tokenSuccessCount: report.checks.tokenPool?.successCount ?? 0,
+ tokenDistinctTenants: report.checks.tokenPool?.distinctTenantKeys ?? 0,
+ keyspaceRouteKeys: report.checks.keyspace?.selectedRouteKeys ?? 0,
+ keyspaceOutputProfiles: report.checks.keyspace?.totalOutputProfiles ?? 0,
+ warnings: report.warnings.length,
+ errors: report.errors.length,
+ };
+
+ console.log(JSON.stringify(summary, null, 2));
+
+ if (!report.readiness.phase1Ready) {
+ process.exit(2);
+ }
+ if (enforceTenantScale && !report.readiness.tenantReadyForPhase2) {
+ process.exit(3);
+ }
+ } finally {
+ await pool.end();
+ }
+};
+
+main().catch((error) => {
+ console.error(error instanceof Error ? error.stack : String(error));
+ process.exit(1);
+});
diff --git a/graphql/server/perf/phase1-tech-validate-dbpm.mjs b/graphql/server/perf/phase1-tech-validate-dbpm.mjs
new file mode 100644
index 000000000..9b2f4f20a
--- /dev/null
+++ b/graphql/server/perf/phase1-tech-validate-dbpm.mjs
@@ -0,0 +1,768 @@
+#!/usr/bin/env node
+
+import path from 'node:path';
+import { Pool } from 'pg';
+
+import {
+ DEFAULT_BASE_URL,
+ DEFAULT_TMP_ROOT,
+ ensureRunDirs,
+ getArgValue,
+ makeRunId,
+ postJson,
+ sleep,
+ writeJson,
+} from './common.mjs';
+
+const args = process.argv.slice(2);
+
+const runId = getArgValue(args, '--run-id', makeRunId('tech-validate-dbpm'));
+const runDir = path.resolve(
+ getArgValue(args, '--run-dir', path.join(DEFAULT_TMP_ROOT, runId)),
+);
+const baseUrl = getArgValue(args, '--base-url', DEFAULT_BASE_URL);
+
+const tenantCount = Number.parseInt(getArgValue(args, '--tenant-count', '2'), 10);
+const userPassword = getArgValue(args, '--user-password', 'Constructive!23456');
+const userPrefix = getArgValue(args, '--user-prefix', `dbpm-tech-${Date.now()}`);
+const provisionDomain = getArgValue(args, '--provision-domain', 'localhost');
+const modulesArg = getArgValue(args, '--provision-modules', 'all');
+const targetSchemaName = getArgValue(args, '--target-schema-name', 'app_public');
+const tablePrefix = getArgValue(args, '--table-prefix', 'items_dbpm');
+const shapeVariantCount = Number.parseInt(
+ getArgValue(args, '--shape-variants', '0'),
+ 10,
+);
+
+const provisionTimeoutMs = Number.parseInt(
+ getArgValue(args, '--provision-timeout-ms', '180000'),
+ 10,
+);
+const provisionPollMs = Number.parseInt(getArgValue(args, '--provision-poll-ms', '2000'), 10);
+
+const routeHost = getArgValue(args, '--route-host', 'localhost');
+const privateApiName = getArgValue(args, '--private-api-name', 'private');
+const privateDatabaseId = getArgValue(
+ args,
+ '--private-database-id',
+ '028752cb-510b-1438-2f39-64534bd1cbd7',
+);
+
+const routeHeaders = {
+ Host: routeHost,
+ 'X-Api-Name': privateApiName,
+ 'X-Database-Id': privateDatabaseId,
+};
+
+const modules = modulesArg
+ .split(',')
+ .map((item) => item.trim())
+ .filter(Boolean);
+
+if (modules.length === 0) {
+ throw new Error(`Invalid --provision-modules: ${modulesArg}`);
+}
+
+// ---------------------------------------------------------------------------
+// Shape variant definitions (Option A — extra provisioned tables only)
+// ---------------------------------------------------------------------------
+
+/**
+ * Each entry describes extra tables to provision for tenants assigned to
+ * that variant group. Group 0 always means "main table only" (no extras).
+ *
+ * The provisioning mutation is the same `createSecureTableProvision` used
+ * for the main business table — this guarantees RLS, grants, policies,
+ * and PostGraphile type generation are all exercised.
+ */
+const VARIANT_DEFS = [
+ // Group 0: base case — no extra tables
+ { tables: [] },
+ // Group 1: extra table with 2 columns (tags)
+ {
+ tables: [
+ {
+ suffix: 'tags',
+ fields: [
+ { name: 'label', type: 'text' },
+ { name: 'priority', type: 'integer' },
+ ],
+ },
+ ],
+ },
+ // Group 2: extra table with 3 columns (metrics)
+ {
+ tables: [
+ {
+ suffix: 'metrics',
+ fields: [
+ { name: 'value', type: 'numeric' },
+ { name: 'recorded_at', type: 'timestamptz' },
+ { name: 'active', type: 'boolean' },
+ ],
+ },
+ ],
+ },
+];
+
+const effectiveVariantCount = Math.min(
+ Math.max(shapeVariantCount, 0),
+ VARIANT_DEFS.length,
+);
+
+const pgConfig = {
+ host: getArgValue(args, '--pg-host', process.env.PGHOST || 'localhost'),
+ port: Number.parseInt(getArgValue(args, '--pg-port', process.env.PGPORT || '5432'), 10),
+ database: getArgValue(args, '--pg-database', process.env.PGDATABASE || 'constructive'),
+ user: getArgValue(args, '--pg-user', process.env.PGUSER || 'postgres'),
+ password: getArgValue(args, '--pg-password', process.env.PGPASSWORD || 'password'),
+};
+
+const signUpMutation = `
+mutation SignUp($input: SignUpInput!) {
+ signUp(input: $input) {
+ result {
+ id
+ userId
+ accessToken
+ }
+ }
+}
+`;
+
+const signInMutation = `
+mutation SignIn($input: SignInInput!) {
+ signIn(input: $input) {
+ result {
+ id
+ userId
+ accessToken
+ }
+ }
+}
+`;
+
+const createDatabaseProvisionModuleMutation = `
+mutation CreateDatabaseProvisionModule($input: CreateDatabaseProvisionModuleInput!) {
+ createDatabaseProvisionModule(input: $input) {
+ databaseProvisionModule {
+ id
+ databaseName
+ ownerId
+ domain
+ modules
+ status
+ errorMessage
+ databaseId
+ createdAt
+ completedAt
+ }
+ }
+}
+`;
+
+const createSecureTableProvisionMutation = `
+mutation CreateSecureTableProvision($input: CreateSecureTableProvisionInput!) {
+ createSecureTableProvision(input: $input) {
+ secureTableProvision {
+ id
+ databaseId
+ schemaId
+ tableId
+ tableName
+ nodeType
+ outFields
+ }
+ }
+}
+`;
+
+const gql = async ({ query, variables, headers = {}, timeoutMs = 30000 }) => {
+ return await postJson({
+ url: `${baseUrl}/graphql`,
+ headers: {
+ ...routeHeaders,
+ ...headers,
+ },
+ payload: { query, variables },
+ timeoutMs,
+ });
+};
+
+const firstError = (response) => response.json?.errors?.[0]?.message || response.error || 'unknown';
+
+const signUpOrSignInUser = async ({ email, password }) => {
+ const signUpRes = await gql({
+ query: signUpMutation,
+ variables: {
+ input: {
+ email,
+ password,
+ rememberMe: true,
+ },
+ },
+ });
+
+ const signUpResult = signUpRes.json?.data?.signUp?.result;
+ if (signUpRes.ok && signUpResult?.accessToken && signUpResult?.userId) {
+ return {
+ mode: 'signUp',
+ userId: signUpResult.userId,
+ tokenId: signUpResult.id,
+ accessToken: signUpResult.accessToken,
+ };
+ }
+
+ const signInRes = await gql({
+ query: signInMutation,
+ variables: {
+ input: {
+ email,
+ password,
+ rememberMe: true,
+ },
+ },
+ });
+
+ const signInResult = signInRes.json?.data?.signIn?.result;
+ if (signInRes.ok && signInResult?.accessToken && signInResult?.userId) {
+ return {
+ mode: 'signIn',
+ userId: signInResult.userId,
+ tokenId: signInResult.id,
+ accessToken: signInResult.accessToken,
+ };
+ }
+
+ throw new Error(
+ `Auth failed for ${email}; signUpError=${firstError(signUpRes)}; signInError=${firstError(signInRes)}`,
+ );
+};
+
+const createProvisionModule = async ({ token, ownerId, databaseName, subdomain }) => {
+ const response = await gql({
+ query: createDatabaseProvisionModuleMutation,
+ headers: {
+ Authorization: `Bearer ${token}`,
+ },
+ variables: {
+ input: {
+ databaseProvisionModule: {
+ databaseName,
+ ownerId,
+ domain: provisionDomain,
+ subdomain,
+ modules,
+ options: {},
+ bootstrapUser: true,
+ },
+ },
+ },
+ timeoutMs: provisionTimeoutMs,
+ });
+
+ const record = response.json?.data?.createDatabaseProvisionModule?.databaseProvisionModule;
+ if (!response.ok || !record?.id) {
+ throw new Error(
+ `createDatabaseProvisionModule failed db=${databaseName}; status=${response.status}; error=${firstError(response)}`,
+ );
+ }
+
+ return record;
+};
+
+const waitForProvisionCompletion = async ({ pool, moduleId }) => {
+ const started = Date.now();
+
+ while (Date.now() - started < provisionTimeoutMs) {
+ const result = await pool.query(
+ `
+ select
+ id::text,
+ database_name,
+ owner_id::text,
+ status,
+ error_message,
+ database_id::text,
+ modules::text,
+ created_at,
+ updated_at,
+ completed_at
+ from metaschema_modules_public.database_provision_module
+ where id = $1::uuid
+ `,
+ [moduleId],
+ );
+
+ const row = result.rows[0];
+ if (!row) {
+ throw new Error(`Provision module not found: ${moduleId}`);
+ }
+
+ if (row.status === 'failed') {
+ throw new Error(
+ `Provision failed moduleId=${moduleId}; error=${row.error_message || 'no error_message'}`,
+ );
+ }
+
+ if (row.status === 'completed' && row.database_id) {
+ return row;
+ }
+
+ await sleep(provisionPollMs);
+ }
+
+ throw new Error(`Provision timeout moduleId=${moduleId}; timeoutMs=${provisionTimeoutMs}`);
+};
+
+const findTargetSchema = async ({ pool, databaseId, targetName }) => {
+ const exact = await pool.query(
+ `
+ select id::text, name, schema_name
+ from metaschema_public.schema
+ where database_id = $1::uuid
+ and name = $2
+ order by created_at desc
+ limit 1
+ `,
+ [databaseId, targetName],
+ );
+
+ if (exact.rows[0]) {
+ return exact.rows[0];
+ }
+
+ const fallback = await pool.query(
+ `
+ select id::text, name, schema_name
+ from metaschema_public.schema
+ where database_id = $1::uuid
+ and name like 'app_%'
+ order by created_at desc
+ limit 1
+ `,
+ [databaseId],
+ );
+
+ if (fallback.rows[0]) {
+ return fallback.rows[0];
+ }
+
+ throw new Error(`No app schema found for databaseId=${databaseId}`);
+};
+
+const createBusinessTable = async ({ token, databaseId, schemaId, tableName }) => {
+ const response = await gql({
+ query: createSecureTableProvisionMutation,
+ headers: {
+ Authorization: `Bearer ${token}`,
+ },
+ variables: {
+ input: {
+ secureTableProvision: {
+ databaseId,
+ schemaId,
+ tableName,
+ nodeType: 'DataId',
+ fields: [{ name: 'note', type: 'text' }],
+ },
+ },
+ },
+ });
+
+ const record = response.json?.data?.createSecureTableProvision?.secureTableProvision;
+ if (!response.ok || !record?.id) {
+ throw new Error(
+ `createSecureTableProvision failed db=${databaseId} schema=${schemaId}; status=${response.status}; error=${firstError(response)}`,
+ );
+ }
+
+ return record;
+};
+
+/**
+ * Provision a variant table via the same mutation used for the main
+ * business table. Failures are non-fatal — logged and recorded but
+ * do not abort the tenant.
+ */
+const createVariantTable = async ({ token, databaseId, schemaId, tableName, fields }) => {
+ const response = await gql({
+ query: createSecureTableProvisionMutation,
+ headers: {
+ Authorization: `Bearer ${token}`,
+ },
+ variables: {
+ input: {
+ secureTableProvision: {
+ databaseId,
+ schemaId,
+ tableName,
+ nodeType: 'DataId',
+ fields,
+ },
+ },
+ },
+ });
+
+ const record = response.json?.data?.createSecureTableProvision?.secureTableProvision;
+ if (!response.ok || !record?.id) {
+ return {
+ ok: false,
+ error: `createSecureTableProvision(variant) failed table=${tableName}; status=${response.status}; error=${firstError(response)}`,
+ };
+ }
+
+ return { ok: true, record };
+};
+
+const quoteIdent = (value) => `"${String(value).replace(/"/g, '""')}"`;
+
+const validateSqlOps = async ({ pool, physicalSchema, tableName, tenantIndex }) => {
+ const columnsResult = await pool.query(
+ `
+ select column_name, data_type
+ from information_schema.columns
+ where table_schema = $1
+ and table_name = $2
+ order by ordinal_position
+ `,
+ [physicalSchema, tableName],
+ );
+
+ const columns = columnsResult.rows;
+ const hasId = columns.some((col) => col.column_name === 'id' && col.data_type === 'uuid');
+ const hasNote = columns.some((col) => col.column_name === 'note' && col.data_type === 'text');
+ if (!hasId || !hasNote) {
+ throw new Error(
+ `Unexpected columns ${physicalSchema}.${tableName}; expected id(uuid)+note(text), got=${JSON.stringify(columns)}`,
+ );
+ }
+
+ const qualifiedTable = `${quoteIdent(physicalSchema)}.${quoteIdent(tableName)}`;
+
+ const insert = await pool.query(
+ `insert into ${qualifiedTable} (note) values ($1) returning id::text as id, note`,
+ [`hello-from-dbpm-tenant-${tenantIndex}`],
+ );
+ const inserted = insert.rows[0];
+
+ const select = await pool.query(
+ `select count(*)::int as c from ${qualifiedTable} where id = $1::uuid`,
+ [inserted.id],
+ );
+
+ const update = await pool.query(
+ `update ${qualifiedTable} set note = $2 where id = $1::uuid returning id::text as id, note`,
+ [inserted.id, `updated-dbpm-tenant-${tenantIndex}`],
+ );
+
+ return {
+ columns,
+ insertRow: inserted,
+ selectCount: select.rows[0]?.c ?? 0,
+ updateRow: update.rows[0] || null,
+ };
+};
+
+const listDatabaseSchemas = async ({ pool, databaseId }) => {
+ const result = await pool.query(
+ `
+ select name, schema_name
+ from metaschema_public.schema
+ where database_id = $1::uuid
+ order by name
+ `,
+ [databaseId],
+ );
+ return result.rows.map((row) => ({
+ name: row.name,
+ schemaName: row.schema_name,
+ }));
+};
+
+const main = async () => {
+ if (!Number.isFinite(tenantCount) || tenantCount < 2) {
+ throw new Error(`--tenant-count must be >= 2, got: ${tenantCount}`);
+ }
+
+ const dirs = await ensureRunDirs(runDir);
+ const pool = new Pool(pgConfig);
+
+ const accounts = [];
+ const failures = [];
+
+ try {
+ for (let i = 1; i <= tenantCount; i += 1) {
+ const idx = String(i).padStart(2, '0');
+ const suffix = `${Date.now().toString().slice(-6)}-${i}`;
+ const email = `${userPrefix}-${idx}@example.com`;
+ const databaseName = `perf_dbpm_${suffix.replace(/-/g, '_')}`;
+ const subdomain = `dbpm-${suffix}`;
+ const tableName = `${tablePrefix}_${suffix.replace(/-/g, '_')}`;
+
+ try {
+ const auth = await signUpOrSignInUser({ email, password: userPassword });
+ const provision = await createProvisionModule({
+ token: auth.accessToken,
+ ownerId: auth.userId,
+ databaseName,
+ subdomain,
+ });
+
+ const provisionFinal = await waitForProvisionCompletion({
+ pool,
+ moduleId: provision.id,
+ });
+
+ const schema = await findTargetSchema({
+ pool,
+ databaseId: provisionFinal.database_id,
+ targetName: targetSchemaName,
+ });
+
+ const secureTable = await createBusinessTable({
+ token: auth.accessToken,
+ databaseId: provisionFinal.database_id,
+ schemaId: schema.id,
+ tableName,
+ });
+
+ // --- Option A: shape variant tables ---
+ const variantResults = [];
+ const variantIndex = effectiveVariantCount > 0
+ ? (i - 1) % effectiveVariantCount
+ : 0;
+ const variantDef = effectiveVariantCount > 0
+ ? VARIANT_DEFS[variantIndex]
+ : VARIANT_DEFS[0];
+
+ for (const vtDef of variantDef.tables) {
+ const vtName = `${tablePrefix}_variant_${vtDef.suffix}_${suffix.replace(/-/g, '_')}`;
+ console.log(` [tenant ${i}] provisioning variant table: ${vtName} (group ${variantIndex}, fields=${vtDef.fields.length})`);
+ const vtResult = await createVariantTable({
+ token: auth.accessToken,
+ databaseId: provisionFinal.database_id,
+ schemaId: schema.id,
+ tableName: vtName,
+ fields: vtDef.fields,
+ });
+ if (vtResult.ok) {
+ variantResults.push({
+ tableName: vtResult.record.tableName || vtName,
+ tableId: vtResult.record.tableId,
+ fields: vtDef.fields,
+ suffix: vtDef.suffix,
+ });
+ } else {
+ console.warn(` [tenant ${i}] variant table failed: ${vtResult.error}`);
+ variantResults.push({
+ tableName: vtName,
+ fields: vtDef.fields,
+ suffix: vtDef.suffix,
+ error: vtResult.error,
+ });
+ }
+ }
+
+ const databaseSchemas = await listDatabaseSchemas({
+ pool,
+ databaseId: provisionFinal.database_id,
+ });
+
+ const sqlValidation = await validateSqlOps({
+ pool,
+ physicalSchema: schema.schema_name,
+ tableName: secureTable.tableName || tableName,
+ tenantIndex: i,
+ });
+
+ accounts.push({
+ tenantKey: `user:${auth.userId}`,
+ email,
+ authMode: auth.mode,
+ authUserId: auth.userId,
+ shapeVariant: {
+ index: variantIndex,
+ tables: variantResults,
+ },
+ created: {
+ databaseProvisionModule: {
+ id: provision.id,
+ databaseName: provision.databaseName,
+ ownerId: provision.ownerId,
+ domain: provision.domain,
+ modules: provision.modules,
+ status: provision.status,
+ databaseId: provision.databaseId,
+ createdAt: provision.createdAt,
+ completedAt: provision.completedAt,
+ },
+ provisionFinal: {
+ status: provisionFinal.status,
+ databaseId: provisionFinal.database_id,
+ modules: provisionFinal.modules,
+ completedAt: provisionFinal.completed_at,
+ },
+ schema: {
+ id: schema.id,
+ name: schema.name,
+ schemaName: schema.schema_name,
+ availableSchemas: databaseSchemas,
+ },
+ secureTableProvision: {
+ id: secureTable.id,
+ databaseId: secureTable.databaseId,
+ schemaId: secureTable.schemaId,
+ tableId: secureTable.tableId,
+ tableName: secureTable.tableName,
+ nodeType: secureTable.nodeType,
+ outFields: secureTable.outFields,
+ },
+ },
+ sqlValidation: {
+ physicalSchema: schema.schema_name,
+ physicalTable: `${schema.schema_name}.${secureTable.tableName || tableName}`,
+ ...sqlValidation,
+ },
+ });
+ } catch (error) {
+ failures.push({
+ tenantIndex: i,
+ email,
+ error: error instanceof Error ? error.message : String(error),
+ });
+ }
+ }
+ } finally {
+ await pool.end();
+ }
+
+ // --- Shape variant success/failure accounting ---
+ let variantTablesExpected = 0;
+ let variantTablesSucceeded = 0;
+ let variantTablesFailed = 0;
+ let tenantsWithVariantFailures = 0;
+
+ for (const account of accounts) {
+ const sv = account.shapeVariant;
+ // Only count tenants that were supposed to get extra tables (group > 0)
+ const expectedForTenant = sv.tables.length;
+ if (expectedForTenant === 0 && sv.index === 0) {
+ // Group 0 = no extras expected — not a failure
+ continue;
+ }
+ const failedForTenant = sv.tables.filter((t) => t.error).length;
+ variantTablesExpected += expectedForTenant;
+ variantTablesSucceeded += expectedForTenant - failedForTenant;
+ variantTablesFailed += failedForTenant;
+ if (failedForTenant > 0) {
+ tenantsWithVariantFailures += 1;
+ }
+ }
+
+ const variantsRequested = effectiveVariantCount > 0;
+ const variantsPassed = !variantsRequested || variantTablesFailed === 0;
+
+ const summary = {
+ requestedTenants: tenantCount,
+ successTenants: accounts.length,
+ failedTenants: failures.length,
+ passed: accounts.length >= 2 && failures.length === 0 && variantsPassed,
+ ...(variantsRequested
+ ? {
+ shapeVariants: {
+ requested: true,
+ variantGroupCount: effectiveVariantCount,
+ variantTablesExpected,
+ variantTablesSucceeded,
+ variantTablesFailed,
+ tenantsWithVariantFailures,
+ passed: variantsPassed,
+ },
+ }
+ : {}),
+ };
+
+ if (variantsRequested && !variantsPassed) {
+ console.error(
+ `\n⚠ Shape variant provisioning incomplete: ${variantTablesFailed}/${variantTablesExpected} expected variant tables failed across ${tenantsWithVariantFailures} tenant(s).\n` +
+ ` The run is marked as FAILED because --shape-variants ${shapeVariantCount} was requested but structural divergence was not fully achieved.\n`,
+ );
+ }
+
+ const report = {
+ createdAt: new Date().toISOString(),
+ baseUrl,
+ routeHeaders,
+ flow: 'signUp/signIn -> createDatabaseProvisionModule(modules=all) -> use app_public -> createSecureTableProvision(DataId+note) -> SQL insert/select/update by id',
+ options: {
+ tenantCount,
+ modules,
+ provisionDomain,
+ targetSchemaName,
+ tablePrefix,
+ provisionTimeoutMs,
+ provisionPollMs,
+ shapeVariantCount: effectiveVariantCount,
+ },
+ summary,
+ accounts,
+ failures,
+ };
+
+ const manifest = accounts.map((account) => ({
+ tenantKey: account.tenantKey,
+ email: account.email,
+ databaseId: account.created.provisionFinal.databaseId,
+ schemaId: account.created.schema.id,
+ schemaName: account.created.schema.name,
+ physicalSchema: account.created.schema.schemaName,
+ availableSchemas: account.created.schema.availableSchemas,
+ tableId: account.created.secureTableProvision.tableId,
+ tableName: account.created.secureTableProvision.tableName,
+ seedRowId: account.sqlValidation.insertRow?.id ?? null,
+ variantIndex: account.shapeVariant.index,
+ variantTables: account.shapeVariant.tables,
+ }));
+
+ const credentials = accounts.map((account) => ({
+ tenantKey: account.tenantKey,
+ email: account.email,
+ password: userPassword,
+ host: routeHost,
+ apiName: privateApiName,
+ databaseId: account.created.provisionFinal.databaseId,
+ provisionedDatabaseId: account.created.provisionFinal.databaseId,
+ }));
+
+ const reportPath = path.join(dirs.reportsDir, 'db-tech-validation.json');
+ const manifestPath = path.join(dirs.dataDir, 'business-table-manifest.json');
+ const credentialsPath = path.join(dirs.dataDir, 'tenant-credentials.json');
+
+ await writeJson(reportPath, report);
+ await writeJson(manifestPath, manifest);
+ await writeJson(credentialsPath, credentials);
+
+ console.log(
+ JSON.stringify(
+ {
+ runDir,
+ reportPath,
+ manifestPath,
+ credentialsPath,
+ summary,
+ },
+ null,
+ 2,
+ ),
+ );
+
+ if (!summary.passed) {
+ process.exitCode = 1;
+ }
+};
+
+main().catch((error) => {
+ console.error(error instanceof Error ? error.stack : String(error));
+ process.exit(1);
+});
diff --git a/graphql/server/perf/phase2-load.mjs b/graphql/server/perf/phase2-load.mjs
new file mode 100644
index 000000000..645b2ac30
--- /dev/null
+++ b/graphql/server/perf/phase2-load.mjs
@@ -0,0 +1,1416 @@
+#!/usr/bin/env node
+
+import fs from 'node:fs/promises';
+import path from 'node:path';
+import { spawn } from 'node:child_process';
+
+import {
+ DEFAULT_BASE_URL,
+ DEFAULT_TMP_ROOT,
+ ensureRunDirs,
+ getArgValue,
+ getJson,
+ parseIntArg,
+ postJson,
+ sleep,
+ writeJson,
+} from './common.mjs';
+import {
+ buildTargetsFromProfiles,
+ ensurePublicAccessForTargets,
+ getUnsafeTargets,
+} from './public-test-access-lib.mjs';
+
+const args = process.argv.slice(2);
+
+const runDir = path.resolve(
+ getArgValue(
+ args,
+ '--run-dir',
+ path.join(DEFAULT_TMP_ROOT, getArgValue(args, '--run-id', 'graphile-cache-leak-manual-run')),
+ ),
+);
+const dirs = await ensureRunDirs(runDir);
+
+const baseUrl = getArgValue(args, '--base-url', DEFAULT_BASE_URL);
+const workers = parseIntArg(getArgValue(args, '--workers', '16'), 16);
+const durationSeconds = parseIntArg(getArgValue(args, '--duration-seconds', '1200'), 1200);
+const idleSeconds = parseIntArg(getArgValue(args, '--idle-seconds', '45'), 45);
+const requireTenants = parseIntArg(getArgValue(args, '--min-tenant-count', '10'), 10);
+const enforceTenantScale = !args.includes('--allow-underprovisioned');
+const tier = getArgValue(args, '--tier', 'tier-default');
+const hotRatio = Number.parseFloat(getArgValue(args, '--hot-ratio', '0.8'));
+const churnRatioRaw = Number.parseFloat(getArgValue(args, '--churn-ratio', '0'));
+const churnWarmSeconds = parseIntArg(getArgValue(args, '--churn-warm-seconds', '120'), 120);
+const churnCoolSeconds = parseIntArg(getArgValue(args, '--churn-cool-seconds', '360'), 360);
+const churnCohorts = Math.max(1, parseIntArg(getArgValue(args, '--churn-cohorts', '2'), 2));
+const requestProfilesFileArg = getArgValue(args, '--profiles', null);
+const operationModeArg = getArgValue(args, '--operation-mode', 'auto');
+const keyspaceSize = Math.max(1, parseIntArg(getArgValue(args, '--keyspace-size', '1'), 1));
+const keyspaceModeArg = getArgValue(args, '--keyspace-mode', 'auto').trim().toLowerCase();
+
+const profileLimit = parseIntArg(getArgValue(args, '--profile-limit', '0'), 0);
+const heapPid = parseIntArg(getArgValue(args, '--heap-pid', ''), NaN);
+const skipAnalyze = args.includes('--skip-analyze');
+const skipRouteProbe = args.includes('--skip-route-probe');
+const notePrefix = getArgValue(args, '--note-prefix', 'load-note');
+
+const opWeightCreate = Number.parseFloat(getArgValue(args, '--op-weight-create', '0.2'));
+const opWeightGetById = Number.parseFloat(getArgValue(args, '--op-weight-getbyid', '0.4'));
+const opWeightUpdateById = Number.parseFloat(getArgValue(args, '--op-weight-updatebyid', '0.2'));
+const opWeightListRecent = Number.parseFloat(getArgValue(args, '--op-weight-listrecent', '0.2'));
+const failFastEnabled = !args.includes('--disable-fail-fast');
+const failFastWarmupSeconds = parseIntArg(getArgValue(args, '--fail-fast-warmup-seconds', '20'), 20);
+const failFastMinTotal = parseIntArg(getArgValue(args, '--fail-fast-min-total', '1000'), 1000);
+const failFastErrorRate = Math.max(
+ 0,
+ Math.min(1, Number.parseFloat(getArgValue(args, '--fail-fast-error-rate', '0.98'))),
+);
+const failFastConsecutiveNetworkErrors = parseIntArg(
+ getArgValue(args, '--fail-fast-consecutive-network-errors', '120'),
+ 120,
+);
+const publicAccessModeArg = getArgValue(args, '--public-access-mode', 'auto').trim().toLowerCase();
+const allowPublicAccessNonPerfSchema = args.includes('--allow-public-access-non-perf-schema');
+const publicRole = getArgValue(args, '--public-role', 'authenticated').trim();
+const publicReadRole = getArgValue(args, '--public-read-role', 'anonymous').trim();
+const prewarmEnabled = !args.includes('--disable-prewarm');
+const prewarmSampleSize = parseIntArg(getArgValue(args, '--prewarm-sample-size', '0'), 0);
+const prewarmConcurrency = parseIntArg(getArgValue(args, '--prewarm-concurrency', '6'), 6);
+const prewarmTimeoutMs = parseIntArg(getArgValue(args, '--prewarm-timeout-ms', '30000'), 30000);
+const prewarmMaxFailures = parseIntArg(getArgValue(args, '--prewarm-max-failures', '0'), 0);
+
+const pgConfig = {
+ host: getArgValue(args, '--pg-host', process.env.PGHOST || 'localhost'),
+ port: Number.parseInt(getArgValue(args, '--pg-port', process.env.PGPORT || '5432'), 10),
+ database: getArgValue(args, '--pg-database', process.env.PGDATABASE || 'constructive'),
+ user: getArgValue(args, '--pg-user', process.env.PGUSER || 'postgres'),
+ password: getArgValue(args, '--pg-password', process.env.PGPASSWORD || 'password'),
+};
+
+const graphqlPayload = {
+ query: getArgValue(args, '--query', '{ __typename }'),
+};
+
+const VALID_KEYSPACE_MODES = new Set(['auto', 'schemata', 'none']);
+if (!VALID_KEYSPACE_MODES.has(keyspaceModeArg)) {
+ throw new Error(`Invalid --keyspace-mode=${keyspaceModeArg}; expected auto|schemata|none`);
+}
+const VALID_PUBLIC_ACCESS_MODES = new Set(['auto', 'on', 'off']);
+if (!VALID_PUBLIC_ACCESS_MODES.has(publicAccessModeArg)) {
+ throw new Error(`Invalid --public-access-mode=${publicAccessModeArg}; expected auto|on|off`);
+}
+if (!publicRole) {
+ throw new Error('--public-role cannot be empty');
+}
+if (!Number.isFinite(prewarmSampleSize) || prewarmSampleSize < 0) {
+ throw new Error(`Invalid --prewarm-sample-size=${prewarmSampleSize}; expected non-negative integer`);
+}
+if (!Number.isFinite(prewarmConcurrency) || prewarmConcurrency <= 0) {
+ throw new Error(`Invalid --prewarm-concurrency=${prewarmConcurrency}; expected positive integer`);
+}
+if (!Number.isFinite(prewarmTimeoutMs) || prewarmTimeoutMs <= 0) {
+ throw new Error(`Invalid --prewarm-timeout-ms=${prewarmTimeoutMs}; expected positive integer`);
+}
+if (!Number.isFinite(prewarmMaxFailures) || prewarmMaxFailures < 0) {
+ throw new Error(`Invalid --prewarm-max-failures=${prewarmMaxFailures}; expected non-negative integer`);
+}
+
+const resolveProfilesFile = async () => {
+ if (requestProfilesFileArg) {
+ return path.resolve(requestProfilesFileArg);
+ }
+
+ const keyspacePath = path.join(dirs.dataDir, 'tokens.keyspace.json');
+ try {
+ await fs.access(keyspacePath);
+ return keyspacePath;
+ } catch {
+ return path.join(dirs.dataDir, 'tokens.json');
+ }
+};
+
+const ABSOLUTE_URL_RE = /^https?:\/\//i;
+
+const resolveProfileGraphqlUrl = (profile) => {
+ const profilePathRaw = profile?.graphqlUrl ?? '/graphql';
+ if (ABSOLUTE_URL_RE.test(profilePathRaw)) {
+ return profilePathRaw;
+ }
+
+ const profilePath = profilePathRaw.startsWith('/') ? profilePathRaw : `/${profilePathRaw}`;
+ return new URL(profilePath, baseUrl).toString();
+};
+
+const quantile = (numbers, q) => {
+ if (numbers.length === 0) return null;
+ const sorted = [...numbers].sort((a, b) => a - b);
+ const index = Math.max(0, Math.min(sorted.length - 1, Math.floor((sorted.length - 1) * q)));
+ return sorted[index];
+};
+
+const asCount = (value) => {
+ const parsed = Number(value);
+ return Number.isFinite(parsed) ? parsed : 0;
+};
+
+const nonNegativeDelta = (startValue, endValue) => {
+ const delta = asCount(endValue) - asCount(startValue);
+ return delta >= 0 ? delta : 0;
+};
+
+const cacheActivityDelta = (start, end) => {
+ if (!start || !end) {
+ return null;
+ }
+
+ const lookupTotal = nonNegativeDelta(start.lookups?.total, end.lookups?.total);
+ const lookupHits = nonNegativeDelta(start.lookups?.hits, end.lookups?.hits);
+ const lookupMisses = nonNegativeDelta(start.lookups?.misses, end.lookups?.misses);
+ const lookupRecheckHits = nonNegativeDelta(start.lookups?.recheckHits, end.lookups?.recheckHits);
+
+ return {
+ lookups: {
+ total: lookupTotal,
+ hits: lookupHits,
+ misses: lookupMisses,
+ recheckHits: lookupRecheckHits,
+ hitRate: lookupTotal > 0 ? Number((lookupHits / lookupTotal).toFixed(4)) : 0,
+ missRate: lookupTotal > 0 ? Number((lookupMisses / lookupTotal).toFixed(4)) : 0,
+ },
+ builds: {
+ sets: nonNegativeDelta(start.builds?.sets, end.builds?.sets),
+ replacements: nonNegativeDelta(start.builds?.replacements, end.builds?.replacements),
+ coalescedWaits: nonNegativeDelta(start.builds?.coalescedWaits, end.builds?.coalescedWaits),
+ },
+ evictions: {
+ total: nonNegativeDelta(start.evictions?.total, end.evictions?.total),
+ lru: nonNegativeDelta(start.evictions?.lru, end.evictions?.lru),
+ ttl: nonNegativeDelta(start.evictions?.ttl, end.evictions?.ttl),
+ manual: nonNegativeDelta(start.evictions?.manual, end.evictions?.manual),
+ },
+ };
+};
+
+const toMB = (bytes) => Number((bytes / 1024 / 1024).toFixed(2));
+
+const toArray = (setLike) => [...setLike];
+
+const summarizeCacheRedundancy = (
+ snapshotJson,
+ { topFingerprints = 10, topKeys = 5, topKeyKinds = 5, topTenants = 5 } = {},
+) => {
+ const entries = Array.isArray(snapshotJson?.graphileCacheEntries) ? snapshotJson.graphileCacheEntries : [];
+ // `fingerprint` here comes from old-mode graphile-cache snapshot metadata.
+ // It is a perf comparison input, not part of the current buildKey runtime path.
+ const cacheSize = asCount(snapshotJson?.graphileCache?.size ?? entries.length);
+ const byFingerprint = new Map();
+ const byKeyKind = new Map();
+ const byTenant = new Map();
+
+ for (const entry of entries) {
+ const keyKind = entry?.keyKind ?? 'unknown';
+ const tenant = entry?.databaseId ?? entry?.dbname ?? 'unknown';
+ let keyKindRow = byKeyKind.get(keyKind);
+ if (!keyKindRow) {
+ keyKindRow = {
+ keyKind,
+ entries: 0,
+ duplicateEntries: 0,
+ redundantEntries: 0,
+ duplicateFingerprints: 0,
+ };
+ byKeyKind.set(keyKind, keyKindRow);
+ }
+ keyKindRow.entries += 1;
+
+ let tenantRow = byTenant.get(tenant);
+ if (!tenantRow) {
+ tenantRow = {
+ tenant,
+ entries: 0,
+ duplicateEntries: 0,
+ redundantEntries: 0,
+ duplicateFingerprints: 0,
+ keyKinds: new Set(),
+ };
+ byTenant.set(tenant, tenantRow);
+ }
+ tenantRow.entries += 1;
+ tenantRow.keyKinds.add(keyKind);
+
+ const fingerprint = entry?.fingerprint;
+ if (!fingerprint) continue;
+
+ let row = byFingerprint.get(fingerprint);
+ if (!row) {
+ row = {
+ fingerprint,
+ entryCount: 0,
+ keyKinds: new Set(),
+ keys: [],
+ keyKindCounts: new Map(),
+ tenantCounts: new Map(),
+ dbnames: new Set(),
+ };
+ byFingerprint.set(fingerprint, row);
+ }
+
+ row.entryCount += 1;
+ row.keyKinds.add(keyKind);
+ row.keyKindCounts.set(keyKind, (row.keyKindCounts.get(keyKind) ?? 0) + 1);
+ row.tenantCounts.set(tenant, (row.tenantCounts.get(tenant) ?? 0) + 1);
+ if (entry?.dbname) {
+ row.dbnames.add(entry.dbname);
+ }
+ if (row.keys.length < topKeys && entry?.key) {
+ row.keys.push(entry.key);
+ }
+ }
+
+ const duplicateBuckets = [...byFingerprint.values()]
+ .filter((row) => row.entryCount > 1)
+ .sort((a, b) => b.entryCount - a.entryCount || a.fingerprint.localeCompare(b.fingerprint));
+
+ const duplicateEntries = duplicateBuckets.reduce((acc, row) => acc + row.entryCount, 0);
+ const redundantEntries = duplicateBuckets.reduce((acc, row) => acc + Math.max(0, row.entryCount - 1), 0);
+ const crossKindDuplicateFingerprints = duplicateBuckets.reduce(
+ (acc, row) => acc + (row.keyKinds.size > 1 ? 1 : 0),
+ 0,
+ );
+ const sameKindDuplicateFingerprints = duplicateBuckets.length - crossKindDuplicateFingerprints;
+ const crossKindDuplicateEntries = duplicateBuckets.reduce(
+ (acc, row) => acc + (row.keyKinds.size > 1 ? row.entryCount : 0),
+ 0,
+ );
+
+ for (const row of duplicateBuckets) {
+ for (const [keyKind, count] of row.keyKindCounts.entries()) {
+ const keyKindRow = byKeyKind.get(keyKind);
+ if (!keyKindRow) continue;
+ keyKindRow.duplicateEntries += count;
+ keyKindRow.redundantEntries += Math.max(0, count - 1);
+ keyKindRow.duplicateFingerprints += 1;
+ }
+
+ for (const [tenant, count] of row.tenantCounts.entries()) {
+ const tenantRow = byTenant.get(tenant);
+ if (!tenantRow) continue;
+ tenantRow.duplicateEntries += count;
+ tenantRow.redundantEntries += Math.max(0, count - 1);
+ tenantRow.duplicateFingerprints += 1;
+ }
+ }
+
+ const amplificationFactor = byFingerprint.size > 0
+ ? Number((cacheSize / byFingerprint.size).toFixed(4))
+ : 0;
+ const redundancyByKeyKind = [...byKeyKind.values()]
+ .map((row) => ({
+ keyKind: row.keyKind,
+ entries: row.entries,
+ duplicateEntries: row.duplicateEntries,
+ redundantEntries: row.redundantEntries,
+ duplicateEntryRatio: row.entries > 0 ? Number((row.duplicateEntries / row.entries).toFixed(4)) : 0,
+ redundantEntryRatio: row.entries > 0 ? Number((row.redundantEntries / row.entries).toFixed(4)) : 0,
+ duplicateFingerprintRatio: duplicateBuckets.length > 0
+ ? Number((row.duplicateFingerprints / duplicateBuckets.length).toFixed(4))
+ : 0,
+ }))
+ .sort((a, b) => b.redundantEntries - a.redundantEntries || b.duplicateEntries - a.duplicateEntries)
+ .slice(0, topKeyKinds);
+
+ const topDuplicateTenants = [...byTenant.values()]
+ .filter((row) => row.duplicateEntries > 0)
+ .map((row) => ({
+ tenant: row.tenant,
+ entries: row.entries,
+ duplicateEntries: row.duplicateEntries,
+ redundantEntries: row.redundantEntries,
+ duplicateFingerprints: row.duplicateFingerprints,
+ keyKinds: toArray(row.keyKinds).sort(),
+ }))
+ .sort((a, b) => b.redundantEntries - a.redundantEntries || b.duplicateEntries - a.duplicateEntries)
+ .slice(0, topTenants);
+
+ return {
+ observedEntries: entries.length,
+ cacheSize,
+ fingerprints: byFingerprint.size,
+ duplicateFingerprints: duplicateBuckets.length,
+ duplicateEntries,
+ redundantEntries,
+ duplicateEntryRatio: cacheSize > 0 ? Number((duplicateEntries / cacheSize).toFixed(4)) : 0,
+ redundantEntryRatio: cacheSize > 0 ? Number((redundantEntries / cacheSize).toFixed(4)) : 0,
+ crossKindDuplicateFingerprints,
+ sameKindDuplicateFingerprints,
+ crossKindDuplicateEntries,
+ crossKindDuplicateEntryRatio: cacheSize > 0 ? Number((crossKindDuplicateEntries / cacheSize).toFixed(4)) : 0,
+ amplificationFactor,
+ redundancyByKeyKind,
+ topDuplicateTenants,
+ topDuplicateFingerprints: duplicateBuckets.slice(0, topFingerprints).map((row) => ({
+ fingerprint: row.fingerprint,
+ entryCount: row.entryCount,
+ redundantEntries: Math.max(0, row.entryCount - 1),
+ keyKinds: toArray(row.keyKinds).sort(),
+ keyKindCounts: Object.fromEntries([...row.keyKindCounts.entries()].sort((a, b) => b[1] - a[1])),
+ tenants: Object.fromEntries([...row.tenantCounts.entries()].sort((a, b) => b[1] - a[1])),
+ dbnames: toArray(row.dbnames).sort(),
+ keys: row.keys,
+ })),
+ };
+};
+
+const getPerEntryHeapCostBytes = ({ startSnapshot, endSnapshot }) => {
+ const heapDeltaBytes = asCount(endSnapshot?.memory?.heapUsedBytes) - asCount(startSnapshot?.memory?.heapUsedBytes);
+ const cacheDelta = asCount(endSnapshot?.graphileCache?.size) - asCount(startSnapshot?.graphileCache?.size);
+ if (heapDeltaBytes <= 0 || cacheDelta <= 0) {
+ return null;
+ }
+ return Math.round(heapDeltaBytes / cacheDelta);
+};
+
+const analyzeCacheRedundancyRisk = ({ baselineSnapshot, afterSnapshot, idleSnapshot }) => {
+ const baseline = summarizeCacheRedundancy(baselineSnapshot);
+ const after = summarizeCacheRedundancy(afterSnapshot);
+ const idle = summarizeCacheRedundancy(idleSnapshot);
+
+ const perEntryHeapFromLoadBytes = getPerEntryHeapCostBytes({
+ startSnapshot: baselineSnapshot,
+ endSnapshot: afterSnapshot,
+ });
+
+ const upperBoundPerEntryHeapBytes = (() => {
+ const cacheSize = asCount(afterSnapshot?.graphileCache?.size);
+ const heapUsed = asCount(afterSnapshot?.memory?.heapUsedBytes);
+ if (cacheSize <= 0 || heapUsed <= 0) {
+ return null;
+ }
+ return Math.round(heapUsed / cacheSize);
+ })();
+
+ const estimates = {
+ perEntryHeapCostFromLoadMb:
+ perEntryHeapFromLoadBytes == null ? null : toMB(perEntryHeapFromLoadBytes),
+ perEntryHeapCostUpperBoundMb:
+ upperBoundPerEntryHeapBytes == null ? null : toMB(upperBoundPerEntryHeapBytes),
+ redundantHeapCostFromLoadMb:
+ perEntryHeapFromLoadBytes == null ? null : toMB(perEntryHeapFromLoadBytes * after.redundantEntries),
+ redundantHeapCostUpperBoundMb:
+ upperBoundPerEntryHeapBytes == null ? null : toMB(upperBoundPerEntryHeapBytes * after.redundantEntries),
+ };
+
+ const riskSignals = [];
+ if (after.redundantEntryRatio >= 0.2) {
+ riskSignals.push('after-load redundantEntryRatio >= 20%');
+ }
+ if (idle.redundantEntryRatio >= 0.2) {
+ riskSignals.push('post-idle redundantEntryRatio >= 20%');
+ }
+ if (after.crossKindDuplicateFingerprints > 0) {
+ riskSignals.push('cross-keyKind duplicate fingerprints observed');
+ }
+ if (after.amplificationFactor >= 1.3) {
+ riskSignals.push('cache amplification factor >= 1.3 (same runtime cached under many keys)');
+ }
+ if (after.sameKindDuplicateFingerprints > 0 && after.redundantEntryRatio >= 0.1) {
+ riskSignals.push('same-keyKind duplicates observed with non-trivial redundant ratio');
+ }
+ if ((estimates.redundantHeapCostFromLoadMb ?? 0) >= 300) {
+ riskSignals.push('estimated redundant heap cost from load delta >= 300MB');
+ }
+
+ return {
+ baseline,
+ after,
+ idle,
+ estimates,
+ riskSignals,
+ };
+};
+
+const extractCacheActivity = (debugPayload) => debugPayload?.json?.graphileCacheActivity ?? null;
+
+const clamp01 = (value) => {
+ if (!Number.isFinite(value)) return 0;
+ return Math.max(0, Math.min(1, value));
+};
+
+const isLikelyNetworkError = (errorMessage) => {
+ if (!errorMessage) return false;
+ const text = String(errorMessage).toLowerCase();
+ return (
+ text.includes('fetch failed') ||
+ text.includes('econnrefused') ||
+ text.includes('connection terminated') ||
+ text.includes('connection reset') ||
+ text.includes('socket hang up') ||
+ text.includes('networkerror') ||
+ text.includes('network error') ||
+ text.includes('timeout')
+ );
+};
+
+const isBusinessProfile = (profile) =>
+ !!(
+ profile?.table?.typeName &&
+ profile?.table?.queryField &&
+ profile?.table?.createMutation &&
+ profile?.table?.updateMutation
+ );
+
+const isPublicBusinessProfile = (profile) =>
+ isBusinessProfile(profile) &&
+ (profile?.routingMode === 'public' || (!profile?.headers?.['X-Schemata'] && !!profile?.headers?.Host));
+
+const normalizeWeights = () => {
+ const weights = {
+ create: clamp01(opWeightCreate),
+ getById: clamp01(opWeightGetById),
+ updateById: clamp01(opWeightUpdateById),
+ listRecent: clamp01(opWeightListRecent),
+ };
+
+ const sum = Object.values(weights).reduce((acc, value) => acc + value, 0);
+ if (sum <= 0) {
+ return {
+ create: 0.25,
+ getById: 0.25,
+ updateById: 0.25,
+ listRecent: 0.25,
+ };
+ }
+
+ return {
+ create: weights.create / sum,
+ getById: weights.getById / sum,
+ updateById: weights.updateById / sum,
+ listRecent: weights.listRecent / sum,
+ };
+};
+
+const pickOperation = (weights) => {
+ const dice = Math.random();
+ const edges = [
+ ['create', weights.create],
+ ['getById', weights.getById],
+ ['updateById', weights.updateById],
+ ['listRecent', weights.listRecent],
+ ];
+
+ let cursor = 0;
+ for (const [name, weight] of edges) {
+ cursor += weight;
+ if (dice <= cursor) return name;
+ }
+ return 'listRecent';
+};
+
+const resolveBusinessKeyspaceMode = (profiles) => {
+ if (keyspaceModeArg !== 'auto') {
+ return keyspaceModeArg;
+ }
+
+ if (keyspaceSize <= 1) {
+ return 'none';
+ }
+
+ const hasSchemataHeader = profiles.some((profile) => {
+ const value = profile?.headers?.['X-Schemata'];
+ return typeof value === 'string' && value.trim().length > 0;
+ });
+
+ return hasSchemataHeader ? 'schemata' : 'none';
+};
+
+const expandBusinessProfilesForKeyspace = ({ profiles, keyspaceMode }) => {
+ if (keyspaceMode !== 'schemata' || keyspaceSize <= 1) {
+ return profiles;
+ }
+
+ const expanded = [];
+
+ for (const profile of profiles) {
+ const baseSchema = profile.headers?.['X-Schemata'] || profile.table?.physicalSchema;
+ if (!baseSchema) {
+ expanded.push(profile);
+ continue;
+ }
+
+ const schemaPool = Array.isArray(profile.table?.availableSchemas)
+ ? profile.table.availableSchemas.filter(Boolean)
+ : [];
+ const extras = [...new Set(schemaPool.filter((schema) => schema !== baseSchema))];
+
+ for (let i = 0; i < keyspaceSize; i += 1) {
+ const keyspaceIndex = i + 1;
+ const headers = { ...(profile.headers || {}) };
+
+ if (keyspaceIndex === 1 || extras.length === 0) {
+ headers['X-Schemata'] = baseSchema;
+ } else {
+ const extra = extras[(i - 1) % extras.length];
+ headers['X-Schemata'] = `${baseSchema},${extra}`;
+ }
+
+ expanded.push({
+ ...profile,
+ key: `${profile.key}|k${keyspaceIndex}`,
+ routeKey: `schemata:${headers['X-Database-Id']}:${headers['X-Schemata']}`,
+ headers,
+ });
+ }
+ }
+
+ return expanded.length > 0 ? expanded : profiles;
+};
+
+const buildBusinessRequest = ({ profile, operation, rowId }) => {
+ const table = profile.table;
+ const noteValue = `${notePrefix}-${Date.now()}-${Math.floor(Math.random() * 1_000_000)}`;
+
+ switch (operation) {
+ case 'create':
+ return {
+ operation: 'create',
+ payload: {
+ query: `mutation($input: ${table.createInputType}!){${table.createMutation}(input:$input){${table.nodeField}{id note}}}`,
+ variables: {
+ input: {
+ [table.nodeField]: {
+ note: noteValue,
+ },
+ },
+ },
+ },
+ };
+ case 'getById':
+ return {
+ operation: 'getById',
+ payload: {
+ query: `query($id:UUID!){${table.queryField}(condition:{id:$id},first:1){nodes{id note}}}`,
+ variables: {
+ id: rowId,
+ },
+ },
+ };
+ case 'updateById':
+ return {
+ operation: 'updateById',
+ payload: {
+ query: `mutation($input: ${table.updateInputType}!){${table.updateMutation}(input:$input){${table.nodeField}{id note}}}`,
+ variables: {
+ input: {
+ id: rowId,
+ [table.patchField]: {
+ note: noteValue,
+ },
+ },
+ },
+ },
+ };
+ default:
+ return {
+ operation: 'listRecent',
+ payload: {
+ query: `query{${table.queryField}(first:10,orderBy:[PRIMARY_KEY_DESC]){nodes{id note}}}`,
+ },
+ };
+ }
+};
+
+const extractCreatedRowId = ({ profile, json, operation }) => {
+ if (operation === 'create') {
+ return json?.data?.[profile.table.createMutation]?.[profile.table.nodeField]?.id ?? null;
+ }
+ if (operation === 'updateById') {
+ return json?.data?.[profile.table.updateMutation]?.[profile.table.nodeField]?.id ?? null;
+ }
+ if (operation === 'getById') {
+ return json?.data?.[profile.table.queryField]?.nodes?.[0]?.id ?? null;
+ }
+ if (operation === 'listRecent') {
+ return json?.data?.[profile.table.queryField]?.nodes?.[0]?.id ?? null;
+ }
+ return null;
+};
+
+const captureDebug = async ({ suffix }) => {
+ const tierDir = path.join(dirs.dataDir, 'snapshots', tier);
+ await fs.mkdir(tierDir, { recursive: true });
+
+ const [memory, db] = await Promise.all([
+ getJson({ url: `${baseUrl}/debug/memory`, timeoutMs: 15000 }),
+ getJson({ url: `${baseUrl}/debug/db`, timeoutMs: 15000 }),
+ ]);
+
+ const memoryPath = path.join(tierDir, `memory-${suffix}.json`);
+ const dbPath = path.join(tierDir, `db-${suffix}.json`);
+
+ await writeJson(memoryPath, memory);
+ await writeJson(dbPath, db);
+
+ return { memoryPath, dbPath, memory, db };
+};
+
+const loadProfiles = async (filePath) => {
+ const raw = await fs.readFile(filePath, 'utf8');
+ const parsed = JSON.parse(raw);
+ const profiles = Array.isArray(parsed) ? parsed : parsed?.profiles;
+ if (!Array.isArray(profiles) || profiles.length === 0) {
+ throw new Error(`No request profiles found in ${filePath}`);
+ }
+
+ const mode =
+ operationModeArg === 'auto'
+ ? profiles.some((profile) => isBusinessProfile(profile))
+ ? 'business'
+ : 'legacy'
+ : operationModeArg;
+
+ let resolved = profiles;
+ let resolvedKeyspaceMode = 'none';
+ if (mode === 'business') {
+ resolvedKeyspaceMode = resolveBusinessKeyspaceMode(profiles);
+ resolved = expandBusinessProfilesForKeyspace({
+ profiles,
+ keyspaceMode: resolvedKeyspaceMode,
+ });
+ }
+
+ if (profileLimit > 0) {
+ resolved = resolved.slice(0, profileLimit);
+ }
+
+ return { profiles: resolved, mode, sourceCount: profiles.length, keyspaceMode: resolvedKeyspaceMode };
+};
+
+const validateScaleGate = async ({ profiles }) => {
+ const distinctTenantKeys = new Set(
+ profiles.map((profile) => profile.tenantKey || profile.key).filter(Boolean),
+ ).size;
+
+ const profileMsg = `token tenant coverage=${distinctTenantKeys}, required>=${requireTenants}`;
+ if (distinctTenantKeys < requireTenants) {
+ if (enforceTenantScale) {
+ throw new Error(`Scale gate failed: ${profileMsg}`);
+ }
+ console.warn(`[phase2] ${profileMsg}; continuing due to --allow-underprovisioned`);
+ }
+
+ const preflightPath = path.join(runDir, 'reports', 'preflight.json');
+ try {
+ const preflightRaw = await fs.readFile(preflightPath, 'utf8');
+ const preflight = JSON.parse(preflightRaw);
+ const phase1Ready = !!preflight?.readiness?.phase1Ready;
+ const tenantReady = !!preflight?.readiness?.tenantReadyForPhase2;
+
+ if (!phase1Ready || !tenantReady) {
+ const msg = `preflight readiness not satisfied (phase1Ready=${phase1Ready}, tenantReadyForPhase2=${tenantReady})`;
+ if (enforceTenantScale) {
+ throw new Error(`Scale gate failed: ${msg}`);
+ }
+ console.warn(`[phase2] ${msg}; continuing due to --allow-underprovisioned`);
+ }
+ } catch (error) {
+ const msg = `preflight report missing or unreadable at ${preflightPath}`;
+ if (enforceTenantScale) {
+ throw new Error(`Scale gate failed: ${msg}`);
+ }
+ console.warn(`[phase2] ${msg}; continuing due to --allow-underprovisioned`);
+ if (error instanceof Error) {
+ console.warn(`[phase2] detail: ${error.message}`);
+ }
+ }
+};
+
+const runRouteProbe = async ({ profiles }) => {
+ if (skipRouteProbe) {
+ return { attempted: false, reason: 'skip route probe enabled' };
+ }
+
+ if (!Array.isArray(profiles) || profiles.length === 0) {
+ throw new Error('[phase2] route probe cannot run without profiles');
+ }
+
+ const profile = profiles[0];
+ const result = await postJson({
+ url: resolveProfileGraphqlUrl(profile),
+ headers: profile.headers ?? {},
+ payload: { query: '{ __typename }' },
+ timeoutMs: 15000,
+ });
+
+ const hasGraphQLErrors = Array.isArray(result.json?.errors) && result.json.errors.length > 0;
+ const ok = result.ok && !hasGraphQLErrors && result.json?.data?.__typename === 'Query';
+
+ const probe = {
+ attempted: true,
+ ok,
+ profileKey: profile.key ?? null,
+ status: result.status,
+ elapsedMs: result.elapsedMs,
+ error: result.error ?? null,
+ firstError: hasGraphQLErrors ? result.json.errors[0]?.message ?? 'unknown GraphQL error' : null,
+ };
+
+ if (!ok) {
+ const msg = probe.error || probe.firstError || 'unexpected GraphQL response';
+ throw new Error(
+ `[phase2] route probe failed for profile=${probe.profileKey ?? 'unknown'} status=${probe.status ?? 0} msg=${msg}`,
+ );
+ }
+
+ return probe;
+};
+
+const pickPrewarmProfiles = (profiles) => {
+ if (prewarmSampleSize <= 0 || prewarmSampleSize >= profiles.length) {
+ return profiles;
+ }
+
+ const selected = [];
+ const selectedKeys = new Set();
+ const selectedTenantKeys = new Set();
+
+ for (const profile of profiles) {
+ const profileKey = profile?.key ?? null;
+ if (!profileKey || selectedKeys.has(profileKey)) continue;
+ const tenantKey = profile?.tenantKey ?? profileKey;
+ if (selectedTenantKeys.has(tenantKey)) continue;
+
+ selected.push(profile);
+ selectedKeys.add(profileKey);
+ selectedTenantKeys.add(tenantKey);
+ if (selected.length >= prewarmSampleSize) {
+ return selected;
+ }
+ }
+
+ for (const profile of profiles) {
+ const profileKey = profile?.key ?? null;
+ if (!profileKey || selectedKeys.has(profileKey)) continue;
+ selected.push(profile);
+ selectedKeys.add(profileKey);
+ if (selected.length >= prewarmSampleSize) {
+ break;
+ }
+ }
+
+ return selected;
+};
+
+const runPrewarm = async ({ profiles }) => {
+ if (!prewarmEnabled) {
+ return {
+ attempted: false,
+ enabled: false,
+ reason: 'prewarm disabled',
+ requestedSampleSize: prewarmSampleSize,
+ };
+ }
+
+ if (!Array.isArray(profiles) || profiles.length === 0) {
+ return {
+ attempted: false,
+ enabled: true,
+ reason: 'no profiles',
+ requestedSampleSize: prewarmSampleSize,
+ };
+ }
+
+ const selectedProfiles = pickPrewarmProfiles(profiles);
+ const failures = [];
+ let ok = 0;
+ let cursor = 0;
+ const workerCount = Math.max(1, Math.min(prewarmConcurrency, selectedProfiles.length));
+ const startedAt = Date.now();
+
+ const worker = async () => {
+ while (true) {
+ const index = cursor;
+ cursor += 1;
+ if (index >= selectedProfiles.length) {
+ return;
+ }
+
+ const profile = selectedProfiles[index];
+ const result = await postJson({
+ url: resolveProfileGraphqlUrl(profile),
+ headers: profile.headers ?? {},
+ payload: { query: '{ __typename }' },
+ timeoutMs: prewarmTimeoutMs,
+ });
+
+ const hasGraphQLErrors = Array.isArray(result.json?.errors) && result.json.errors.length > 0;
+ const success = result.ok && !hasGraphQLErrors && result.json?.data?.__typename === 'Query';
+ if (success) {
+ ok += 1;
+ continue;
+ }
+
+ failures.push({
+ profileKey: profile?.key ?? null,
+ tenantKey: profile?.tenantKey ?? null,
+ status: result.status,
+ elapsedMs: result.elapsedMs,
+ error:
+ result.error ??
+ (hasGraphQLErrors ? result.json.errors[0]?.message ?? 'unknown GraphQL error' : 'unexpected GraphQL response'),
+ });
+ }
+ };
+
+ await Promise.all(Array.from({ length: workerCount }, () => worker()));
+
+ const summary = {
+ attempted: true,
+ enabled: true,
+ startedAt: new Date(startedAt).toISOString(),
+ endedAt: new Date().toISOString(),
+ requestedSampleSize: prewarmSampleSize,
+ targetCount: selectedProfiles.length,
+ ok,
+ failed: failures.length,
+ concurrency: workerCount,
+ timeoutMs: prewarmTimeoutMs,
+ maxFailures: prewarmMaxFailures,
+ failureSamples: failures.slice(0, 10),
+ };
+
+ if (summary.failed > prewarmMaxFailures) {
+ throw new Error(
+ `[phase2] prewarm failed count=${summary.failed}, allowed=${prewarmMaxFailures}; first=${summary.failureSamples[0]?.error ?? 'unknown error'}`,
+ );
+ }
+
+ return summary;
+};
+
+const chooseProfile = (profiles) => {
+ if (!Array.isArray(profiles) || profiles.length === 0) {
+ throw new Error('No active profiles available for selection');
+ }
+ if (profiles.length === 1) return profiles[0];
+
+ const hotCount = Math.max(1, Math.floor(profiles.length * 0.2));
+ const hot = profiles.slice(0, hotCount);
+ const cold = profiles.slice(hotCount);
+
+ const hotPick = Math.random() < hotRatio || cold.length === 0;
+ const target = hotPick ? hot : cold;
+ return target[Math.floor(Math.random() * target.length)];
+};
+
+const buildTrafficPlan = (profiles) => {
+ const churnRatio = clamp01(churnRatioRaw);
+ const churnEnabled = churnRatio > 0 && churnCoolSeconds > 0;
+ const maxChurnCount = Math.max(0, profiles.length - 1);
+ const churnCount = churnEnabled ? Math.min(Math.floor(profiles.length * churnRatio), maxChurnCount) : 0;
+ const alwaysOnProfiles = profiles.slice(0, profiles.length - churnCount);
+ const churnProfiles = profiles.slice(profiles.length - churnCount);
+ const cooldownWindowsByKey = new Map();
+
+ for (let i = 0; i < churnProfiles.length; i += 1) {
+ const profile = churnProfiles[i];
+ const key = profile.key ?? `profile-${i}`;
+ const cohort = i % churnCohorts;
+ const cohortOffsetSeconds = Math.floor((cohort * churnCoolSeconds) / churnCohorts);
+ const coolStartSeconds = Math.max(0, churnWarmSeconds + cohortOffsetSeconds);
+ const coolEndSeconds = coolStartSeconds + churnCoolSeconds;
+ cooldownWindowsByKey.set(key, { cohort, coolStartSeconds, coolEndSeconds });
+ }
+
+ let lastElapsedSecond = -1;
+ let cachedActiveProfiles = profiles;
+
+ const getActiveProfiles = (elapsedMs) => {
+ if (!churnEnabled || churnCount === 0) {
+ return profiles;
+ }
+
+ const elapsedSecond = Math.max(0, Math.floor(elapsedMs / 1000));
+ if (elapsedSecond === lastElapsedSecond) {
+ return cachedActiveProfiles;
+ }
+ lastElapsedSecond = elapsedSecond;
+
+ const activeFromChurn = churnProfiles.filter((profile) => {
+ const window = cooldownWindowsByKey.get(profile.key ?? '');
+ if (!window) return true;
+ return elapsedSecond < window.coolStartSeconds || elapsedSecond >= window.coolEndSeconds;
+ });
+
+ const active = [...alwaysOnProfiles, ...activeFromChurn];
+ cachedActiveProfiles = active.length > 0 ? active : alwaysOnProfiles.length > 0 ? alwaysOnProfiles : profiles;
+ return cachedActiveProfiles;
+ };
+
+ return {
+ getActiveProfiles,
+ summary: {
+ enabled: churnEnabled && churnCount > 0,
+ ratio: churnRatio,
+ warmSeconds: churnWarmSeconds,
+ coolSeconds: churnCoolSeconds,
+ cohorts: churnCohorts,
+ churnProfileCount: churnCount,
+ alwaysOnProfileCount: alwaysOnProfiles.length,
+ windows: Object.fromEntries(cooldownWindowsByKey.entries()),
+ },
+ };
+};
+
+const runLoad = async ({ profiles, mode }) => {
+ const startedAt = Date.now();
+ const until = startedAt + durationSeconds * 1000;
+ const trafficPlan = buildTrafficPlan(profiles);
+ const operationWeights = normalizeWeights();
+ const rowState = new Map();
+ let abortReason = null;
+ let consecutiveNetworkErrors = 0;
+
+ const latencies = [];
+ const profileStats = new Map();
+ const operationStats = new Map();
+ let total = 0;
+ let ok = 0;
+ let failed = 0;
+
+ const recordOperation = (operation, success) => {
+ if (!operationStats.has(operation)) {
+ operationStats.set(operation, { total: 0, ok: 0, failed: 0 });
+ }
+ const row = operationStats.get(operation);
+ row.total += 1;
+ row.ok += success ? 1 : 0;
+ row.failed += success ? 0 : 1;
+ };
+
+ const record = (profileKey, success, elapsedMs, status, error, operation) => {
+ total += 1;
+ if (success) {
+ ok += 1;
+ } else {
+ failed += 1;
+ }
+
+ if (latencies.length < 20000) {
+ latencies.push(elapsedMs);
+ }
+
+ if (!profileStats.has(profileKey)) {
+ profileStats.set(profileKey, {
+ total: 0,
+ ok: 0,
+ failed: 0,
+ maxMs: 0,
+ minMs: Number.POSITIVE_INFINITY,
+ statuses: {},
+ lastError: null,
+ });
+ }
+
+ const row = profileStats.get(profileKey);
+ row.total += 1;
+ row.ok += success ? 1 : 0;
+ row.failed += success ? 0 : 1;
+ row.maxMs = Math.max(row.maxMs, elapsedMs);
+ row.minMs = Math.min(row.minMs, elapsedMs);
+ row.statuses[String(status)] = (row.statuses[String(status)] ?? 0) + 1;
+ if (error) {
+ row.lastError = error;
+ }
+ if (operation) {
+ row.lastOperation = operation;
+ }
+
+ if (operation) {
+ recordOperation(operation, success);
+ }
+ };
+
+ const getRowBucket = (profileKey, seedRowId = null) => {
+ if (!rowState.has(profileKey)) {
+ rowState.set(profileKey, {
+ rowIds: seedRowId ? [seedRowId] : [],
+ });
+ }
+ return rowState.get(profileKey);
+ };
+
+ const worker = async () => {
+ while (Date.now() < until && !abortReason) {
+ const elapsedMs = Date.now() - startedAt;
+ const activeProfiles = trafficPlan.getActiveProfiles(elapsedMs);
+ const profile = chooseProfile(activeProfiles);
+ const profileKey = profile.key ?? 'unknown';
+
+ let operation = 'legacy';
+ let payload = graphqlPayload;
+
+ if (mode === 'business') {
+ const bucket = getRowBucket(profileKey, profile.seed?.rowId ?? null);
+ operation = pickOperation(operationWeights);
+ if ((operation === 'getById' || operation === 'updateById') && bucket.rowIds.length === 0) {
+ operation = 'create';
+ }
+
+ const selectedRowId =
+ bucket.rowIds.length > 0
+ ? bucket.rowIds[Math.floor(Math.random() * bucket.rowIds.length)]
+ : null;
+
+ const request = buildBusinessRequest({
+ profile,
+ operation,
+ rowId: selectedRowId,
+ });
+ operation = request.operation;
+ payload = request.payload;
+ }
+
+ const result = await postJson({
+ url: resolveProfileGraphqlUrl(profile),
+ headers: profile.headers ?? {},
+ payload,
+ timeoutMs: 20000,
+ });
+
+ const hasGraphQLErrors = Array.isArray(result.json?.errors) && result.json.errors.length > 0;
+ const success = result.ok && !hasGraphQLErrors && result.json?.data != null;
+ const errMsg = result.error
+ ? result.error
+ : result.json?.errors?.[0]?.message ?? (!success ? 'unexpected GraphQL response' : null);
+
+ if (mode === 'business' && success) {
+ const bucket = getRowBucket(profileKey, profile.seed?.rowId ?? null);
+ const rowId = extractCreatedRowId({ profile, json: result.json, operation });
+ if (rowId && !bucket.rowIds.includes(rowId)) {
+ bucket.rowIds.push(rowId);
+ if (bucket.rowIds.length > 200) {
+ bucket.rowIds = bucket.rowIds.slice(bucket.rowIds.length - 200);
+ }
+ }
+ }
+
+ record(profileKey, success, result.elapsedMs, result.status, errMsg, operation);
+
+ if (!failFastEnabled || abortReason) {
+ continue;
+ }
+
+ if (success) {
+ consecutiveNetworkErrors = 0;
+ } else if (isLikelyNetworkError(errMsg)) {
+ consecutiveNetworkErrors += 1;
+ } else {
+ consecutiveNetworkErrors = 0;
+ }
+
+ if (consecutiveNetworkErrors >= failFastConsecutiveNetworkErrors) {
+ abortReason = `consecutive network errors=${consecutiveNetworkErrors} (threshold=${failFastConsecutiveNetworkErrors}), lastError=${errMsg ?? 'n/a'}`;
+ continue;
+ }
+
+ const elapsedSeconds = (Date.now() - startedAt) / 1000;
+ if (elapsedSeconds < failFastWarmupSeconds || total < failFastMinTotal) {
+ continue;
+ }
+
+ const currentFailRate = failed / Math.max(1, total);
+ if (currentFailRate >= failFastErrorRate) {
+ abortReason = `error rate=${(currentFailRate * 100).toFixed(2)}% (threshold=${(failFastErrorRate * 100).toFixed(2)}%) after total=${total}, failed=${failed}`;
+ }
+ }
+ };
+
+ await Promise.all(Array.from({ length: workers }, () => worker()));
+
+ if (abortReason) {
+ throw new Error(`[phase2] fail-fast triggered: ${abortReason}`);
+ }
+
+ const elapsedMs = Date.now() - startedAt;
+ const profileBreakdown = Object.fromEntries(profileStats.entries());
+
+ for (const key of Object.keys(profileBreakdown)) {
+ const stats = profileBreakdown[key];
+ if (!Number.isFinite(stats.minMs)) stats.minMs = 0;
+ }
+
+ return {
+ startedAt: new Date(startedAt).toISOString(),
+ endedAt: new Date().toISOString(),
+ elapsedMs,
+ total,
+ ok,
+ failed,
+ requestsPerSecond: elapsedMs > 0 ? Number((total / (elapsedMs / 1000)).toFixed(2)) : 0,
+ latencyMs: {
+ min: latencies.length > 0 ? Math.min(...latencies) : null,
+ p50: quantile(latencies, 0.5),
+ p95: quantile(latencies, 0.95),
+ p99: quantile(latencies, 0.99),
+ max: latencies.length > 0 ? Math.max(...latencies) : null,
+ sampleCount: latencies.length,
+ },
+ mode,
+ operationWeights: mode === 'business' ? operationWeights : null,
+ operationBreakdown: Object.fromEntries(operationStats.entries()),
+ trafficPlan: trafficPlan.summary,
+ profileBreakdown,
+ };
+};
+
+const preparePublicAccess = async ({ profiles }) => {
+ if (!Array.isArray(profiles) || profiles.length === 0) {
+ return { attempted: false, enabled: false, mode: publicAccessModeArg, reason: 'no profiles' };
+ }
+
+ const hasPublicBusinessProfiles = profiles.some((profile) => isPublicBusinessProfile(profile));
+ const enabled =
+ publicAccessModeArg === 'on' ||
+ (publicAccessModeArg === 'auto' && hasPublicBusinessProfiles);
+
+ if (!enabled) {
+ return {
+ attempted: false,
+ enabled: false,
+ mode: publicAccessModeArg,
+ hasPublicBusinessProfiles,
+ reason: publicAccessModeArg === 'off' ? 'public access mode disabled' : 'no public business profiles',
+ };
+ }
+
+ const targets = buildTargetsFromProfiles(profiles);
+ if (targets.length === 0) {
+ return {
+ attempted: false,
+ enabled: true,
+ mode: publicAccessModeArg,
+ hasPublicBusinessProfiles,
+ reason: 'no table targets in profiles',
+ };
+ }
+
+ const unsafeTargets = getUnsafeTargets(targets);
+ if (unsafeTargets.length > 0 && !allowPublicAccessNonPerfSchema) {
+ throw new Error(
+ `[phase2] refusing to prepare non-perf schemas: ${unsafeTargets
+ .map((target) => `${target.schemaName}.${target.tableName}`)
+ .join(', ')}`,
+ );
+ }
+
+ const result = await ensurePublicAccessForTargets({
+ targets,
+ pgConfig,
+ dryRun: false,
+ publicRole,
+ publicReadRole,
+ });
+
+ if (result.failures.length > 0) {
+ throw new Error(
+ `[phase2] public access preparation failed count=${result.failures.length}; first=${result.failures[0]?.error ?? 'unknown error'}`,
+ );
+ }
+
+ return {
+ attempted: true,
+ enabled: true,
+ mode: publicAccessModeArg,
+ hasPublicBusinessProfiles,
+ targetCount: targets.length,
+ preparedCount: result.prepared.length,
+ failureCount: result.failures.length,
+ publicRole,
+ publicReadRole: publicReadRole || null,
+ };
+};
+
+const tryCaptureHeap = async () => {
+ if (!Number.isFinite(heapPid)) {
+ return { attempted: false, reason: 'heap pid not provided' };
+ }
+
+ const scriptPath = path.resolve(path.dirname(new URL(import.meta.url).pathname), '..', 'scripts', 'capture-heap-snapshot.mjs');
+
+ return await new Promise((resolve) => {
+ const child = spawn(process.execPath, [scriptPath, '--pid', String(heapPid), '--dir', dirs.heapDir, '--timeout-ms', '60000'], {
+ stdio: ['ignore', 'pipe', 'pipe'],
+ });
+
+ let stdout = '';
+ let stderr = '';
+ child.stdout.on('data', (chunk) => {
+ stdout += String(chunk);
+ });
+ child.stderr.on('data', (chunk) => {
+ stderr += String(chunk);
+ });
+
+ child.on('close', (code) => {
+ resolve({
+ attempted: true,
+ ok: code === 0,
+ code,
+ output: stdout.trim(),
+ error: stderr.trim() || null,
+ });
+ });
+ });
+};
+
+const analyzeSampler = async ({ windowStart, windowEnd }) => {
+ if (skipAnalyze) {
+ return { attempted: false, reason: 'skip analyze enabled' };
+ }
+
+ const scriptPath = path.resolve(path.dirname(new URL(import.meta.url).pathname), '..', 'scripts', 'analyze-debug-logs.mjs');
+ const childArgs = [scriptPath, '--dir', dirs.samplerDir, '--json', '--start', windowStart, '--end', windowEnd];
+ return await new Promise((resolve) => {
+ const child = spawn(process.execPath, childArgs, {
+ stdio: ['ignore', 'pipe', 'pipe'],
+ });
+
+ let stdout = '';
+ let stderr = '';
+
+ child.stdout.on('data', (chunk) => {
+ stdout += String(chunk);
+ });
+ child.stderr.on('data', (chunk) => {
+ stderr += String(chunk);
+ });
+
+ child.on('close', async (code) => {
+ if (code === 0) {
+ try {
+ const parsed = JSON.parse(stdout);
+ const reportPath = path.join(dirs.reportsDir, `analyze-debug-logs-${tier}.json`);
+ await writeJson(reportPath, parsed);
+ resolve({ attempted: true, ok: true, reportPath, stderr: stderr.trim() || null });
+ return;
+ } catch {
+ resolve({ attempted: true, ok: false, error: 'analyze output is not valid JSON', stderr: stderr.trim() || null });
+ return;
+ }
+ }
+
+ resolve({ attempted: true, ok: false, code, error: stderr.trim() || 'analyze script failed' });
+ });
+ });
+};
+
+const main = async () => {
+ const startedAt = new Date().toISOString();
+ const requestProfilesFile = await resolveProfilesFile();
+ const loadedProfiles = await loadProfiles(requestProfilesFile);
+ const profiles = loadedProfiles.profiles;
+ const executionMode = loadedProfiles.mode;
+ const executionKeyspaceMode = loadedProfiles.keyspaceMode;
+ const publicAccessPreparation = await preparePublicAccess({ profiles });
+ await validateScaleGate({ profiles });
+ const routeProbe = await runRouteProbe({ profiles });
+ const prewarm = await runPrewarm({ profiles });
+
+ const baseline = await captureDebug({ suffix: 'baseline' });
+ const loadSummary = await runLoad({ profiles, mode: executionMode });
+ const after = await captureDebug({ suffix: 'after' });
+
+ await sleep(idleSeconds * 1000);
+ const idle = await captureDebug({ suffix: 'idle' });
+
+ const cacheActivity = {
+ loadWindow: cacheActivityDelta(
+ extractCacheActivity(baseline.memory),
+ extractCacheActivity(after.memory),
+ ),
+ cooldownWindow: cacheActivityDelta(
+ extractCacheActivity(after.memory),
+ extractCacheActivity(idle.memory),
+ ),
+ totalWindow: cacheActivityDelta(
+ extractCacheActivity(baseline.memory),
+ extractCacheActivity(idle.memory),
+ ),
+ };
+ const cacheRedundancy = analyzeCacheRedundancyRisk({
+ baselineSnapshot: baseline.memory?.json ?? null,
+ afterSnapshot: after.memory?.json ?? null,
+ idleSnapshot: idle.memory?.json ?? null,
+ });
+
+ const analyzeWindowStart = baseline.memory?.json?.timestamp ?? startedAt;
+ const analyzeWindowEnd = idle.memory?.json?.timestamp ?? new Date().toISOString();
+ const [heapCapture, analyzeResult] = await Promise.all([
+ tryCaptureHeap(),
+ analyzeSampler({ windowStart: analyzeWindowStart, windowEnd: analyzeWindowEnd }),
+ ]);
+
+ const result = {
+ startedAt,
+ endedAt: new Date().toISOString(),
+ runDir,
+ tier,
+ baseUrl,
+ workers,
+ durationSeconds,
+ idleSeconds,
+ hotRatio,
+ keyspaceSize,
+ keyspaceMode: executionKeyspaceMode,
+ keyspaceModeRequested: keyspaceModeArg,
+ operationMode: executionMode,
+ publicAccessPreparation,
+ routeProbe,
+ prewarmConfig: {
+ enabled: prewarmEnabled,
+ sampleSize: prewarmSampleSize,
+ concurrency: prewarmConcurrency,
+ timeoutMs: prewarmTimeoutMs,
+ maxFailures: prewarmMaxFailures,
+ },
+ prewarm,
+ profilesFile: requestProfilesFile,
+ sourceProfileCount: loadedProfiles.sourceCount,
+ profileCount: profiles.length,
+ snapshots: {
+ baseline: {
+ memoryPath: baseline.memoryPath,
+ dbPath: baseline.dbPath,
+ memoryOk: baseline.memory.ok,
+ dbOk: baseline.db.ok,
+ },
+ after: {
+ memoryPath: after.memoryPath,
+ dbPath: after.dbPath,
+ memoryOk: after.memory.ok,
+ dbOk: after.db.ok,
+ },
+ idle: {
+ memoryPath: idle.memoryPath,
+ dbPath: idle.dbPath,
+ memoryOk: idle.memory.ok,
+ dbOk: idle.db.ok,
+ },
+ },
+ load: loadSummary,
+ cacheActivity,
+ cacheRedundancy,
+ heapCapture,
+ analyzeResult,
+ };
+
+ const outPath = path.join(dirs.dataDir, `load-${tier}.json`);
+ await writeJson(outPath, result);
+ console.log(JSON.stringify({ outPath, profileCount: profiles.length, totalRequests: loadSummary.total, failed: loadSummary.failed }, null, 2));
+};
+
+main().catch((error) => {
+ console.error(error instanceof Error ? error.stack : String(error));
+ process.exit(1);
+});
diff --git a/graphql/server/perf/prepare-public-test-access.mjs b/graphql/server/perf/prepare-public-test-access.mjs
new file mode 100644
index 000000000..11046e605
--- /dev/null
+++ b/graphql/server/perf/prepare-public-test-access.mjs
@@ -0,0 +1,129 @@
+#!/usr/bin/env node
+
+import fs from 'node:fs/promises';
+import path from 'node:path';
+
+import {
+ DEFAULT_TMP_ROOT,
+ ensureRunDirs,
+ getArgValue,
+ hasFlag,
+ makeRunId,
+ writeJson,
+} from './common.mjs';
+import {
+ buildTargetsFromProfiles,
+ ensurePublicAccessForTargets,
+ extractProfiles,
+ getUnsafeTargets,
+} from './public-test-access-lib.mjs';
+
+const args = process.argv.slice(2);
+
+const runId = getArgValue(args, '--run-id', makeRunId('graphile-cache-public-access'));
+const runDir = path.resolve(getArgValue(args, '--run-dir', path.join(DEFAULT_TMP_ROOT, runId)));
+const profilesPath = path.resolve(
+ getArgValue(args, '--profiles', path.join(runDir, 'data', 'business-op-profiles.public.json')),
+);
+const dryRun = hasFlag(args, '--dry-run');
+const allowNonPerfSchema = hasFlag(args, '--allow-non-perf-schema');
+const tag = getArgValue(args, '--tag', '').trim();
+const publicRole = getArgValue(args, '--public-role', 'authenticated').trim();
+const publicReadRole = getArgValue(args, '--public-read-role', 'anonymous').trim();
+
+if (!publicRole) {
+ throw new Error('--public-role cannot be empty');
+}
+
+const pgConfig = {
+ host: getArgValue(args, '--pg-host', process.env.PGHOST || 'localhost'),
+ port: Number.parseInt(getArgValue(args, '--pg-port', process.env.PGPORT || '5432'), 10),
+ database: getArgValue(args, '--pg-database', process.env.PGDATABASE || 'constructive'),
+ user: getArgValue(args, '--pg-user', process.env.PGUSER || 'postgres'),
+ password: getArgValue(args, '--pg-password', process.env.PGPASSWORD || 'password'),
+};
+
+const readJson = async (filePath) => {
+ const raw = await fs.readFile(filePath, 'utf8');
+ return JSON.parse(raw);
+};
+
+const main = async () => {
+ const dirs = await ensureRunDirs(runDir);
+ const reportName = tag ? `prepare-public-test-access-${tag}.json` : 'prepare-public-test-access.json';
+ const reportPath = path.join(dirs.reportsDir, reportName);
+
+ const profilesPayload = await readJson(profilesPath);
+ const profiles = extractProfiles(profilesPayload);
+ if (profiles.length === 0) {
+ throw new Error(`No profiles found in ${profilesPath}`);
+ }
+
+ const targets = buildTargetsFromProfiles(profiles);
+ if (targets.length === 0) {
+ throw new Error(`No table targets found in ${profilesPath}`);
+ }
+
+ const unsafeTargets = getUnsafeTargets(targets);
+ if (unsafeTargets.length > 0 && !allowNonPerfSchema) {
+ throw new Error(
+ `Refusing to prepare non-perf schemas: ${unsafeTargets
+ .map((target) => `${target.schemaName}.${target.tableName}`)
+ .join(', ')}`,
+ );
+ }
+
+ const preparedResult = await ensurePublicAccessForTargets({
+ targets,
+ pgConfig,
+ dryRun,
+ publicRole,
+ publicReadRole,
+ });
+
+ const report = {
+ createdAt: new Date().toISOString(),
+ runDir,
+ profilesPath,
+ options: {
+ dryRun,
+ allowNonPerfSchema,
+ publicRole,
+ publicReadRole: publicReadRole || null,
+ tag: tag || null,
+ },
+ totals: {
+ profileCount: profiles.length,
+ targetCount: targets.length,
+ preparedCount: preparedResult.prepared.length,
+ failureCount: preparedResult.failures.length,
+ },
+ targets,
+ prepared: preparedResult.prepared,
+ failures: preparedResult.failures,
+ };
+
+ await writeJson(reportPath, report);
+
+ console.log(
+ JSON.stringify(
+ {
+ reportPath,
+ targetCount: targets.length,
+ preparedCount: preparedResult.prepared.length,
+ failureCount: preparedResult.failures.length,
+ },
+ null,
+ 2,
+ ),
+ );
+
+ if (preparedResult.failures.length > 0) {
+ process.exitCode = 1;
+ }
+};
+
+main().catch((error) => {
+ console.error(error instanceof Error ? error.stack : String(error));
+ process.exit(1);
+});
diff --git a/graphql/server/perf/public-test-access-lib.mjs b/graphql/server/perf/public-test-access-lib.mjs
new file mode 100644
index 000000000..354ad9f52
--- /dev/null
+++ b/graphql/server/perf/public-test-access-lib.mjs
@@ -0,0 +1,158 @@
+import { Pool } from 'pg';
+
+const quoteIdent = (value) => `"${String(value).replace(/"/g, '""')}"`;
+const quoteIdentOrNull = (value) => {
+ const text = String(value ?? '').trim();
+ return text.length > 0 ? quoteIdent(text) : null;
+};
+
+const POLICY_NAMES = {
+ select: 'perf_load_public_select',
+ insert: 'perf_load_public_insert',
+ update: 'perf_load_public_update',
+};
+
+export const extractProfiles = (payload) => {
+ if (Array.isArray(payload)) return payload;
+ if (Array.isArray(payload?.profiles)) return payload.profiles;
+ return [];
+};
+
+export const buildTargetsFromProfiles = (profiles) => {
+ const dedupe = new Map();
+
+ for (const profile of profiles) {
+ const schemaName = profile?.table?.physicalSchema;
+ const tableName = profile?.table?.tableName;
+ if (!schemaName || !tableName) continue;
+ dedupe.set(`${schemaName}.${tableName}`, {
+ schemaName,
+ tableName,
+ databaseId: profile?.table?.databaseId ?? null,
+ profileKey: profile?.key ?? null,
+ });
+ }
+
+ return [...dedupe.values()].sort((a, b) =>
+ `${a.schemaName}.${a.tableName}`.localeCompare(`${b.schemaName}.${b.tableName}`),
+ );
+};
+
+export const getUnsafeTargets = (targets) =>
+ targets.filter((target) => !target.schemaName.startsWith('perf-'));
+
+export const ensurePublicAccessForTargets = async ({
+ targets,
+ pgConfig,
+ dryRun = false,
+ publicRole = 'authenticated',
+ publicReadRole = 'anonymous',
+}) => {
+ const prepared = [];
+ const failures = [];
+
+ if (!Array.isArray(targets) || targets.length === 0) {
+ return { prepared, failures };
+ }
+
+ if (dryRun) {
+ for (const target of targets) {
+ prepared.push({
+ ...target,
+ dryRun: true,
+ publicRole,
+ publicReadRole,
+ rlsEnabled: null,
+ createdPolicies: [],
+ });
+ }
+ return { prepared, failures };
+ }
+
+ const pool = new Pool(pgConfig);
+ try {
+ for (const target of targets) {
+ try {
+ const schemaIdent = quoteIdent(target.schemaName);
+ const tableIdent = quoteIdent(target.tableName);
+ const qualified = `${schemaIdent}.${tableIdent}`;
+ const publicRoleIdent = quoteIdent(publicRole);
+ const publicReadRoleIdent = quoteIdentOrNull(publicReadRole);
+
+ const accessSql = [
+ `grant usage on schema ${schemaIdent} to ${publicRoleIdent};`,
+ publicReadRoleIdent ? `grant usage on schema ${schemaIdent} to ${publicReadRoleIdent};` : null,
+ `grant select, insert, update, delete on table ${qualified} to ${publicRoleIdent};`,
+ publicReadRoleIdent ? `grant select on table ${qualified} to ${publicReadRoleIdent};` : null,
+ ].filter(Boolean);
+
+ for (const sql of accessSql) {
+ await pool.query(sql);
+ }
+
+ const rlsResult = await pool.query(
+ `
+ select c.relrowsecurity as rls_enabled
+ from pg_class c
+ join pg_namespace n on n.oid = c.relnamespace
+ where n.nspname = $1 and c.relname = $2
+ `,
+ [target.schemaName, target.tableName],
+ );
+ const rlsEnabled = Boolean(rlsResult.rows?.[0]?.rls_enabled);
+
+ const createdPolicies = [];
+ if (rlsEnabled) {
+ const policyResult = await pool.query(
+ `
+ select policyname
+ from pg_policies
+ where schemaname = $1
+ and tablename = $2
+ `,
+ [target.schemaName, target.tableName],
+ );
+ const existingPolicies = new Set(policyResult.rows?.map((row) => row.policyname));
+
+ const maybeCreatePolicy = async (name, sql) => {
+ if (existingPolicies.has(name)) return;
+ await pool.query(sql);
+ createdPolicies.push(name);
+ };
+
+ await maybeCreatePolicy(
+ POLICY_NAMES.select,
+ `create policy ${quoteIdent(POLICY_NAMES.select)} on ${qualified} for select to ${publicRoleIdent} using (true);`,
+ );
+ await maybeCreatePolicy(
+ POLICY_NAMES.insert,
+ `create policy ${quoteIdent(POLICY_NAMES.insert)} on ${qualified} for insert to ${publicRoleIdent} with check (true);`,
+ );
+ await maybeCreatePolicy(
+ POLICY_NAMES.update,
+ `create policy ${quoteIdent(POLICY_NAMES.update)} on ${qualified} for update to ${publicRoleIdent} using (true) with check (true);`,
+ );
+ }
+
+ prepared.push({
+ ...target,
+ dryRun: false,
+ publicRole,
+ publicReadRole,
+ rlsEnabled,
+ createdPolicies,
+ });
+ } catch (error) {
+ failures.push({
+ ...target,
+ phase: 'ensurePublicAccess',
+ error: error instanceof Error ? error.message : String(error),
+ });
+ }
+ }
+ } finally {
+ await pool.end();
+ }
+
+ return { prepared, failures };
+};
diff --git a/graphql/server/perf/reset-business-test-data.mjs b/graphql/server/perf/reset-business-test-data.mjs
new file mode 100644
index 000000000..e51bc8573
--- /dev/null
+++ b/graphql/server/perf/reset-business-test-data.mjs
@@ -0,0 +1,187 @@
+#!/usr/bin/env node
+
+import fs from 'node:fs/promises';
+import path from 'node:path';
+import { Pool } from 'pg';
+
+import {
+ DEFAULT_TMP_ROOT,
+ ensureRunDirs,
+ getArgValue,
+ hasFlag,
+ makeRunId,
+ writeJson,
+} from './common.mjs';
+import {
+ buildTargetsFromProfiles,
+ ensurePublicAccessForTargets,
+ extractProfiles,
+ getUnsafeTargets,
+} from './public-test-access-lib.mjs';
+
+const args = process.argv.slice(2);
+
+const runId = getArgValue(args, '--run-id', makeRunId('graphile-cache-reset'));
+const runDir = path.resolve(getArgValue(args, '--run-dir', path.join(DEFAULT_TMP_ROOT, runId)));
+const profilesPath = path.resolve(
+ getArgValue(args, '--profiles', path.join(runDir, 'data', 'business-op-profiles.json')),
+);
+const dryRun = hasFlag(args, '--dry-run');
+const allowNonPerfSchema = hasFlag(args, '--allow-non-perf-schema');
+const ensurePublicTestAccess = hasFlag(args, '--ensure-public-test-access');
+const publicRole = getArgValue(args, '--public-role', 'authenticated');
+const publicReadRole = getArgValue(args, '--public-read-role', 'anonymous');
+const tag = getArgValue(args, '--tag', '').trim();
+
+const pgConfig = {
+ host: getArgValue(args, '--pg-host', process.env.PGHOST || 'localhost'),
+ port: Number.parseInt(getArgValue(args, '--pg-port', process.env.PGPORT || '5432'), 10),
+ database: getArgValue(args, '--pg-database', process.env.PGDATABASE || 'constructive'),
+ user: getArgValue(args, '--pg-user', process.env.PGUSER || 'postgres'),
+ password: getArgValue(args, '--pg-password', process.env.PGPASSWORD || 'password'),
+};
+
+const quoteIdent = (value) => `"${String(value).replace(/"/g, '""')}"`;
+
+const readJson = async (filePath) => {
+ const raw = await fs.readFile(filePath, 'utf8');
+ return JSON.parse(raw);
+};
+
+const main = async () => {
+ const dirs = await ensureRunDirs(runDir);
+ const reportName = tag ? `reset-business-test-data-${tag}.json` : 'reset-business-test-data.json';
+ const reportPath = path.join(dirs.reportsDir, reportName);
+
+ const profilesPayload = await readJson(profilesPath);
+ const profiles = extractProfiles(profilesPayload);
+ if (profiles.length === 0) {
+ throw new Error(`No business profiles found in ${profilesPath}`);
+ }
+
+ const targets = buildTargetsFromProfiles(profiles);
+ if (targets.length === 0) {
+ throw new Error(`No truncation targets found from profiles in ${profilesPath}`);
+ }
+
+ const unsafeTargets = getUnsafeTargets(targets);
+ if (unsafeTargets.length > 0 && !allowNonPerfSchema) {
+ throw new Error(
+ `Refusing to truncate non-perf schemas: ${unsafeTargets
+ .map((target) => `${target.schemaName}.${target.tableName}`)
+ .join(', ')}`,
+ );
+ }
+
+ const startedAt = new Date().toISOString();
+ const truncateFailures = [];
+ const executed = [];
+ const pool = new Pool(pgConfig);
+
+ try {
+ for (const target of targets) {
+ const qualified = `${quoteIdent(target.schemaName)}.${quoteIdent(target.tableName)}`;
+ const sql = `truncate table ${qualified};`;
+
+ if (dryRun) {
+ executed.push({ ...target, sql, dryRun: true });
+ continue;
+ }
+
+ try {
+ await pool.query(sql);
+ executed.push({ ...target, sql, dryRun: false });
+ } catch (error) {
+ truncateFailures.push({
+ ...target,
+ sql,
+ phase: 'truncate',
+ error: error instanceof Error ? error.message : String(error),
+ });
+ }
+ }
+ } finally {
+ await pool.end();
+ }
+
+ const accessTargets = dryRun
+ ? targets
+ : executed.map((entry) => ({
+ schemaName: entry.schemaName,
+ tableName: entry.tableName,
+ databaseId: entry.databaseId ?? null,
+ profileKey: entry.profileKey ?? null,
+ }));
+ const accessResult = ensurePublicTestAccess
+ ? await ensurePublicAccessForTargets({
+ targets: accessTargets,
+ pgConfig,
+ dryRun,
+ publicRole,
+ publicReadRole,
+ })
+ : { prepared: [], failures: [] };
+ const accessPrepared = accessResult.prepared;
+ const accessFailures = accessResult.failures;
+
+ const failures = [...truncateFailures, ...accessFailures];
+
+ const report = {
+ createdAt: new Date().toISOString(),
+ startedAt,
+ endedAt: new Date().toISOString(),
+ runDir,
+ profilesPath,
+ pg: {
+ host: pgConfig.host,
+ port: pgConfig.port,
+ database: pgConfig.database,
+ user: pgConfig.user,
+ },
+ options: {
+ dryRun,
+ allowNonPerfSchema,
+ ensurePublicTestAccess,
+ publicRole,
+ publicReadRole: publicReadRole || null,
+ tag: tag || null,
+ },
+ totals: {
+ profileCount: profiles.length,
+ targetCount: targets.length,
+ truncatedCount: executed.length,
+ accessPreparedCount: accessPrepared.length,
+ failureCount: failures.length,
+ },
+ targets,
+ executed,
+ accessPrepared,
+ truncateFailures,
+ accessFailures,
+ failures,
+ };
+
+ await writeJson(reportPath, report);
+
+ console.log(
+ JSON.stringify(
+ {
+ reportPath,
+ targetCount: targets.length,
+ truncatedCount: executed.length,
+ failureCount: failures.length,
+ },
+ null,
+ 2,
+ ),
+ );
+
+ if (failures.length > 0) {
+ process.exitCode = 1;
+ }
+};
+
+main().catch((error) => {
+ console.error(error instanceof Error ? error.stack : String(error));
+ process.exit(1);
+});
diff --git a/graphql/server/perf/run-comparison.sh b/graphql/server/perf/run-comparison.sh
new file mode 100755
index 000000000..35cd8bd5f
--- /dev/null
+++ b/graphql/server/perf/run-comparison.sh
@@ -0,0 +1,245 @@
+#!/usr/bin/env bash
+# run-comparison.sh — Old vs New multi-tenancy comparison using the perf framework
+#
+# Usage:
+# bash graphql/server/perf/run-comparison.sh [--k 20] [--duration 300] [--workers 8]
+#
+# This script runs the full e2e comparison:
+# 1. Starts server in OLD mode (dedicated instances) with enlarged GRAPHILE_CACHE_MAX
+# 2. Runs phase2 load test
+# 3. Stops server
+# 4. Starts server in NEW mode (multi-tenancy cache)
+# 5. Runs phase2 load test
+# 6. Compares results
+#
+# IMPORTANT: For the old approach, GRAPHILE_CACHE_MAX is enlarged to prevent
+# cache eviction churn that would artificially penalize the dedicated-instance mode.
+
+set -euo pipefail
+
+SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
+SERVER_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
+REPO_ROOT="$(cd "$SERVER_DIR/../.." && pwd)"
+
+# Defaults
+K="${K:-20}"
+DURATION="${DURATION:-300}"
+WORKERS="${WORKERS:-8}"
+IDLE_SECONDS="${IDLE_SECONDS:-30}"
+SERVER_PORT="${SERVER_PORT:-3000}"
+BASE_URL="http://localhost:${SERVER_PORT}"
+RUN_DIR="${RUN_DIR:-/tmp/constructive-perf/comparison-$(date +%Y%m%dT%H%M%S)}"
+
+# Parse CLI args
+while [[ $# -gt 0 ]]; do
+ case "$1" in
+ --k) K="$2"; shift 2 ;;
+ --duration) DURATION="$2"; shift 2 ;;
+ --workers) WORKERS="$2"; shift 2 ;;
+ --idle) IDLE_SECONDS="$2"; shift 2 ;;
+ --port) SERVER_PORT="$2"; BASE_URL="http://localhost:${SERVER_PORT}"; shift 2 ;;
+ --run-dir) RUN_DIR="$2"; shift 2 ;;
+ *) echo "Unknown arg: $1"; exit 1 ;;
+ esac
+done
+
+# Enlarge GRAPHILE_CACHE_MAX for old approach to prevent unfair eviction churn.
+# With k=20 tenants × 3 endpoints, the old cache needs at least 60 slots.
+# We use 2x headroom: max(100, k*6).
+OLD_CACHE_MAX=$(( K * 6 ))
+if [ "$OLD_CACHE_MAX" -lt 100 ]; then
+ OLD_CACHE_MAX=100
+fi
+
+# Common env
+export PGHOST="${PGHOST:-localhost}"
+export PGPORT="${PGPORT:-5432}"
+export PGUSER="${PGUSER:-postgres}"
+export PGPASSWORD="${PGPASSWORD:-password}"
+export PGDATABASE="${PGDATABASE:-postgres}"
+export NODE_ENV=development
+export GRAPHILE_ENV=development
+export GRAPHQL_OBSERVABILITY_ENABLED=true
+export API_IS_PUBLIC=false
+
+echo "=============================================================="
+echo "E2E Multi-Tenancy Comparison (Perf Framework)"
+echo " K=$K tenants, Duration=${DURATION}s, Workers=$WORKERS"
+echo " Old approach GRAPHILE_CACHE_MAX=$OLD_CACHE_MAX"
+echo " Run dir: $RUN_DIR"
+echo "=============================================================="
+
+mkdir -p "$RUN_DIR"
+
+kill_server() {
+ fuser -k ${SERVER_PORT}/tcp 2>/dev/null || true
+ sleep 2
+}
+
+wait_for_server() {
+ local max_wait=90
+ local waited=0
+ echo -n " Waiting for server on port $SERVER_PORT..."
+ while ! curl -sf "${BASE_URL}/debug/memory" >/dev/null 2>&1; do
+ sleep 1
+ waited=$((waited + 1))
+ if [ $waited -ge $max_wait ]; then
+ echo " TIMEOUT after ${max_wait}s"
+ return 1
+ fi
+ echo -n "."
+ done
+ echo " ready (${waited}s)"
+}
+
+start_server() {
+ local mode="$1"
+ echo ""
+ echo "--------------------------------------------------------------"
+ echo "Starting server in ${mode} mode..."
+ echo "--------------------------------------------------------------"
+
+ kill_server
+
+ if [ "$mode" = "new" ]; then
+ export USE_MULTI_TENANCY_CACHE=true
+ unset GRAPHILE_CACHE_MAX 2>/dev/null || true
+ echo " USE_MULTI_TENANCY_CACHE=true (shared templates)"
+ else
+ unset USE_MULTI_TENANCY_CACHE 2>/dev/null || true
+ export GRAPHILE_CACHE_MAX="$OLD_CACHE_MAX"
+ echo " GRAPHILE_CACHE_MAX=$OLD_CACHE_MAX (enlarged for fair comparison)"
+ fi
+
+ cd "$SERVER_DIR"
+ npx ts-node src/run.ts > "$RUN_DIR/server-${mode}.log" 2>&1 &
+ SERVER_PID=$!
+ echo " Server PID: $SERVER_PID"
+
+ wait_for_server
+}
+
+run_e2e_benchmark() {
+ local mode="$1"
+ local tier="e2e-${mode}-k${K}"
+
+ echo ""
+ echo "=============================================================="
+ echo "Running ${mode^^} mode benchmark (k=$K, ${DURATION}s, ${WORKERS} workers)"
+ echo "=============================================================="
+
+ cd "$SERVER_DIR"
+
+ # Use the e2e-benchmark.ts from perf/ directory
+ MODE="$mode" K="$K" DURATION="$DURATION" WORKERS="$WORKERS" \
+ SERVER_PORT="$SERVER_PORT" \
+ npx ts-node perf/e2e-benchmark.ts 2>&1 | tee "$RUN_DIR/benchmark-${mode}-output.txt"
+
+ echo " ${mode^^} mode complete."
+}
+
+# Capture server memory snapshot
+capture_memory() {
+ local label="$1"
+ local outfile="$RUN_DIR/memory-${label}.json"
+ curl -sf "${BASE_URL}/debug/memory" > "$outfile" 2>/dev/null || echo '{"error":"failed"}' > "$outfile"
+ echo " Memory snapshot: $outfile"
+}
+
+compare_results() {
+ echo ""
+ echo "=============================================================="
+ echo "COMPARISON: OLD (Dedicated) vs NEW (Multi-tenancy Cache)"
+ echo "=============================================================="
+
+ local old_file="/tmp/e2e-benchmark-old-k${K}.json"
+ local new_file="/tmp/e2e-benchmark-new-k${K}.json"
+
+ if [ ! -f "$old_file" ] || [ ! -f "$new_file" ]; then
+ echo " ERROR: Missing result files"
+ echo " Expected: $old_file and $new_file"
+ return 1
+ fi
+
+ # Copy results to run dir
+ cp "$old_file" "$RUN_DIR/" 2>/dev/null || true
+ cp "$new_file" "$RUN_DIR/" 2>/dev/null || true
+
+ python3 << 'PYEOF'
+import json, sys, os
+
+k = int(os.environ.get('K', '20'))
+
+with open(f"/tmp/e2e-benchmark-old-k{k}.json") as f:
+ old = json.load(f)
+with open(f"/tmp/e2e-benchmark-new-k{k}.json") as f:
+ new = json.load(f)
+
+def fmt(v, unit=""):
+ if isinstance(v, float):
+ return f"{v:.2f}{unit}"
+ return f"{v:,}{unit}"
+
+def delta(o, n, unit="", lower_better=True):
+ if o == 0:
+ return "N/A"
+ diff = n - o
+ pct = (diff / o) * 100
+ return f"{diff:+.1f}{unit} ({pct:+.1f}%)"
+
+print()
+print(f"{'Metric':<25} {'Dedicated (Old)':<20} {'Multi-tenant (New)':<20} {'Delta':<30}")
+print("-" * 95)
+print(f"{'Tenants (k)':<25} {fmt(old['k']):<20} {fmt(new['k']):<20}")
+print(f"{'Duration':<25} {fmt(old['durationSec'], 's'):<20} {fmt(new['durationSec'], 's'):<20}")
+print(f"{'Workers':<25} {fmt(old['workers']):<20} {fmt(new['workers']):<20}")
+print(f"{'Total Queries':<25} {fmt(old['totalQueries']):<20} {fmt(new['totalQueries']):<20} {delta(old['totalQueries'], new['totalQueries'], '', False)}")
+print(f"{'Errors':<25} {fmt(old['errors']):<20} {fmt(new['errors']):<20}")
+print(f"{'QPS':<25} {fmt(old['qps']):<20} {fmt(new['qps']):<20} {delta(old['qps'], new['qps'], '', False)}")
+print(f"{'p50 Latency':<25} {fmt(old['p50'], 'ms'):<20} {fmt(new['p50'], 'ms'):<20} {delta(old['p50'], new['p50'], 'ms', True)}")
+print(f"{'p95 Latency':<25} {fmt(old['p95'], 'ms'):<20} {fmt(new['p95'], 'ms'):<20} {delta(old['p95'], new['p95'], 'ms', True)}")
+print(f"{'p99 Latency':<25} {fmt(old['p99'], 'ms'):<20} {fmt(new['p99'], 'ms'):<20} {delta(old['p99'], new['p99'], 'ms', True)}")
+print(f"{'Heap Before':<25} {fmt(old['heapBefore'], ' MB'):<20} {fmt(new['heapBefore'], ' MB'):<20}")
+print(f"{'Heap After':<25} {fmt(old['heapAfter'], ' MB'):<20} {fmt(new['heapAfter'], ' MB'):<20}")
+print(f"{'Heap Delta':<25} {fmt(old['heapDelta'], ' MB'):<20} {fmt(new['heapDelta'], ' MB'):<20} {delta(old['heapDelta'], new['heapDelta'], ' MB', True)}")
+print()
+
+old_cold = old.get('coldStartMs', [])
+new_cold = new.get('coldStartMs', [])
+if old_cold and new_cold:
+ print(f"{'Cold Start (1st)':<25} {fmt(old_cold[0], 'ms'):<20} {fmt(new_cold[0], 'ms'):<20}")
+ print(f"{'Cold Start (last)':<25} {fmt(old_cold[-1], 'ms'):<20} {fmt(new_cold[-1], 'ms'):<20}")
+ if len(new_cold) > 1:
+ new_avg2 = sum(new_cold[1:]) / len(new_cold[1:])
+ old_avg2 = sum(old_cold[1:]) / len(old_cold[1:])
+ print(f"{'Cold Start (2nd+ avg)':<25} {fmt(old_avg2, 'ms'):<20} {fmt(new_avg2, 'ms'):<20} {delta(old_avg2, new_avg2, 'ms', True)}")
+
+print()
+print("-" * 95)
+PYEOF
+}
+
+# ─── Main Flow ───────────────────────────────────────────────────────────────
+
+# Phase A: OLD mode (dedicated PostGraphile instances with enlarged cache)
+start_server "old"
+capture_memory "old-before"
+run_e2e_benchmark "old"
+capture_memory "old-after"
+kill_server
+
+# Phase B: NEW mode (multi-tenancy cache with shared templates)
+start_server "new"
+capture_memory "new-before"
+run_e2e_benchmark "new"
+capture_memory "new-after"
+kill_server
+
+# Phase C: Compare
+compare_results
+
+echo ""
+echo "Comparison complete. Results in: $RUN_DIR"
+echo " Server logs: $RUN_DIR/server-{old,new}.log"
+echo " Memory snapshots: $RUN_DIR/memory-*.json"
+echo " Benchmark output: $RUN_DIR/benchmark-*-output.txt"
diff --git a/graphql/server/perf/run-e2e-benchmark.sh b/graphql/server/perf/run-e2e-benchmark.sh
new file mode 100755
index 000000000..722430b7d
--- /dev/null
+++ b/graphql/server/perf/run-e2e-benchmark.sh
@@ -0,0 +1,111 @@
+#!/usr/bin/env bash
+# run-e2e-benchmark.sh — Run a single-mode e2e benchmark
+#
+# Usage:
+# bash graphql/server/perf/run-e2e-benchmark.sh [--mode new] [--k 30] [--duration 300] [--workers 8]
+#
+# For comparison (old vs new), use run-comparison.sh instead.
+
+set -euo pipefail
+
+SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
+SERVER_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
+
+# Defaults
+MODE="${MODE:-new}"
+K="${K:-30}"
+DURATION="${DURATION:-300}"
+WORKERS="${WORKERS:-8}"
+SERVER_PORT="${SERVER_PORT:-3000}"
+BASE_URL="http://localhost:${SERVER_PORT}"
+
+# Parse CLI args
+while [[ $# -gt 0 ]]; do
+ case "$1" in
+ --mode) MODE="$2"; shift 2 ;;
+ --k) K="$2"; shift 2 ;;
+ --duration) DURATION="$2"; shift 2 ;;
+ --workers) WORKERS="$2"; shift 2 ;;
+ --port) SERVER_PORT="$2"; BASE_URL="http://localhost:${SERVER_PORT}"; shift 2 ;;
+ *) echo "Unknown arg: $1"; exit 1 ;;
+ esac
+done
+
+# Common env
+export PGHOST="${PGHOST:-localhost}"
+export PGPORT="${PGPORT:-5432}"
+export PGUSER="${PGUSER:-postgres}"
+export PGPASSWORD="${PGPASSWORD:-password}"
+export PGDATABASE="${PGDATABASE:-postgres}"
+export NODE_ENV=development
+export GRAPHILE_ENV=development
+export GRAPHQL_OBSERVABILITY_ENABLED=true
+export API_IS_PUBLIC=false
+
+echo "=============================================================="
+echo "E2E Multi-Tenancy Benchmark (Single Mode)"
+echo " Mode=$MODE, K=$K tenants, Duration=${DURATION}s, Workers=$WORKERS"
+echo "=============================================================="
+
+kill_server() {
+ fuser -k ${SERVER_PORT}/tcp 2>/dev/null || true
+ sleep 2
+}
+
+wait_for_server() {
+ local max_wait=120
+ local waited=0
+ echo -n " Waiting for server on port $SERVER_PORT..."
+ while ! curl -sf "${BASE_URL}/debug/memory" >/dev/null 2>&1; do
+ sleep 1
+ waited=$((waited + 1))
+ if [ $waited -ge $max_wait ]; then
+ echo " TIMEOUT after ${max_wait}s"
+ return 1
+ fi
+ echo -n "."
+ done
+ echo " ready (${waited}s)"
+}
+
+kill_server
+
+if [ "$MODE" = "new" ]; then
+ export USE_MULTI_TENANCY_CACHE=true
+ unset GRAPHILE_CACHE_MAX 2>/dev/null || true
+ echo " USE_MULTI_TENANCY_CACHE=true (shared templates)"
+else
+ unset USE_MULTI_TENANCY_CACHE 2>/dev/null || true
+ OLD_CACHE_MAX=$(( K * 6 ))
+ if [ "$OLD_CACHE_MAX" -lt 100 ]; then
+ OLD_CACHE_MAX=100
+ fi
+ export GRAPHILE_CACHE_MAX="$OLD_CACHE_MAX"
+ echo " GRAPHILE_CACHE_MAX=$OLD_CACHE_MAX (enlarged for fair comparison)"
+fi
+
+cd "$SERVER_DIR"
+npx ts-node src/run.ts > /tmp/server-${MODE}.log 2>&1 &
+SERVER_PID=$!
+echo " Server PID: $SERVER_PID"
+
+wait_for_server
+
+echo ""
+echo "=============================================================="
+echo "Running ${MODE^^} mode benchmark (k=$K, ${DURATION}s, ${WORKERS} workers)"
+echo "=============================================================="
+
+MODE="$MODE" K="$K" DURATION="$DURATION" WORKERS="$WORKERS" \
+ SERVER_PORT="$SERVER_PORT" \
+ npx ts-node perf/e2e-benchmark.ts
+
+echo ""
+echo "Benchmark complete."
+
+# Capture final memory
+curl -sf "${BASE_URL}/debug/memory" > /tmp/memory-${MODE}-final.json 2>/dev/null || true
+
+kill_server
+
+echo "Server stopped. Results in perf/results/ and /tmp/"
diff --git a/graphql/server/perf/run-k-sweep.mjs b/graphql/server/perf/run-k-sweep.mjs
new file mode 100644
index 000000000..1fa054b70
--- /dev/null
+++ b/graphql/server/perf/run-k-sweep.mjs
@@ -0,0 +1,713 @@
+#!/usr/bin/env node
+
+import fs from 'node:fs';
+import fsp from 'node:fs/promises';
+import path from 'node:path';
+import { spawn, execFile } from 'node:child_process';
+import { fileURLToPath } from 'node:url';
+
+import {
+ DEFAULT_BASE_URL,
+ DEFAULT_TMP_ROOT,
+ ensureRunDirs,
+ getArgValue,
+ hasFlag,
+ makeRunId,
+ postJson,
+ writeJson,
+} from './common.mjs';
+
+const args = process.argv.slice(2);
+
+const runId = getArgValue(args, '--run-id', makeRunId('graphile-cache-k-sweep'));
+const runDir = path.resolve(getArgValue(args, '--run-dir', path.join(DEFAULT_TMP_ROOT, runId)));
+const baseUrl = getArgValue(args, '--base-url', DEFAULT_BASE_URL);
+const profilesPath = path.resolve(
+ getArgValue(args, '--profiles', path.join(runDir, 'data', 'business-op-profiles.json')),
+);
+
+const workers = Number.parseInt(getArgValue(args, '--workers', '16'), 10);
+const durationSeconds = Number.parseInt(getArgValue(args, '--duration-seconds', '600'), 10);
+const idleSeconds = Number.parseInt(getArgValue(args, '--idle-seconds', '120'), 10);
+const minTenantCount = Number.parseInt(getArgValue(args, '--min-tenant-count', '10'), 10);
+const churnRatio = getArgValue(args, '--churn-ratio', '0.4');
+const churnWarmSeconds = getArgValue(args, '--churn-warm-seconds', '120');
+const churnCoolSeconds = getArgValue(args, '--churn-cool-seconds', '240');
+const churnCohorts = getArgValue(args, '--churn-cohorts', '2');
+const kValuesRaw = getArgValue(args, '--k-values', '3,7');
+const continueOnError = hasFlag(args, '--continue-on-error');
+const apiIsPublicRaw = getArgValue(args, '--api-is-public', 'false').trim().toLowerCase();
+const routingMode = getArgValue(
+ args,
+ '--routing-mode',
+ apiIsPublicRaw === 'true' ? 'public' : 'private',
+)
+ .trim()
+ .toLowerCase();
+const tierMode = getArgValue(
+ args,
+ '--tier-mode',
+ routingMode === 'public' ? 'active-tenants' : 'keyspace',
+)
+ .trim()
+ .toLowerCase();
+const keyspaceMode = getArgValue(
+ args,
+ '--keyspace-mode',
+ tierMode === 'keyspace' ? 'auto' : 'none',
+)
+ .trim()
+ .toLowerCase();
+const publicRole = getArgValue(args, '--public-role', 'authenticated').trim();
+const publicReadRole = getArgValue(args, '--public-read-role', 'anonymous').trim();
+const ensurePublicTestAccess = hasFlag(args, '--ensure-public-test-access') || apiIsPublicRaw === 'true';
+
+const servicePort = Number.parseInt(getArgValue(args, '--service-port', '3000'), 10);
+const serviceOrigin = getArgValue(args, '--service-origin', '*');
+const serviceReadyTimeoutMs = Number.parseInt(getArgValue(args, '--service-ready-timeout-ms', '45000'), 10);
+const routeProbeTimeoutMs = Number.parseInt(getArgValue(args, '--route-probe-timeout-ms', '15000'), 10);
+const samplerMemoryIntervalMs = getArgValue(args, '--sampler-memory-interval-ms', '10000');
+const samplerDbIntervalMs = getArgValue(args, '--sampler-db-interval-ms', '30000');
+const graphileCacheMaxRaw = getArgValue(args, '--graphile-cache-max', process.env.GRAPHILE_CACHE_MAX || '').trim();
+const graphileSchemaWaitTimeMsRaw = getArgValue(
+ args,
+ '--graphile-schema-wait-time-ms',
+ process.env.GRAPHILE_SCHEMA_WAIT_TIME_MS || '',
+).trim();
+const prewarmDisabled = hasFlag(args, '--disable-prewarm');
+const prewarmSampleSize = Number.parseInt(getArgValue(args, '--prewarm-sample-size', '0'), 10);
+const prewarmConcurrency = Number.parseInt(getArgValue(args, '--prewarm-concurrency', '6'), 10);
+const prewarmTimeoutMs = Number.parseInt(getArgValue(args, '--prewarm-timeout-ms', '30000'), 10);
+const prewarmMaxFailures = Number.parseInt(getArgValue(args, '--prewarm-max-failures', '0'), 10);
+const maxOldSpaceSizeMb = Math.max(
+ 1024,
+ Number.parseInt(getArgValue(args, '--max-old-space-size-mb', '15360'), 10) || 15360,
+);
+const nodeOptionsRaw = getArgValue(
+ args,
+ '--node-options',
+ process.env.NODE_OPTIONS || '--heapsnapshot-signal=SIGUSR2 --expose-gc',
+);
+
+const ensureMaxOldSpaceSize = (options, sizeMb) => {
+ const text = String(options || '').trim();
+ const hasMaxOldSpace = /--max-old-space-size(?:=|\s+)/.test(text);
+ if (hasMaxOldSpace) {
+ return text;
+ }
+ return `--max-old-space-size=${sizeMb}${text.length > 0 ? ` ${text}` : ''}`;
+};
+
+const nodeOptions = ensureMaxOldSpaceSize(nodeOptionsRaw, maxOldSpaceSizeMb);
+const graphileCacheMax =
+ graphileCacheMaxRaw.length > 0 ? Number.parseInt(graphileCacheMaxRaw, 10) : null;
+const graphileSchemaWaitTimeMs =
+ graphileSchemaWaitTimeMsRaw.length > 0 ? Number.parseInt(graphileSchemaWaitTimeMsRaw, 10) : null;
+
+if (apiIsPublicRaw !== 'true' && apiIsPublicRaw !== 'false') {
+ throw new Error(`Invalid --api-is-public=${apiIsPublicRaw}; expected true|false`);
+}
+const apiIsPublic = apiIsPublicRaw === 'true';
+
+const VALID_ROUTING_MODES = new Set(['private', 'public']);
+if (!VALID_ROUTING_MODES.has(routingMode)) {
+ throw new Error(`Invalid --routing-mode=${routingMode}; expected private|public`);
+}
+if ((apiIsPublic && routingMode !== 'public') || (!apiIsPublic && routingMode !== 'private')) {
+ throw new Error(
+ `Inconsistent mode: --api-is-public=${apiIsPublicRaw} requires --routing-mode=${apiIsPublic ? 'public' : 'private'}`,
+ );
+}
+
+const VALID_TIER_MODES = new Set(['keyspace', 'active-tenants']);
+if (!VALID_TIER_MODES.has(tierMode)) {
+ throw new Error(`Invalid --tier-mode=${tierMode}; expected keyspace|active-tenants`);
+}
+if (routingMode === 'public' && tierMode === 'keyspace') {
+ throw new Error('Public routing does not support keyspace tier mode; use --tier-mode active-tenants');
+}
+
+const VALID_KEYSPACE_MODES = new Set(['auto', 'schemata', 'none']);
+if (!VALID_KEYSPACE_MODES.has(keyspaceMode)) {
+ throw new Error(`Invalid --keyspace-mode=${keyspaceMode}; expected auto|schemata|none`);
+}
+if (ensurePublicTestAccess && publicRole.length === 0) {
+ throw new Error('--public-role cannot be empty when --ensure-public-test-access is enabled');
+}
+if (graphileCacheMaxRaw.length > 0 && (!Number.isFinite(graphileCacheMax) || graphileCacheMax <= 0)) {
+ throw new Error(`Invalid --graphile-cache-max=${graphileCacheMaxRaw}; expected positive integer`);
+}
+if (
+ graphileSchemaWaitTimeMsRaw.length > 0 &&
+ (!Number.isFinite(graphileSchemaWaitTimeMs) || graphileSchemaWaitTimeMs <= 0)
+) {
+ throw new Error(
+ `Invalid --graphile-schema-wait-time-ms=${graphileSchemaWaitTimeMsRaw}; expected positive integer`,
+ );
+}
+if (!Number.isFinite(prewarmSampleSize) || prewarmSampleSize < 0) {
+ throw new Error(`Invalid --prewarm-sample-size=${prewarmSampleSize}; expected non-negative integer`);
+}
+if (!Number.isFinite(prewarmConcurrency) || prewarmConcurrency <= 0) {
+ throw new Error(`Invalid --prewarm-concurrency=${prewarmConcurrency}; expected positive integer`);
+}
+if (!Number.isFinite(prewarmTimeoutMs) || prewarmTimeoutMs <= 0) {
+ throw new Error(`Invalid --prewarm-timeout-ms=${prewarmTimeoutMs}; expected positive integer`);
+}
+if (!Number.isFinite(prewarmMaxFailures) || prewarmMaxFailures < 0) {
+ throw new Error(`Invalid --prewarm-max-failures=${prewarmMaxFailures}; expected non-negative integer`);
+}
+
+const pgConfig = {
+ host: getArgValue(args, '--pg-host', process.env.PGHOST || 'localhost'),
+ port: getArgValue(args, '--pg-port', process.env.PGPORT || '5432'),
+ database: getArgValue(args, '--pg-database', process.env.PGDATABASE || 'constructive'),
+ user: getArgValue(args, '--pg-user', process.env.PGUSER || 'postgres'),
+ password: getArgValue(args, '--pg-password', process.env.PGPASSWORD || 'password'),
+};
+
+const __filename = fileURLToPath(import.meta.url);
+const perfDir = path.dirname(__filename);
+const serverDir = path.resolve(perfDir, '..'); // graphql/server/
+const repoRoot = path.resolve(serverDir, '..', '..'); // repo root
+const phase2Script = path.join(perfDir, 'phase2-load.mjs');
+const resetScript = path.join(perfDir, 'reset-business-test-data.mjs');
+const serverRunScript = path.join(serverDir, 'src', 'run.ts');
+
+const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
+const ABSOLUTE_URL_RE = /^https?:\/\//i;
+
+const parseKValues = (raw) => {
+ const values = String(raw)
+ .split(',')
+ .map((part) => Number.parseInt(part.trim(), 10))
+ .filter((value) => Number.isFinite(value) && value > 0);
+
+ if (values.length === 0) {
+ throw new Error(`No valid k values from --k-values=${raw}`);
+ }
+
+ return [...new Set(values)];
+};
+
+const readJson = async (filePath) => {
+ const raw = await fsp.readFile(filePath, 'utf8');
+ return JSON.parse(raw);
+};
+
+const extractProfiles = (payload) => {
+ if (Array.isArray(payload)) return payload;
+ if (Array.isArray(payload?.profiles)) return payload.profiles;
+ return [];
+};
+
+const isProcessAlive = (pid) => {
+ try {
+ process.kill(pid, 0);
+ return true;
+ } catch {
+ return false;
+ }
+};
+
+const getListeningPids = async (port) => {
+ return await new Promise((resolve) => {
+ execFile('lsof', ['-tiTCP:' + String(port), '-sTCP:LISTEN'], (error, stdout) => {
+ if (error) {
+ resolve([]);
+ return;
+ }
+
+ const pids = String(stdout)
+ .split('\n')
+ .map((line) => Number.parseInt(line.trim(), 10))
+ .filter((pid) => Number.isFinite(pid));
+ resolve([...new Set(pids)]);
+ });
+ });
+};
+
+const stopPortListeners = async (port) => {
+ const pids = await getListeningPids(port);
+ if (pids.length === 0) return;
+
+ for (const pid of pids) {
+ try {
+ process.kill(pid, 'SIGTERM');
+ } catch {
+ // ignore stale pid
+ }
+ }
+
+ const deadline = Date.now() + 4000;
+ while (Date.now() < deadline) {
+ const alive = pids.filter((pid) => isProcessAlive(pid));
+ if (alive.length === 0) return;
+ await sleep(200);
+ }
+
+ for (const pid of pids) {
+ if (!isProcessAlive(pid)) continue;
+ try {
+ process.kill(pid, 'SIGKILL');
+ } catch {
+ // ignore stale pid
+ }
+ }
+};
+
+const resolveProfileGraphqlUrl = (profile) => {
+ const profilePathRaw = profile?.graphqlUrl ?? '/graphql';
+ if (ABSOLUTE_URL_RE.test(profilePathRaw)) {
+ return profilePathRaw;
+ }
+
+ const profilePath = profilePathRaw.startsWith('/') ? profilePathRaw : `/${profilePathRaw}`;
+ return new URL(profilePath, baseUrl).toString();
+};
+
+const runNodeScriptWithLog = async ({
+ scriptPath,
+ scriptArgs,
+ cwd,
+ env,
+ logPath,
+ abortOnExitProcess = null,
+ abortProcessLabel = 'watched process',
+}) => {
+ await fsp.mkdir(path.dirname(logPath), { recursive: true });
+ const logStream = fs.createWriteStream(logPath, { flags: 'a' });
+
+ return await new Promise((resolve) => {
+ const child = spawn(process.execPath, [scriptPath, ...scriptArgs], {
+ cwd,
+ env,
+ stdio: ['ignore', 'pipe', 'pipe'],
+ });
+
+ let stdout = '';
+ let stderr = '';
+ let abortedByGuard = null;
+
+ const terminateChild = (reason) => {
+ if (abortedByGuard || child.exitCode !== null || child.killed) {
+ return;
+ }
+
+ abortedByGuard = reason;
+ child.kill('SIGTERM');
+ const timer = setTimeout(() => {
+ if (child.exitCode === null && !child.killed) {
+ child.kill('SIGKILL');
+ }
+ }, 3000);
+ timer.unref?.();
+ };
+
+ let onAbortProcessExit = null;
+ if (abortOnExitProcess) {
+ onAbortProcessExit = (code, signal) => {
+ terminateChild(
+ `${abortProcessLabel} exited (code=${code ?? 'null'}, signal=${signal ?? 'null'})`,
+ );
+ };
+ abortOnExitProcess.once('exit', onAbortProcessExit);
+ }
+
+ child.stdout.on('data', (chunk) => {
+ const text = String(chunk);
+ stdout += text;
+ logStream.write(text);
+ process.stdout.write(text);
+ });
+
+ child.stderr.on('data', (chunk) => {
+ const text = String(chunk);
+ stderr += text;
+ logStream.write(text);
+ process.stderr.write(text);
+ });
+
+ child.on('close', (code) => {
+ if (abortOnExitProcess && onAbortProcessExit) {
+ abortOnExitProcess.off('exit', onAbortProcessExit);
+ }
+ logStream.end();
+ resolve({
+ code: Number.isFinite(code) ? code : -1,
+ stdout,
+ stderr,
+ abortedByGuard,
+ });
+ });
+ });
+};
+
+const waitForServerReady = async ({ url, timeoutMs }) => {
+ const deadline = Date.now() + timeoutMs;
+ let lastError = null;
+
+ while (Date.now() < deadline) {
+ try {
+ const response = await fetch(url, { method: 'GET' });
+ if (response.ok) {
+ return;
+ }
+ lastError = `status ${response.status}`;
+ } catch (error) {
+ lastError = error instanceof Error ? error.message : String(error);
+ }
+
+ await sleep(500);
+ }
+
+ throw new Error(`Server ready check timed out for ${url}; lastError=${lastError ?? 'n/a'}`);
+};
+
+const runRouteProbe = async ({ profile }) => {
+ const result = await postJson({
+ url: resolveProfileGraphqlUrl(profile),
+ headers: profile.headers || {},
+ payload: { query: '{ __typename }' },
+ timeoutMs: routeProbeTimeoutMs,
+ });
+ const hasGraphQLErrors = Array.isArray(result.json?.errors) && result.json.errors.length > 0;
+ const ok = result.ok && !hasGraphQLErrors && result.json?.data?.__typename === 'Query';
+ if (!ok) {
+ const firstError = hasGraphQLErrors ? result.json.errors[0]?.message ?? 'unknown GraphQL error' : null;
+ throw new Error(
+ `Route probe failed status=${result.status} profile=${profile.key ?? 'unknown'} msg=${result.error ?? firstError ?? 'unexpected GraphQL response'}`,
+ );
+ }
+};
+
+const stopServiceChild = async (child) => {
+ if (!child) return;
+ if (child.exitCode !== null || child.killed) return;
+
+ child.kill('SIGINT');
+
+ const closed = await new Promise((resolve) => {
+ const timer = setTimeout(() => resolve(false), 8000);
+ child.once('close', () => {
+ clearTimeout(timer);
+ resolve(true);
+ });
+ });
+
+ if (!closed && child.exitCode === null) {
+ child.kill('SIGKILL');
+ }
+};
+
+const startServiceForK = async ({ k, serviceLogPath, samplerDir, firstProfile }) => {
+ await fsp.mkdir(path.dirname(serviceLogPath), { recursive: true });
+ await fsp.mkdir(samplerDir, { recursive: true });
+ const logStream = fs.createWriteStream(serviceLogPath, { flags: 'a' });
+
+ // Use npx ts-node to start the server (Constructive repo convention)
+ const child = spawn(
+ 'npx',
+ ['ts-node', serverRunScript],
+ {
+ cwd: serverDir,
+ env: {
+ ...process.env,
+ NODE_ENV: 'development',
+ GRAPHILE_ENV: 'development',
+ GRAPHQL_OBSERVABILITY_ENABLED: 'true',
+ GRAPHQL_DEBUG_SAMPLER_ENABLED: 'true',
+ GRAPHQL_DEBUG_SAMPLER_MEMORY_INTERVAL_MS: String(samplerMemoryIntervalMs),
+ GRAPHQL_DEBUG_SAMPLER_DB_INTERVAL_MS: String(samplerDbIntervalMs),
+ GRAPHQL_DEBUG_SAMPLER_DIR: samplerDir,
+ API_IS_PUBLIC: apiIsPublic ? 'true' : 'false',
+ SERVER_PORT: String(servicePort),
+ SERVER_ORIGIN: String(serviceOrigin),
+ PGHOST: String(pgConfig.host),
+ PGPORT: String(pgConfig.port),
+ PGDATABASE: String(pgConfig.database),
+ PGUSER: String(pgConfig.user),
+ PGPASSWORD: String(pgConfig.password),
+ NODE_OPTIONS: String(nodeOptions),
+ ...(graphileCacheMax != null ? { GRAPHILE_CACHE_MAX: String(graphileCacheMax) } : {}),
+ ...(graphileSchemaWaitTimeMs != null
+ ? { GRAPHILE_SCHEMA_WAIT_TIME_MS: String(graphileSchemaWaitTimeMs) }
+ : {}),
+ },
+ stdio: ['ignore', 'pipe', 'pipe'],
+ },
+ );
+
+ child.stdout.on('data', (chunk) => {
+ const text = String(chunk);
+ logStream.write(text);
+ process.stdout.write(text);
+ });
+
+ child.stderr.on('data', (chunk) => {
+ const text = String(chunk);
+ logStream.write(text);
+ process.stderr.write(text);
+ });
+
+ const readyUrl = `${baseUrl}/debug/memory`;
+
+ try {
+ await waitForServerReady({ url: readyUrl, timeoutMs: serviceReadyTimeoutMs });
+ await runRouteProbe({ profile: firstProfile });
+ return { child, logStream };
+ } catch (error) {
+ await stopServiceChild(child);
+ logStream.end();
+ throw new Error(`[k=${k}] failed to start usable service: ${error instanceof Error ? error.message : String(error)}`);
+ }
+};
+
+const main = async () => {
+ const dirs = await ensureRunDirs(runDir);
+ const kValues = parseKValues(kValuesRaw);
+ const profilesPayload = await readJson(profilesPath);
+ const profiles = extractProfiles(profilesPayload);
+ if (profiles.length === 0) {
+ throw new Error(`No profiles found in ${profilesPath}`);
+ }
+
+ const firstProfile = profiles[0];
+ const startedAt = new Date().toISOString();
+ const sweepResults = [];
+ const durationMinutes = Math.max(1, Math.round(durationSeconds / 60));
+ let abortError = null;
+
+ const buildTierLabel = (k) => {
+ if (routingMode === 'private' && tierMode === 'keyspace') {
+ return `business-k${k}-${durationMinutes}m-sweep`;
+ }
+ if (tierMode === 'active-tenants') {
+ return `business-${routingMode}-t${k}-${durationMinutes}m-sweep`;
+ }
+ return `business-${routingMode}-k${k}-${durationMinutes}m-sweep`;
+ };
+
+ for (const k of kValues) {
+ const tier = buildTierLabel(k);
+ const serviceLogPath = path.join(dirs.logsDir, 'service', `service-k${k}.log`);
+ const resetLogPath = path.join(dirs.logsDir, 'k-sweep', `reset-k${k}.log`);
+ const phase2LogPath = path.join(dirs.logsDir, 'k-sweep', `phase2-k${k}.log`);
+ const samplerDir = path.join(dirs.samplerDir, `k${k}`);
+ const phase2ProfileLimit = tierMode === 'active-tenants' ? Math.max(1, k) : 0;
+ const phase2KeyspaceSize = tierMode === 'keyspace' ? Math.max(1, k) : 1;
+ const phase2MinTenantCount = Math.max(
+ 1,
+ tierMode === 'active-tenants' ? Math.min(minTenantCount, phase2ProfileLimit) : minTenantCount,
+ );
+
+ const result = {
+ k,
+ tier,
+ routingMode,
+ tierMode,
+ apiIsPublic,
+ startedAt: new Date().toISOString(),
+ status: 'running',
+ serviceLogPath,
+ resetLogPath,
+ phase2LogPath,
+ samplerDir,
+ loadPath: path.join(dirs.dataDir, `load-${tier}.json`),
+ phase2ProfileLimit,
+ phase2KeyspaceSize,
+ phase2MinTenantCount,
+ error: null,
+ };
+ sweepResults.push(result);
+
+ let service = null;
+ try {
+ await stopPortListeners(servicePort);
+ service = await startServiceForK({ k, serviceLogPath, samplerDir, firstProfile });
+
+ const resetExecution = await runNodeScriptWithLog({
+ scriptPath: resetScript,
+ scriptArgs: [
+ '--run-dir',
+ runDir,
+ '--profiles',
+ profilesPath,
+ '--tag',
+ `k${k}`,
+ ...(ensurePublicTestAccess
+ ? [
+ '--ensure-public-test-access',
+ '--public-role',
+ publicRole,
+ ...(publicReadRole.length > 0 ? ['--public-read-role', publicReadRole] : []),
+ ]
+ : []),
+ ],
+ cwd: serverDir,
+ env: process.env,
+ logPath: resetLogPath,
+ });
+ if (resetExecution.code !== 0) {
+ throw new Error(`[k=${k}] reset script failed with code=${resetExecution.code}`);
+ }
+
+ const phase2Args = [
+ '--run-dir',
+ runDir,
+ '--profiles',
+ profilesPath,
+ '--workers',
+ String(workers),
+ '--duration-seconds',
+ String(durationSeconds),
+ '--idle-seconds',
+ String(idleSeconds),
+ '--min-tenant-count',
+ String(phase2MinTenantCount),
+ '--tier',
+ tier,
+ '--keyspace-mode',
+ keyspaceMode,
+ '--keyspace-size',
+ String(phase2KeyspaceSize),
+ '--churn-ratio',
+ String(churnRatio),
+ '--churn-warm-seconds',
+ String(churnWarmSeconds),
+ '--churn-cool-seconds',
+ String(churnCoolSeconds),
+ '--churn-cohorts',
+ String(churnCohorts),
+ '--prewarm-concurrency',
+ String(prewarmConcurrency),
+ '--prewarm-timeout-ms',
+ String(prewarmTimeoutMs),
+ '--prewarm-max-failures',
+ String(prewarmMaxFailures),
+ ];
+ if (prewarmDisabled) {
+ phase2Args.push('--disable-prewarm');
+ }
+ if (prewarmSampleSize > 0) {
+ phase2Args.push('--prewarm-sample-size', String(prewarmSampleSize));
+ }
+ if (phase2ProfileLimit > 0) {
+ phase2Args.push('--profile-limit', String(phase2ProfileLimit));
+ }
+
+ const phase2Execution = await runNodeScriptWithLog({
+ scriptPath: phase2Script,
+ scriptArgs: phase2Args,
+ cwd: serverDir,
+ env: process.env,
+ logPath: phase2LogPath,
+ abortOnExitProcess: service.child,
+ abortProcessLabel: `service[k=${k}]`,
+ });
+ if (phase2Execution.code !== 0) {
+ const guardHint = phase2Execution.abortedByGuard
+ ? `; aborted=${phase2Execution.abortedByGuard}`
+ : '';
+ throw new Error(`[k=${k}] phase2 failed with code=${phase2Execution.code}${guardHint}`);
+ }
+
+ await fsp.access(result.loadPath);
+ const loadPayload = await readJson(result.loadPath);
+ result.status = 'ok';
+ result.summary = {
+ total: loadPayload?.load?.total ?? 0,
+ failed: loadPayload?.load?.failed ?? 0,
+ requestsPerSecond: loadPayload?.load?.requestsPerSecond ?? 0,
+ p95: loadPayload?.load?.latencyMs?.p95 ?? null,
+ };
+ result.endedAt = new Date().toISOString();
+ } catch (error) {
+ result.status = 'failed';
+ result.error = error instanceof Error ? error.message : String(error);
+ result.endedAt = new Date().toISOString();
+ if (!continueOnError) {
+ abortError = error;
+ }
+ } finally {
+ if (service?.child) {
+ await stopServiceChild(service.child);
+ }
+ if (service?.logStream) {
+ service.logStream.end();
+ }
+ await stopPortListeners(servicePort);
+ }
+
+ if (abortError) {
+ break;
+ }
+ }
+
+ const summary = {
+ createdAt: new Date().toISOString(),
+ startedAt,
+ endedAt: new Date().toISOString(),
+ runDir,
+ profilesPath,
+ baseUrl,
+ options: {
+ apiIsPublic,
+ routingMode,
+ tierMode,
+ keyspaceMode,
+ ensurePublicTestAccess,
+ publicRole: ensurePublicTestAccess ? publicRole : null,
+ publicReadRole: ensurePublicTestAccess ? publicReadRole || null : null,
+ workers,
+ durationSeconds,
+ idleSeconds,
+ minTenantCount,
+ samplerMemoryIntervalMs,
+ samplerDbIntervalMs,
+ graphileCacheMax,
+ graphileSchemaWaitTimeMs,
+ prewarm: {
+ enabled: !prewarmDisabled,
+ sampleSize: prewarmSampleSize,
+ concurrency: prewarmConcurrency,
+ timeoutMs: prewarmTimeoutMs,
+ maxFailures: prewarmMaxFailures,
+ },
+ maxOldSpaceSizeMb,
+ nodeOptions,
+ kValues,
+ continueOnError,
+ },
+ results: sweepResults,
+ };
+
+ const summaryPath = path.join(dirs.reportsDir, 'k-sweep-summary.json');
+ await writeJson(summaryPath, summary);
+
+ console.log(
+ JSON.stringify(
+ {
+ summaryPath,
+ totalRuns: sweepResults.length,
+ failedRuns: sweepResults.filter((row) => row.status !== 'ok').length,
+ },
+ null,
+ 2,
+ ),
+ );
+
+ if (abortError) {
+ throw abortError;
+ }
+};
+
+main().catch(async (error) => {
+ try {
+ await stopPortListeners(servicePort);
+ } catch {
+ // ignore cleanup failure
+ }
+ console.error(error instanceof Error ? error.stack : String(error));
+ process.exit(1);
+});
diff --git a/graphql/server/perf/run-stress-suite.sh b/graphql/server/perf/run-stress-suite.sh
new file mode 100644
index 000000000..22acf020a
--- /dev/null
+++ b/graphql/server/perf/run-stress-suite.sh
@@ -0,0 +1,143 @@
+#!/bin/bash
+# run-stress-suite.sh — Run all 6 stress tests (OLD vs NEW) sequentially
+# Usage: bash perf/run-stress-suite.sh
+#
+# Requires: server NOT running (this script manages server lifecycle)
+# Requires: postgres_perf database with test data
+
+set -euo pipefail
+
+SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
+SERVER_DIR="$(dirname "$SCRIPT_DIR")"
+cd "$SERVER_DIR"
+
+# Common env
+export PGHOST=127.0.0.1 PGPORT=5432 PGUSER=postgres PGPASSWORD=password PGDATABASE=postgres_perf
+export NODE_ENV=development GRAPHILE_ENV=development API_IS_PUBLIC=false GRAPHQL_OBSERVABILITY_ENABLED=true
+export SERVER_PORT=3000
+
+RESULTS_FILE="/tmp/stress-suite-results.jsonl"
+> "$RESULTS_FILE"
+
+kill_server() {
+ fuser -k $SERVER_PORT/tcp 2>/dev/null || true
+ sleep 2
+}
+
+start_server() {
+ local mode="$1"
+ local cache_max="${2:-}"
+ kill_server
+
+ local env_extra=""
+ if [ "$mode" = "new" ]; then
+ env_extra="USE_MULTI_TENANCY_CACHE=true"
+ elif [ -n "$cache_max" ]; then
+ env_extra="GRAPHILE_CACHE_MAX=$cache_max"
+ fi
+
+ echo ">>> Starting server (mode=$mode, extra=$env_extra)..."
+ eval "$env_extra npx ts-node src/run.ts" &
+ SERVER_PID=$!
+
+ # Wait for server to be ready
+ for i in $(seq 1 30); do
+ if curl -sf http://localhost:$SERVER_PORT/debug/memory > /dev/null 2>&1; then
+ echo ">>> Server ready"
+ return 0
+ fi
+ sleep 1
+ done
+ echo ">>> Server failed to start!"
+ return 1
+}
+
+capture_memory() {
+ curl -sf http://localhost:$SERVER_PORT/debug/memory 2>/dev/null || echo '{}'
+}
+
+run_test() {
+ local test_name="$1"
+ local mode="$2"
+ local cache_max="$3"
+ shift 3
+ # remaining args are env vars for the benchmark
+
+ echo ""
+ echo "================================================================"
+ echo " TEST: $test_name — MODE: $mode"
+ echo "================================================================"
+
+ start_server "$mode" "$cache_max"
+
+ echo ">>> Running benchmark: $*"
+ env "$@" MODE=$mode TEST_NAME=$test_name npx ts-node perf/e2e-benchmark.ts || true
+
+ echo ">>> Final memory snapshot:"
+ capture_memory | python3 -c "
+import sys,json
+try:
+ d=json.load(sys.stdin)
+ m=d.get('memory',d)
+ print(f' Heap: {m.get(\"heapUsed\",0)/1024/1024:.1f} MB, RSS: {m.get(\"rss\",0)/1024/1024:.1f} MB')
+ gb=d.get('graphileBuilds',{})
+ gc=d.get('graphileCache',{})
+ print(f' Builds: {gb.get(\"succeeded\",\"?\")}, Cache: {gc.get(\"size\",\"?\")}')
+except: print(' (could not parse memory)')
+"
+
+ kill_server
+}
+
+echo "╔══════════════════════════════════════════════════════════════════╗"
+echo "║ MULTI-TENANCY CACHE STRESS TEST SUITE ║"
+echo "╚══════════════════════════════════════════════════════════════════╝"
+
+# ─── Test 1: High-K scale (K=100, 4 schema variants, 10 workers, 5min) ──────
+run_test "test1-highk" "old" "2000" \
+ MULTI_ENDPOINT=true SCHEMA_VARIANTS=4 K=100 DURATION=300 WORKERS=10
+
+run_test "test1-highk" "new" "" \
+ MULTI_ENDPOINT=true SCHEMA_VARIANTS=4 K=100 DURATION=300 WORKERS=10
+
+# ─── Test 2: High concurrency (K=30, 4 schema variants, 10 workers, 5min) ───
+run_test "test2-highconc" "old" "200" \
+ MULTI_ENDPOINT=true SCHEMA_VARIANTS=4 K=30 DURATION=300 WORKERS=10
+
+run_test "test2-highconc" "new" "" \
+ MULTI_ENDPOINT=true SCHEMA_VARIANTS=4 K=30 DURATION=300 WORKERS=10
+
+# ─── Test 3: Flush under load (K=30, 4 variants, 10 workers, flush/30s) ─────
+run_test "test3-chaos" "old" "200" \
+ MULTI_ENDPOINT=true SCHEMA_VARIANTS=4 K=30 DURATION=300 WORKERS=10 CHAOS_FLUSH=true FLUSH_INTERVAL=30
+
+run_test "test3-chaos" "new" "" \
+ MULTI_ENDPOINT=true SCHEMA_VARIANTS=4 K=30 DURATION=300 WORKERS=10 CHAOS_FLUSH=true FLUSH_INTERVAL=30
+
+# ─── Test 4: Mixed buildKeys max divergence (K=30, 8 variants, 10 workers) ──
+run_test "test4-mixed" "old" "800" \
+ SCHEMA_VARIANTS=8 K=30 DURATION=300 WORKERS=10
+
+run_test "test4-mixed" "new" "" \
+ SCHEMA_VARIANTS=8 K=30 DURATION=300 WORKERS=10
+
+# ─── Test 5: Soak (K=30, 4 variants, 10 workers, 2hr, flush/60s) ────────────
+run_test "test5-soak" "old" "200" \
+ MULTI_ENDPOINT=true SCHEMA_VARIANTS=4 K=30 DURATION=7200 WORKERS=10 CHAOS_FLUSH=true FLUSH_INTERVAL=60
+
+run_test "test5-soak" "new" "" \
+ MULTI_ENDPOINT=true SCHEMA_VARIANTS=4 K=30 DURATION=7200 WORKERS=10 CHAOS_FLUSH=true FLUSH_INTERVAL=60
+
+# ─── Test 6: Startup burst (K=30, 4 variants, 10 workers, concurrent cold) ──
+run_test "test6-burst" "old" "200" \
+ MULTI_ENDPOINT=true SCHEMA_VARIANTS=4 K=30 DURATION=60 WORKERS=10 BURST_START=true
+
+run_test "test6-burst" "new" "" \
+ MULTI_ENDPOINT=true SCHEMA_VARIANTS=4 K=30 DURATION=60 WORKERS=10 BURST_START=true
+
+echo ""
+echo "╔══════════════════════════════════════════════════════════════════╗"
+echo "║ ALL TESTS COMPLETE ║"
+echo "╚══════════════════════════════════════════════════════════════════╝"
+echo ""
+echo "Results in /tmp/e2e-benchmark-*.json"
diff --git a/graphql/server/perf/run-test-spec.mjs b/graphql/server/perf/run-test-spec.mjs
new file mode 100644
index 000000000..af8a49550
--- /dev/null
+++ b/graphql/server/perf/run-test-spec.mjs
@@ -0,0 +1,61 @@
+#!/usr/bin/env node
+
+import path from 'node:path';
+import { spawn } from 'node:child_process';
+
+import {
+ DEFAULT_TMP_ROOT,
+ getArgValue,
+ makeRunId,
+} from './common.mjs';
+
+const args = process.argv.slice(2);
+const phase = getArgValue(args, '--phase', 'all');
+const runId = getArgValue(args, '--run-id', makeRunId());
+const runDir = path.resolve(getArgValue(args, '--run-dir', path.join(DEFAULT_TMP_ROOT, runId)));
+
+const forwardArgs = args.filter((arg, index) => {
+ const blocked = new Set(['--phase', '--run-id', '--run-dir']);
+ if (blocked.has(arg)) return false;
+ const prev = index > 0 ? args[index - 1] : '';
+ if (blocked.has(prev)) return false;
+ return true;
+});
+
+const runNodeScript = (scriptName, extraArgs = []) =>
+ new Promise((resolve, reject) => {
+ const scriptPath = path.resolve(path.dirname(new URL(import.meta.url).pathname), scriptName);
+ const child = spawn(process.execPath, [scriptPath, '--run-dir', runDir, ...extraArgs, ...forwardArgs], {
+ stdio: 'inherit',
+ });
+
+ child.on('close', (code) => {
+ if (code === 0) {
+ resolve();
+ } else {
+ reject(new Error(`${scriptName} failed with exit code ${code}`));
+ }
+ });
+ });
+
+const main = async () => {
+ if (phase === 'phase1') {
+ await runNodeScript('phase1-preflight.mjs');
+ return;
+ }
+ if (phase === 'phase2') {
+ await runNodeScript('phase2-load.mjs');
+ return;
+ }
+ if (phase !== 'all') {
+ throw new Error(`Unknown --phase value: ${phase}`);
+ }
+
+ await runNodeScript('phase1-preflight.mjs');
+ await runNodeScript('phase2-load.mjs');
+};
+
+main().catch((error) => {
+ console.error(error instanceof Error ? error.stack : String(error));
+ process.exit(1);
+});
diff --git a/graphql/server/perf/seed-real-multitenant.mjs b/graphql/server/perf/seed-real-multitenant.mjs
new file mode 100644
index 000000000..2607263c7
--- /dev/null
+++ b/graphql/server/perf/seed-real-multitenant.mjs
@@ -0,0 +1,312 @@
+#!/usr/bin/env node
+
+import path from 'node:path';
+
+import {
+ DEFAULT_BASE_URL,
+ DEFAULT_TMP_ROOT,
+ ensureRunDirs,
+ getArgValue,
+ makeRunId,
+ postJson,
+ writeJson,
+} from './common.mjs';
+
+const args = process.argv.slice(2);
+
+const runId = getArgValue(args, '--run-id', makeRunId());
+const runDir = path.resolve(getArgValue(args, '--run-dir', path.join(DEFAULT_TMP_ROOT, runId)));
+const baseUrl = getArgValue(args, '--base-url', DEFAULT_BASE_URL);
+
+const tenantCount = Number.parseInt(getArgValue(args, '--tenant-count', '10'), 10);
+const userPassword = getArgValue(args, '--user-password', 'Constructive!23456');
+const userPrefix = getArgValue(args, '--user-prefix', `mtlt-${Date.now()}`);
+const orgPrefix = getArgValue(args, '--org-prefix', `mtlt-org-${Date.now()}`);
+
+const routeHost = getArgValue(args, '--route-host', 'localhost');
+const privateApiName = getArgValue(args, '--private-api-name', 'private');
+const privateDatabaseId = getArgValue(args, '--private-database-id', '028752cb-510b-1438-2f39-64534bd1cbd7');
+
+const adminEmail = getArgValue(args, '--admin-email', 'admin@constructive.io');
+const adminPassword = getArgValue(args, '--admin-password', 'admin123!@Constructive');
+
+const routeHeaders = {
+ Host: routeHost,
+ 'X-Api-Name': privateApiName,
+ 'X-Database-Id': privateDatabaseId,
+};
+
+const gql = async ({ query, variables, headers = {} }) => {
+ return await postJson({
+ url: `${baseUrl}/graphql`,
+ headers: {
+ ...routeHeaders,
+ ...headers,
+ },
+ payload: { query, variables },
+ timeoutMs: 20000,
+ });
+};
+
+const signInMutation = `
+mutation SignIn($input: SignInInput!) {
+ signIn(input: $input) {
+ result {
+ id
+ userId
+ accessToken
+ }
+ }
+}
+`;
+
+const signUpMutation = `
+mutation SignUp($input: SignUpInput!) {
+ signUp(input: $input) {
+ result {
+ id
+ userId
+ accessToken
+ }
+ }
+}
+`;
+
+const createUserMutation = `
+mutation CreateUser($input: CreateUserInput!) {
+ createUser(input: $input) {
+ user {
+ id
+ type
+ displayName
+ }
+ }
+}
+`;
+
+const createOrgMembershipMutation = `
+mutation CreateOrgMembership($input: CreateOrgMembershipInput!) {
+ createOrgMembership(input: $input) {
+ orgMembership {
+ id
+ actorId
+ entityId
+ isOwner
+ isAdmin
+ isActive
+ isApproved
+ }
+ }
+}
+`;
+
+const signInAdmin = async () => {
+ const res = await gql({
+ query: signInMutation,
+ variables: {
+ input: {
+ email: adminEmail,
+ password: adminPassword,
+ rememberMe: true,
+ },
+ },
+ });
+
+ const token = res.json?.data?.signIn?.result?.accessToken;
+ const userId = res.json?.data?.signIn?.result?.userId;
+ if (!res.ok || !token || !userId) {
+ throw new Error(
+ `Admin sign-in failed for ${adminEmail}; status=${res.status}; error=${
+ res.error || res.json?.errors?.[0]?.message || 'no token returned'
+ }`,
+ );
+ }
+
+ return { token, userId };
+};
+
+const signUpOrSignInUser = async ({ email, password }) => {
+ const signUpRes = await gql({
+ query: signUpMutation,
+ variables: {
+ input: {
+ email,
+ password,
+ rememberMe: true,
+ },
+ },
+ });
+
+ const signUpResult = signUpRes.json?.data?.signUp?.result;
+ if (signUpRes.ok && signUpResult?.accessToken && signUpResult?.userId) {
+ return {
+ mode: 'signUp',
+ userId: signUpResult.userId,
+ tokenId: signUpResult.id,
+ accessToken: signUpResult.accessToken,
+ };
+ }
+
+ const signInRes = await gql({
+ query: signInMutation,
+ variables: {
+ input: {
+ email,
+ password,
+ rememberMe: true,
+ },
+ },
+ });
+
+ const signInResult = signInRes.json?.data?.signIn?.result;
+ if (signInRes.ok && signInResult?.accessToken && signInResult?.userId) {
+ return {
+ mode: 'signIn',
+ userId: signInResult.userId,
+ tokenId: signInResult.id,
+ accessToken: signInResult.accessToken,
+ };
+ }
+
+ throw new Error(
+ `User auth failed for ${email}; signUpError=${
+ signUpRes.error || signUpRes.json?.errors?.[0]?.message || 'null result'
+ }; signInError=${signInRes.error || signInRes.json?.errors?.[0]?.message || 'null result'}`,
+ );
+};
+
+const createOrg = async ({ adminToken, displayName }) => {
+ const res = await gql({
+ query: createUserMutation,
+ headers: { Authorization: `Bearer ${adminToken}` },
+ variables: {
+ input: {
+ user: {
+ displayName,
+ type: 2,
+ },
+ },
+ },
+ });
+
+ const user = res.json?.data?.createUser?.user;
+ if (!res.ok || !user?.id) {
+ throw new Error(
+ `Create org failed (${displayName}); status=${res.status}; error=${
+ res.error || res.json?.errors?.[0]?.message || 'null result'
+ }`,
+ );
+ }
+
+ return user;
+};
+
+const createMembership = async ({ adminToken, actorId, entityId }) => {
+ const res = await gql({
+ query: createOrgMembershipMutation,
+ headers: { Authorization: `Bearer ${adminToken}` },
+ variables: {
+ input: {
+ orgMembership: {
+ actorId,
+ entityId,
+ isOwner: true,
+ isAdmin: true,
+ isActive: true,
+ isApproved: true,
+ },
+ },
+ },
+ });
+
+ const membership = res.json?.data?.createOrgMembership?.orgMembership;
+ if (!res.ok || !membership?.id) {
+ throw new Error(
+ `Create org membership failed actor=${actorId} entity=${entityId}; status=${res.status}; error=${
+ res.error || res.json?.errors?.[0]?.message || 'null result'
+ }`,
+ );
+ }
+
+ return membership;
+};
+
+const main = async () => {
+ if (!Number.isFinite(tenantCount) || tenantCount < 1) {
+ throw new Error(`Invalid --tenant-count: ${tenantCount}`);
+ }
+
+ const dirs = await ensureRunDirs(runDir);
+ const admin = await signInAdmin();
+
+ const manifest = [];
+ const credentials = [];
+
+ for (let i = 1; i <= tenantCount; i += 1) {
+ const idx = String(i).padStart(2, '0');
+ const orgDisplayName = `${orgPrefix}-${idx}`;
+ const email = `${userPrefix}-${idx}@example.com`;
+
+ const org = await createOrg({ adminToken: admin.token, displayName: orgDisplayName });
+ const user = await signUpOrSignInUser({ email, password: userPassword });
+ const membership = await createMembership({
+ adminToken: admin.token,
+ actorId: user.userId,
+ entityId: org.id,
+ });
+
+ manifest.push({
+ tenantKey: `org:${org.id}`,
+ orgId: org.id,
+ orgDisplayName,
+ userId: user.userId,
+ userEmail: email,
+ userAuthMode: user.mode,
+ membershipId: membership.id,
+ });
+
+ credentials.push({
+ tenantKey: `org:${org.id}`,
+ email,
+ password: userPassword,
+ host: routeHost,
+ apiName: privateApiName,
+ databaseId: privateDatabaseId,
+ });
+ }
+
+ const manifestPath = path.join(dirs.dataDir, 'tenant-manifest.json');
+ const credentialsPath = path.join(dirs.dataDir, 'tenant-credentials.json');
+ const summaryPath = path.join(dirs.reportsDir, 'seed-summary.json');
+
+ await writeJson(manifestPath, manifest);
+ await writeJson(credentialsPath, credentials);
+ await writeJson(summaryPath, {
+ createdAt: new Date().toISOString(),
+ runDir,
+ tenantCount,
+ route: routeHeaders,
+ adminUserId: admin.userId,
+ manifestPath,
+ credentialsPath,
+ });
+
+ console.log(
+ JSON.stringify(
+ {
+ runDir,
+ tenantCount,
+ manifestPath,
+ credentialsPath,
+ summaryPath,
+ },
+ null,
+ 2,
+ ),
+ );
+};
+
+main().catch((error) => {
+ console.error(error instanceof Error ? error.stack : String(error));
+ process.exit(1);
+});
diff --git a/graphql/server/perf/summarize-shapes.mjs b/graphql/server/perf/summarize-shapes.mjs
new file mode 100644
index 000000000..0b521e0ec
--- /dev/null
+++ b/graphql/server/perf/summarize-shapes.mjs
@@ -0,0 +1,222 @@
+#!/usr/bin/env node
+
+/**
+ * summarize-shapes.mjs — Perf-local structural shape diagnostic.
+ *
+ * Reads the business-table-manifest.json produced by phase1-tech-validate-dbpm
+ * and queries information_schema.columns for each tenant's physical schema to
+ * build a **name-stripped structural fingerprint**.
+ *
+ * The fingerprint ignores:
+ * - schema names
+ * - table names
+ * - column names
+ *
+ * It retains:
+ * - per-table column count
+ * - per-column data_type and is_nullable (ordered by ordinal_position)
+ * - number of tables per schema
+ *
+ * Tenants are grouped by fingerprint so that structurally identical schemas
+ * (even with different tenant-specific names) collapse into one group, while
+ * genuinely different shapes (e.g. extra variant tables) form separate groups.
+ *
+ * Usage:
+ * node summarize-shapes.mjs --manifest [pg options]
+ *
+ * Output:
+ * - number of distinct structural groups
+ * - tenant count per group
+ * - column layout summary per group
+ */
+
+import { createHash } from 'node:crypto';
+import { readFileSync } from 'node:fs';
+import { Pool } from 'pg';
+
+import { getArgValue } from './common.mjs';
+
+const args = process.argv.slice(2);
+
+const manifestPath = getArgValue(args, '--manifest', null);
+if (!manifestPath) {
+ console.error('Usage: node summarize-shapes.mjs --manifest ');
+ process.exit(1);
+}
+
+const pgConfig = {
+ host: getArgValue(args, '--pg-host', process.env.PGHOST || 'localhost'),
+ port: Number.parseInt(getArgValue(args, '--pg-port', process.env.PGPORT || '5432'), 10),
+ database: getArgValue(args, '--pg-database', process.env.PGDATABASE || 'constructive'),
+ user: getArgValue(args, '--pg-user', process.env.PGUSER || 'postgres'),
+ password: getArgValue(args, '--pg-password', process.env.PGPASSWORD || 'password'),
+};
+
+// ---------------------------------------------------------------------------
+// Structural fingerprinting
+// ---------------------------------------------------------------------------
+
+/**
+ * Build a name-stripped structural signature for one table.
+ *
+ * Returns an array of [data_type, is_nullable] tuples ordered by
+ * ordinal_position. The table name and column names are NOT included.
+ */
+const buildTableSignature = (columns) =>
+ columns
+ .sort((a, b) => a.ordinal_position - b.ordinal_position)
+ .map((c) => `${c.data_type}:${c.is_nullable}`);
+
+/**
+ * Build a name-stripped structural fingerprint for an entire schema.
+ *
+ * 1. Group columns by table
+ * 2. Build per-table signature (column types + nullability, ordered)
+ * 3. Sort tables by their signature (lexicographic on the stringified tuple list)
+ * 4. Hash the sorted result → structural fingerprint
+ *
+ * Two schemas with identical column layouts but different table/column names
+ * will produce the same fingerprint.
+ */
+const buildSchemaFingerprint = (rows) => {
+ // Group by table_name
+ const tables = new Map();
+ for (const row of rows) {
+ if (!tables.has(row.table_name)) {
+ tables.set(row.table_name, []);
+ }
+ tables.get(row.table_name).push(row);
+ }
+
+ // Build per-table signatures and sort tables by signature
+ const tableSignatures = [];
+ for (const [, columns] of tables) {
+ tableSignatures.push(buildTableSignature(columns));
+ }
+
+ // Sort tables by their stringified signature so table order is deterministic
+ tableSignatures.sort((a, b) => {
+ const sa = JSON.stringify(a);
+ const sb = JSON.stringify(b);
+ return sa < sb ? -1 : sa > sb ? 1 : 0;
+ });
+
+ const canonical = JSON.stringify(tableSignatures);
+ const fingerprint = createHash('sha256').update(canonical).digest('hex').slice(0, 16);
+
+ return {
+ fingerprint,
+ tableCount: tableSignatures.length,
+ tableSummaries: tableSignatures.map((sig) => ({
+ columnCount: sig.length,
+ columns: sig,
+ })),
+ };
+};
+
+// ---------------------------------------------------------------------------
+// Main
+// ---------------------------------------------------------------------------
+
+const main = async () => {
+ const manifest = JSON.parse(readFileSync(manifestPath, 'utf-8'));
+ if (!Array.isArray(manifest) || manifest.length === 0) {
+ console.error('Manifest is empty or not an array');
+ process.exit(1);
+ }
+
+ const pool = new Pool(pgConfig);
+
+ try {
+ /** @type {Map} */
+ const groups = new Map();
+
+ for (const entry of manifest) {
+ const schema = entry.physicalSchema;
+ if (!schema) {
+ console.warn(`Skipping tenant ${entry.tenantKey}: no physicalSchema`);
+ continue;
+ }
+
+ const result = await pool.query(
+ `
+ SELECT table_name, column_name, data_type, is_nullable, ordinal_position
+ FROM information_schema.columns
+ WHERE table_schema = $1
+ ORDER BY table_name, ordinal_position
+ `,
+ [schema],
+ );
+
+ if (result.rows.length === 0) {
+ console.warn(`Skipping tenant ${entry.tenantKey}: no columns found in schema ${schema}`);
+ continue;
+ }
+
+ const { fingerprint, tableCount, tableSummaries } = buildSchemaFingerprint(result.rows);
+
+ if (!groups.has(fingerprint)) {
+ groups.set(fingerprint, {
+ tenants: [],
+ tableCount,
+ tableSummaries,
+ });
+ }
+ groups.get(fingerprint).tenants.push(entry.tenantKey);
+ }
+
+ // ---------------------------------------------------------------------------
+ // Output
+ // ---------------------------------------------------------------------------
+
+ console.log('\n=== Structural Shape Summary ===\n');
+ console.log(`Total tenants analyzed: ${manifest.length}`);
+ console.log(`Distinct structural groups: ${groups.size}\n`);
+
+ let groupIndex = 0;
+ for (const [fp, group] of groups) {
+ groupIndex += 1;
+ console.log(`--- Group ${groupIndex} (fingerprint: ${fp}) ---`);
+ console.log(` Tenants: ${group.tenants.length}`);
+ console.log(` Tables: ${group.tableCount}`);
+ for (let t = 0; t < group.tableSummaries.length; t++) {
+ const ts = group.tableSummaries[t];
+ console.log(` Table ${t + 1}: ${ts.columnCount} columns`);
+ for (const col of ts.columns) {
+ console.log(` - ${col}`);
+ }
+ }
+ if (group.tenants.length <= 10) {
+ console.log(` Tenant keys: ${group.tenants.join(', ')}`);
+ } else {
+ console.log(` Tenant keys (first 10): ${group.tenants.slice(0, 10).join(', ')} ...`);
+ }
+ console.log('');
+ }
+
+ // Machine-readable summary to stdout
+ const summary = {
+ totalTenants: manifest.length,
+ distinctGroups: groups.size,
+ groups: [...groups.entries()].map(([fp, g]) => ({
+ fingerprint: fp,
+ tenantCount: g.tenants.length,
+ tableCount: g.tableCount,
+ columnLayouts: g.tableSummaries.map((ts) => ({
+ columnCount: ts.columnCount,
+ columns: ts.columns,
+ })),
+ })),
+ };
+
+ console.log('--- JSON Summary ---');
+ console.log(JSON.stringify(summary, null, 2));
+ } finally {
+ await pool.end();
+ }
+};
+
+main().catch((error) => {
+ console.error(error instanceof Error ? error.stack : String(error));
+ process.exit(1);
+});
diff --git a/graphql/server/src/index.ts b/graphql/server/src/index.ts
index 06d1561bd..03daf8627 100644
--- a/graphql/server/src/index.ts
+++ b/graphql/server/src/index.ts
@@ -5,5 +5,5 @@ export { createApiMiddleware, getSubdomain, getApiConfig } from './middleware/ap
export { createAuthenticateMiddleware } from './middleware/auth';
export { createUploadAuthenticateMiddleware } from './middleware/upload';
export { cors } from './middleware/cors';
-export { graphile } from './middleware/graphile';
-export { flush, flushService } from './middleware/flush';
+export { graphile, multiTenancyHandler, isMultiTenancyCacheEnabled, shutdownMultiTenancy } from './middleware/graphile';
+export { flush, createFlushMiddleware, flushService } from './middleware/flush';
diff --git a/graphql/server/src/middleware/flush.ts b/graphql/server/src/middleware/flush.ts
index 653d74631..77aa5fba3 100644
--- a/graphql/server/src/middleware/flush.ts
+++ b/graphql/server/src/middleware/flush.ts
@@ -3,8 +3,13 @@ import { Logger } from '@pgpmjs/logger';
import { svcCache } from '@pgpmjs/server-utils';
import { NextFunction, Request, Response } from 'express';
import { graphileCache } from 'graphile-cache';
+import {
+ flushTenantInstance,
+ flushByDatabaseId,
+} from 'graphile-multi-tenancy-cache';
import { getPgPool } from 'pg-cache';
import './types'; // for Request type
+import { isMultiTenancyCacheEnabled } from './graphile';
const log = new Logger('flush');
@@ -23,11 +28,39 @@ export const flush = async (
return next();
};
+/**
+ * Enhanced flush middleware with multi-tenancy cache support.
+ * Replaces flush() when multi-tenancy cache is enabled.
+ */
+export const createFlushMiddleware = (opts: ConstructiveOptions) => {
+ const multiTenancyEnabled = isMultiTenancyCacheEnabled(opts);
+
+ return async (req: Request, res: Response, next: NextFunction): Promise => {
+ if (req.url === '/flush') {
+ const key = (req as any).svc_key;
+
+ // Standard cache flush
+ graphileCache.delete(key);
+ svcCache.delete(key);
+
+ // Multi-tenancy cache flush
+ if (multiTenancyEnabled && key) {
+ flushTenantInstance(key);
+ }
+
+ res.status(200).send('OK');
+ return;
+ }
+ return next();
+ };
+};
+
export const flushService = async (
opts: ConstructiveOptions,
databaseId: string
): Promise => {
const pgPool = getPgPool(opts.pg);
+ const multiTenancyEnabled = isMultiTenancyCacheEnabled(opts);
log.info('flushing db ' + databaseId);
const api = new RegExp(`^api:${databaseId}:.*`);
@@ -43,6 +76,11 @@ export const flushService = async (
});
}
+ // Flush all handlers associated with this databaseId via index
+ if (multiTenancyEnabled) {
+ flushByDatabaseId(databaseId);
+ }
+
const svc = await pgPool.query(
`SELECT *
FROM services_public.domains
@@ -62,6 +100,11 @@ export const flushService = async (
if (key) {
graphileCache.delete(key);
svcCache.delete(key);
+
+ // Multi-tenancy cache: flush tenant instance
+ if (multiTenancyEnabled) {
+ flushTenantInstance(key);
+ }
}
}
};
diff --git a/graphql/server/src/middleware/graphile.ts b/graphql/server/src/middleware/graphile.ts
index e2affc290..578a92cf8 100644
--- a/graphql/server/src/middleware/graphile.ts
+++ b/graphql/server/src/middleware/graphile.ts
@@ -9,6 +9,13 @@ import type { GraphileConfig } from 'graphile-config';
import { ConstructivePreset, makePgService } from 'graphile-settings';
import { getPgPool } from 'pg-cache';
import { getPgEnvOptions } from 'pg-env';
+import {
+ configureMultiTenancyCache,
+ getTenantInstance,
+ getOrCreateTenantInstance,
+ shutdownMultiTenancyCache,
+ flushByDatabaseId,
+} from 'graphile-multi-tenancy-cache';
import './types'; // for Request type
import { isGraphqlObservabilityEnabled } from '../diagnostics/observability';
import { HandlerCreationError } from '../errors/api-errors';
@@ -391,3 +398,93 @@ export const graphile = (opts: ConstructiveOptions): RequestHandler => {
}
};
};
+
+// =============================================================================
+// Multi-Tenancy Cache Handler
+// =============================================================================
+
+/**
+ * Check if multi-tenancy cache is enabled for these options.
+ */
+export function isMultiTenancyCacheEnabled(opts: ConstructiveOptions): boolean {
+ return opts.api?.useMultiTenancyCache === true;
+}
+
+/**
+ * Shutdown multi-tenancy cache resources.
+ */
+export async function shutdownMultiTenancy(): Promise {
+ await shutdownMultiTenancyCache();
+}
+
+/**
+ * Multi-tenancy cache handler.
+ *
+ * Selected when opts.api.useMultiTenancyCache === true.
+ * Calls configureMultiTenancyCache() once at startup (package owns wrapping).
+ * Uses getTenantInstance() for fast-path cache hit.
+ * On miss, calls getOrCreateTenantInstance() — no preset builder passed from server.
+ * Routes request to tenant.handler — the package's Grafast context callback
+ * handles pgSqlTextTransform injection internally.
+ */
+export const multiTenancyHandler = (opts: ConstructiveOptions): RequestHandler => {
+ // One-time bootstrap: configure the multi-tenancy cache with our preset builder
+ configureMultiTenancyCache({
+ basePresetBuilder: buildPreset,
+ });
+
+ log.info('Multi-tenancy cache handler initialized');
+
+ return async (req: Request, res: Response, next: NextFunction) => {
+ const label = reqLabel(req);
+ try {
+ const api = req.api;
+ if (!api) {
+ log.error(`${label} Missing API info`);
+ return res.status(500).send('Missing API info');
+ }
+ const key = req.svc_key;
+ if (!key) {
+ log.error(`${label} Missing service cache key`);
+ return res.status(500).send('Missing service cache key');
+ }
+ const { dbname, anonRole, roleName, schema } = api;
+ const schemaLabel = schema?.join(',') || 'unknown';
+
+ // Fast path: check tenant instance cache
+ const cached = getTenantInstance(key);
+ if (cached) {
+ log.debug(`${label} Multi-tenancy cache hit key=${key} db=${dbname} schemas=${schemaLabel}`);
+ return cached.handler(req, res, next);
+ }
+
+ log.debug(`${label} Multi-tenancy cache miss key=${key} db=${dbname} schemas=${schemaLabel}`);
+
+ // Cold path: create or coalesce tenant instance
+ const pgConfig = getPgEnvOptions({
+ ...opts.pg,
+ database: dbname,
+ });
+ const pool = getPgPool(pgConfig);
+
+ const tenant = await getOrCreateTenantInstance({
+ svcKey: key,
+ pool,
+ schemas: schema || [],
+ anonRole,
+ roleName,
+ databaseId: api.databaseId,
+ });
+
+ return tenant.handler(req, res, next);
+ } catch (e: any) {
+ log.error(`${label} Multi-tenancy middleware error`, e);
+ if (!res.headersSent) {
+ return res.status(500).json({
+ error: { code: 'INTERNAL_ERROR', message: 'An unexpected error occurred' }
+ });
+ }
+ next(e);
+ }
+ };
+};
diff --git a/graphql/server/src/server.ts b/graphql/server/src/server.ts
index 63c9ceada..c91c2738f 100644
--- a/graphql/server/src/server.ts
+++ b/graphql/server/src/server.ts
@@ -25,8 +25,8 @@ import { createAuthenticateMiddleware } from './middleware/auth';
import { cors } from './middleware/cors';
import { errorHandler, notFoundHandler } from './middleware/error-handler';
import { favicon } from './middleware/favicon';
-import { flush, flushService } from './middleware/flush';
-import { graphile } from './middleware/graphile';
+import { flush, createFlushMiddleware, flushService } from './middleware/flush';
+import { graphile, multiTenancyHandler, isMultiTenancyCacheEnabled, shutdownMultiTenancy } from './middleware/graphile';
import { multipartBridge } from './middleware/multipart-bridge';
import { createDebugDatabaseMiddleware } from './middleware/observability/debug-db';
import { debugMemory } from './middleware/observability/debug-memory';
@@ -102,6 +102,7 @@ class Server {
exposedSchemas: apiOpts.exposedSchemas?.join(',') || 'none',
anonRole: apiOpts.anonRole,
roleName: apiOpts.roleName,
+ useMultiTenancyCache: apiOpts.useMultiTenancyCache,
observabilityEnabled,
});
@@ -160,8 +161,15 @@ class Server {
app.post('/upload', uploadAuthenticate, ...uploadRoute);
app.use(authenticate);
app.use(createCaptchaMiddleware());
- app.use(graphile(effectiveOpts));
- app.use(flush);
+ // Select handler based on multi-tenancy cache mode
+ if (isMultiTenancyCacheEnabled(effectiveOpts)) {
+ log.info('[server] Multi-tenancy cache ENABLED');
+ app.use(multiTenancyHandler(effectiveOpts));
+ app.use(createFlushMiddleware(effectiveOpts));
+ } else {
+ app.use(graphile(effectiveOpts));
+ app.use(flush);
+ }
// Error handling - MUST be LAST
app.use(notFoundHandler); // Catches unmatched routes (404)
@@ -292,6 +300,8 @@ class Server {
static async closeCaches(opts: { closePools?: boolean } = {}): Promise {
const { closePools = false } = opts;
svcCache.clear();
+ // Shutdown multi-tenancy cache if it was enabled
+ await shutdownMultiTenancy();
// Use closeAllCaches to properly await async disposal of PostGraphile instances
// before closing pg pools - this ensures all connections are released
if (closePools) {
diff --git a/graphql/types/src/graphile.ts b/graphql/types/src/graphile.ts
index 357f20140..fa6b542a0 100644
--- a/graphql/types/src/graphile.ts
+++ b/graphql/types/src/graphile.ts
@@ -42,6 +42,8 @@ export interface ApiOptions {
isPublic?: boolean;
/** Schemas containing metadata tables */
metaSchemas?: string[];
+ /** Enable multi-tenancy cache (buildKey-based handler reuse across matching inputs) */
+ useMultiTenancyCache?: boolean;
}
/**
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index b76453078..496e7eb4d 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -12,6 +12,7 @@ overrides:
packageExtensionsChecksum: sha256-x8B4zkJ4KLRX+yspUWxuggXWlz6zrBLSIh72pNhpPiE=
importers:
+
.:
devDependencies:
'@jest/test-sequencer':
@@ -337,6 +338,41 @@ importers:
version: link:../../postgres/pgsql-test/dist
publishDirectory: dist
+ graphile/graphile-multi-tenancy-cache:
+ dependencies:
+ '@pgpmjs/logger':
+ specifier: workspace:^
+ version: link:../../pgpm/logger/dist
+ express:
+ specifier: ^5.2.1
+ version: 5.2.1
+ grafserv:
+ specifier: 1.0.0
+ version: 1.0.0(@types/node@25.5.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(use-sync-external-store@1.6.0(react@19.2.4))(ws@8.19.0)
+ graphile-config:
+ specifier: 1.0.0
+ version: 1.0.0
+ pg:
+ specifier: ^8.11.3
+ version: 8.20.0
+ postgraphile:
+ specifier: 5.0.0
+ version: 5.0.0(f35d86129e8192df0ebe9574df8f7655)
+ devDependencies:
+ '@types/express':
+ specifier: ^5.0.6
+ version: 5.0.6
+ '@types/pg':
+ specifier: ^8.10.9
+ version: 8.18.0
+ makage:
+ specifier: ^0.3.0
+ version: 0.3.0
+ ts-node:
+ specifier: ^10.9.2
+ version: 10.9.2(@types/node@25.5.0)(typescript@5.9.3)
+ publishDirectory: dist
+
graphile/graphile-postgis:
dependencies:
'@dataplan/pg':
@@ -1240,6 +1276,9 @@ importers:
graphile-config:
specifier: 1.0.0
version: 1.0.0
+ graphile-multi-tenancy-cache:
+ specifier: workspace:^
+ version: link:../../graphile/graphile-multi-tenancy-cache/dist
graphile-settings:
specifier: workspace:^
version: link:../../graphile/graphile-settings/dist
@@ -2919,11 +2958,9 @@ importers:
publishDirectory: dist
packages:
+
'@0no-co/graphql.web@1.2.0':
- resolution:
- {
- integrity: sha512-/1iHy9TTr63gE1YcR5idjx8UREz1s0kFhydf3bBLCXyqjhkIc6igAzTOx3zPifCwFR87tsh/4Pa9cNts6d2otw==,
- }
+ resolution: {integrity: sha512-/1iHy9TTr63gE1YcR5idjx8UREz1s0kFhydf3bBLCXyqjhkIc6igAzTOx3zPifCwFR87tsh/4Pa9cNts6d2otw==}
peerDependencies:
graphql: 16.13.0
peerDependenciesMeta:
@@ -2931,293 +2968,167 @@ packages:
optional: true
'@agentic-kit/ollama@1.0.3':
- resolution:
- {
- integrity: sha512-bvDMjofjgSTI8oLvFI/8ORQvO+wrwmdYETYCB1yAOSy622zB6DWYqk+ldK7mKjZ22iWrjkoWFEdSY7T9rYE1FA==,
- }
+ resolution: {integrity: sha512-bvDMjofjgSTI8oLvFI/8ORQvO+wrwmdYETYCB1yAOSy622zB6DWYqk+ldK7mKjZ22iWrjkoWFEdSY7T9rYE1FA==}
'@aws-crypto/crc32@5.2.0':
- resolution:
- {
- integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==,
- }
- engines: { node: '>=16.0.0' }
+ resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==}
+ engines: {node: '>=16.0.0'}
'@aws-crypto/crc32c@5.2.0':
- resolution:
- {
- integrity: sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==,
- }
+ resolution: {integrity: sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==}
'@aws-crypto/sha1-browser@5.2.0':
- resolution:
- {
- integrity: sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==,
- }
+ resolution: {integrity: sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==}
'@aws-crypto/sha256-browser@5.2.0':
- resolution:
- {
- integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==,
- }
+ resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==}
'@aws-crypto/sha256-js@5.2.0':
- resolution:
- {
- integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==,
- }
- engines: { node: '>=16.0.0' }
+ resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==}
+ engines: {node: '>=16.0.0'}
'@aws-crypto/supports-web-crypto@5.2.0':
- resolution:
- {
- integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==,
- }
+ resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==}
'@aws-crypto/util@5.2.0':
- resolution:
- {
- integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==,
- }
+ resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==}
'@aws-sdk/client-s3@3.1009.0':
- resolution:
- {
- integrity: sha512-luy8CxallkoiGWTqU86ca/BbvkWJjs0oala7uIIRN1JtQxMb5i4Yl/PBZVcQFhbK9kQi0PK0GfD8gIpLkI91fw==,
- }
- engines: { node: '>=20.0.0' }
+ resolution: {integrity: sha512-luy8CxallkoiGWTqU86ca/BbvkWJjs0oala7uIIRN1JtQxMb5i4Yl/PBZVcQFhbK9kQi0PK0GfD8gIpLkI91fw==}
+ engines: {node: '>=20.0.0'}
'@aws-sdk/core@3.973.24':
- resolution:
- {
- integrity: sha512-vvf82RYQu2GidWAuQq+uIzaPz9V0gSCXVqdVzRosgl5rXcspXOpSD3wFreGGW6AYymPr97Z69kjVnLePBxloDw==,
- }
- engines: { node: '>=20.0.0' }
+ resolution: {integrity: sha512-vvf82RYQu2GidWAuQq+uIzaPz9V0gSCXVqdVzRosgl5rXcspXOpSD3wFreGGW6AYymPr97Z69kjVnLePBxloDw==}
+ engines: {node: '>=20.0.0'}
'@aws-sdk/crc64-nvme@3.972.5':
- resolution:
- {
- integrity: sha512-2VbTstbjKdT+yKi8m7b3a9CiVac+pL/IY2PHJwsaGkkHmuuqkJZIErPck1h6P3T9ghQMLSdMPyW6Qp7Di5swFg==,
- }
- engines: { node: '>=20.0.0' }
+ resolution: {integrity: sha512-2VbTstbjKdT+yKi8m7b3a9CiVac+pL/IY2PHJwsaGkkHmuuqkJZIErPck1h6P3T9ghQMLSdMPyW6Qp7Di5swFg==}
+ engines: {node: '>=20.0.0'}
'@aws-sdk/credential-provider-env@3.972.18':
- resolution:
- {
- integrity: sha512-X0B8AlQY507i5DwjLByeU2Af4ARsl9Vr84koDcXCbAkplmU+1xBFWxEPrWRAoh56waBne/yJqEloSwvRf4x6XA==,
- }
- engines: { node: '>=20.0.0' }
+ resolution: {integrity: sha512-X0B8AlQY507i5DwjLByeU2Af4ARsl9Vr84koDcXCbAkplmU+1xBFWxEPrWRAoh56waBne/yJqEloSwvRf4x6XA==}
+ engines: {node: '>=20.0.0'}
'@aws-sdk/credential-provider-http@3.972.20':
- resolution:
- {
- integrity: sha512-ey9Lelj001+oOfrbKmS6R2CJAiXX7QKY4Vj9VJv6L2eE6/VjD8DocHIoYqztTm70xDLR4E1jYPTKfIui+eRNDA==,
- }
- engines: { node: '>=20.0.0' }
+ resolution: {integrity: sha512-ey9Lelj001+oOfrbKmS6R2CJAiXX7QKY4Vj9VJv6L2eE6/VjD8DocHIoYqztTm70xDLR4E1jYPTKfIui+eRNDA==}
+ engines: {node: '>=20.0.0'}
'@aws-sdk/credential-provider-ini@3.972.20':
- resolution:
- {
- integrity: sha512-5flXSnKHMloObNF+9N0cupKegnH1Z37cdVlpETVgx8/rAhCe+VNlkcZH3HDg2SDn9bI765S+rhNPXGDJJPfbtA==,
- }
- engines: { node: '>=20.0.0' }
+ resolution: {integrity: sha512-5flXSnKHMloObNF+9N0cupKegnH1Z37cdVlpETVgx8/rAhCe+VNlkcZH3HDg2SDn9bI765S+rhNPXGDJJPfbtA==}
+ engines: {node: '>=20.0.0'}
'@aws-sdk/credential-provider-login@3.972.20':
- resolution:
- {
- integrity: sha512-gEWo54nfqp2jABMu6HNsjVC4hDLpg9HC8IKSJnp0kqWtxIJYHTmiLSsIfI4ScQjxEwpB+jOOH8dOLax1+hy/Hw==,
- }
- engines: { node: '>=20.0.0' }
+ resolution: {integrity: sha512-gEWo54nfqp2jABMu6HNsjVC4hDLpg9HC8IKSJnp0kqWtxIJYHTmiLSsIfI4ScQjxEwpB+jOOH8dOLax1+hy/Hw==}
+ engines: {node: '>=20.0.0'}
'@aws-sdk/credential-provider-node@3.972.21':
- resolution:
- {
- integrity: sha512-hah8if3/B/Q+LBYN5FukyQ1Mym6PLPDsBOBsIgNEYD6wLyZg0UmUF/OKIVC3nX9XH8TfTPuITK+7N/jenVACWA==,
- }
- engines: { node: '>=20.0.0' }
+ resolution: {integrity: sha512-hah8if3/B/Q+LBYN5FukyQ1Mym6PLPDsBOBsIgNEYD6wLyZg0UmUF/OKIVC3nX9XH8TfTPuITK+7N/jenVACWA==}
+ engines: {node: '>=20.0.0'}
'@aws-sdk/credential-provider-process@3.972.18':
- resolution:
- {
- integrity: sha512-Tpl7SRaPoOLT32jbTWchPsn52hYYgJ0kpiFgnwk8pxTANQdUymVSZkzFvv1+oOgZm1CrbQUP9MBeoMZ9IzLZjA==,
- }
- engines: { node: '>=20.0.0' }
+ resolution: {integrity: sha512-Tpl7SRaPoOLT32jbTWchPsn52hYYgJ0kpiFgnwk8pxTANQdUymVSZkzFvv1+oOgZm1CrbQUP9MBeoMZ9IzLZjA==}
+ engines: {node: '>=20.0.0'}
'@aws-sdk/credential-provider-sso@3.972.20':
- resolution:
- {
- integrity: sha512-p+R+PYR5Z7Gjqf/6pvbCnzEHcqPCpLzR7Yf127HjJ6EAb4hUcD+qsNRnuww1sB/RmSeCLxyay8FMyqREw4p1RA==,
- }
- engines: { node: '>=20.0.0' }
+ resolution: {integrity: sha512-p+R+PYR5Z7Gjqf/6pvbCnzEHcqPCpLzR7Yf127HjJ6EAb4hUcD+qsNRnuww1sB/RmSeCLxyay8FMyqREw4p1RA==}
+ engines: {node: '>=20.0.0'}
'@aws-sdk/credential-provider-web-identity@3.972.20':
- resolution:
- {
- integrity: sha512-rWCmh8o7QY4CsUj63qopzMzkDq/yPpkrpb+CnjBEFSOg/02T/we7sSTVg4QsDiVS9uwZ8VyONhq98qt+pIh3KA==,
- }
- engines: { node: '>=20.0.0' }
+ resolution: {integrity: sha512-rWCmh8o7QY4CsUj63qopzMzkDq/yPpkrpb+CnjBEFSOg/02T/we7sSTVg4QsDiVS9uwZ8VyONhq98qt+pIh3KA==}
+ engines: {node: '>=20.0.0'}
'@aws-sdk/lib-storage@3.1009.0':
- resolution:
- {
- integrity: sha512-gHQh1sNeTuxZxPSMSQWOq/Xli8I5499uWyRKMakMSv8N7IYfoyDdyT52Ul6697qcqVaoPHixmYTllfEWMo1AKg==,
- }
- engines: { node: '>=20.0.0' }
+ resolution: {integrity: sha512-gHQh1sNeTuxZxPSMSQWOq/Xli8I5499uWyRKMakMSv8N7IYfoyDdyT52Ul6697qcqVaoPHixmYTllfEWMo1AKg==}
+ engines: {node: '>=20.0.0'}
peerDependencies:
'@aws-sdk/client-s3': ^3.1009.0
'@aws-sdk/middleware-bucket-endpoint@3.972.8':
- resolution:
- {
- integrity: sha512-WR525Rr2QJSETa9a050isktyWi/4yIGcmY3BQ1kpHqb0LqUglQHCS8R27dTJxxWNZvQ0RVGtEZjTCbZJpyF3Aw==,
- }
- engines: { node: '>=20.0.0' }
+ resolution: {integrity: sha512-WR525Rr2QJSETa9a050isktyWi/4yIGcmY3BQ1kpHqb0LqUglQHCS8R27dTJxxWNZvQ0RVGtEZjTCbZJpyF3Aw==}
+ engines: {node: '>=20.0.0'}
'@aws-sdk/middleware-expect-continue@3.972.8':
- resolution:
- {
- integrity: sha512-5DTBTiotEES1e2jOHAq//zyzCjeMB78lEHd35u15qnrid4Nxm7diqIf9fQQ3Ov0ChH1V3Vvt13thOnrACmfGVQ==,
- }
- engines: { node: '>=20.0.0' }
+ resolution: {integrity: sha512-5DTBTiotEES1e2jOHAq//zyzCjeMB78lEHd35u15qnrid4Nxm7diqIf9fQQ3Ov0ChH1V3Vvt13thOnrACmfGVQ==}
+ engines: {node: '>=20.0.0'}
'@aws-sdk/middleware-flexible-checksums@3.973.6':
- resolution:
- {
- integrity: sha512-0nYEgkJH7Yt9k+nZJyllTghnkKaz17TWFcr5Mi0XMVMzYlF4ytDZADQpF2/iJo36cKL5AYSzRsvlykE4M/ErTA==,
- }
- engines: { node: '>=20.0.0' }
+ resolution: {integrity: sha512-0nYEgkJH7Yt9k+nZJyllTghnkKaz17TWFcr5Mi0XMVMzYlF4ytDZADQpF2/iJo36cKL5AYSzRsvlykE4M/ErTA==}
+ engines: {node: '>=20.0.0'}
'@aws-sdk/middleware-host-header@3.972.8':
- resolution:
- {
- integrity: sha512-wAr2REfKsqoKQ+OkNqvOShnBoh+nkPurDKW7uAeVSu6kUECnWlSJiPvnoqxGlfousEY/v9LfS9sNc46hjSYDIQ==,
- }
- engines: { node: '>=20.0.0' }
+ resolution: {integrity: sha512-wAr2REfKsqoKQ+OkNqvOShnBoh+nkPurDKW7uAeVSu6kUECnWlSJiPvnoqxGlfousEY/v9LfS9sNc46hjSYDIQ==}
+ engines: {node: '>=20.0.0'}
'@aws-sdk/middleware-location-constraint@3.972.8':
- resolution:
- {
- integrity: sha512-KaUoFuoFPziIa98DSQsTPeke1gvGXlc5ZGMhy+b+nLxZ4A7jmJgLzjEF95l8aOQN2T/qlPP3MrAyELm8ExXucw==,
- }
- engines: { node: '>=20.0.0' }
+ resolution: {integrity: sha512-KaUoFuoFPziIa98DSQsTPeke1gvGXlc5ZGMhy+b+nLxZ4A7jmJgLzjEF95l8aOQN2T/qlPP3MrAyELm8ExXucw==}
+ engines: {node: '>=20.0.0'}
'@aws-sdk/middleware-logger@3.972.8':
- resolution:
- {
- integrity: sha512-CWl5UCM57WUFaFi5kB7IBY1UmOeLvNZAZ2/OZ5l20ldiJ3TiIz1pC65gYj8X0BCPWkeR1E32mpsCk1L1I4n+lA==,
- }
- engines: { node: '>=20.0.0' }
+ resolution: {integrity: sha512-CWl5UCM57WUFaFi5kB7IBY1UmOeLvNZAZ2/OZ5l20ldiJ3TiIz1pC65gYj8X0BCPWkeR1E32mpsCk1L1I4n+lA==}
+ engines: {node: '>=20.0.0'}
'@aws-sdk/middleware-recursion-detection@3.972.8':
- resolution:
- {
- integrity: sha512-BnnvYs2ZEpdlmZ2PNlV2ZyQ8j8AEkMTjN79y/YA475ER1ByFYrkVR85qmhni8oeTaJcDqbx364wDpitDAA/wCA==,
- }
- engines: { node: '>=20.0.0' }
+ resolution: {integrity: sha512-BnnvYs2ZEpdlmZ2PNlV2ZyQ8j8AEkMTjN79y/YA475ER1ByFYrkVR85qmhni8oeTaJcDqbx364wDpitDAA/wCA==}
+ engines: {node: '>=20.0.0'}
'@aws-sdk/middleware-sdk-s3@3.972.25':
- resolution:
- {
- integrity: sha512-4xJL7O+XkhbSkT4yAYshkAww+mxJvtGQneNHH0MOpe+w8Vo2z87M9z06UO3G6zPM2c3Ef2yKczvZpTgdArMHfg==,
- }
- engines: { node: '>=20.0.0' }
+ resolution: {integrity: sha512-4xJL7O+XkhbSkT4yAYshkAww+mxJvtGQneNHH0MOpe+w8Vo2z87M9z06UO3G6zPM2c3Ef2yKczvZpTgdArMHfg==}
+ engines: {node: '>=20.0.0'}
'@aws-sdk/middleware-ssec@3.972.8':
- resolution:
- {
- integrity: sha512-wqlK0yO/TxEC2UsY9wIlqeeutF6jjLe0f96Pbm40XscTo57nImUk9lBcw0dPgsm0sppFtAkSlDrfpK+pC30Wqw==,
- }
- engines: { node: '>=20.0.0' }
+ resolution: {integrity: sha512-wqlK0yO/TxEC2UsY9wIlqeeutF6jjLe0f96Pbm40XscTo57nImUk9lBcw0dPgsm0sppFtAkSlDrfpK+pC30Wqw==}
+ engines: {node: '>=20.0.0'}
'@aws-sdk/middleware-user-agent@3.972.21':
- resolution:
- {
- integrity: sha512-62XRl1GDYPpkt7cx1AX1SPy9wgNE9Iw/NPuurJu4lmhCWS7sGKO+kS53TQ8eRmIxy3skmvNInnk0ZbWrU5Dpyg==,
- }
- engines: { node: '>=20.0.0' }
+ resolution: {integrity: sha512-62XRl1GDYPpkt7cx1AX1SPy9wgNE9Iw/NPuurJu4lmhCWS7sGKO+kS53TQ8eRmIxy3skmvNInnk0ZbWrU5Dpyg==}
+ engines: {node: '>=20.0.0'}
'@aws-sdk/nested-clients@3.996.10':
- resolution:
- {
- integrity: sha512-SlDol5Z+C7Ivnc2rKGqiqfSUmUZzY1qHfVs9myt/nxVwswgfpjdKahyTzLTx802Zfq0NFRs7AejwKzzzl5Co2w==,
- }
- engines: { node: '>=20.0.0' }
+ resolution: {integrity: sha512-SlDol5Z+C7Ivnc2rKGqiqfSUmUZzY1qHfVs9myt/nxVwswgfpjdKahyTzLTx802Zfq0NFRs7AejwKzzzl5Co2w==}
+ engines: {node: '>=20.0.0'}
'@aws-sdk/region-config-resolver@3.972.8':
- resolution:
- {
- integrity: sha512-1eD4uhTDeambO/PNIDVG19A6+v4NdD7xzwLHDutHsUqz0B+i661MwQB2eYO4/crcCvCiQG4SRm1k81k54FEIvw==,
- }
- engines: { node: '>=20.0.0' }
+ resolution: {integrity: sha512-1eD4uhTDeambO/PNIDVG19A6+v4NdD7xzwLHDutHsUqz0B+i661MwQB2eYO4/crcCvCiQG4SRm1k81k54FEIvw==}
+ engines: {node: '>=20.0.0'}
'@aws-sdk/s3-request-presigner@3.1017.0':
- resolution:
- {
- integrity: sha512-PSR8VJEkCy53uhAeuvht6ub3kzfdqoTAmLliQJ63MkC/1FuMmrmqWRGoZuzZvAbpzTcZtuibSGvawDa47gsckA==,
- }
- engines: { node: '>=20.0.0' }
+ resolution: {integrity: sha512-PSR8VJEkCy53uhAeuvht6ub3kzfdqoTAmLliQJ63MkC/1FuMmrmqWRGoZuzZvAbpzTcZtuibSGvawDa47gsckA==}
+ engines: {node: '>=20.0.0'}
'@aws-sdk/signature-v4-multi-region@3.996.13':
- resolution:
- {
- integrity: sha512-7j8rOFHHq4e9McCSuWBmBSADriW5CjPUem4inckRh/cyQGaijBwDbkNbVTgDVDWqFo29SoVVUfI6HCOnck6HZw==,
- }
- engines: { node: '>=20.0.0' }
+ resolution: {integrity: sha512-7j8rOFHHq4e9McCSuWBmBSADriW5CjPUem4inckRh/cyQGaijBwDbkNbVTgDVDWqFo29SoVVUfI6HCOnck6HZw==}
+ engines: {node: '>=20.0.0'}
'@aws-sdk/token-providers@3.1009.0':
- resolution:
- {
- integrity: sha512-KCPLuTqN9u0Rr38Arln78fRG9KXpzsPWmof+PZzfAHMMQq2QED6YjQrkrfiH7PDefLWEposY1o4/eGwrmKA4JA==,
- }
- engines: { node: '>=20.0.0' }
+ resolution: {integrity: sha512-KCPLuTqN9u0Rr38Arln78fRG9KXpzsPWmof+PZzfAHMMQq2QED6YjQrkrfiH7PDefLWEposY1o4/eGwrmKA4JA==}
+ engines: {node: '>=20.0.0'}
'@aws-sdk/types@3.973.6':
- resolution:
- {
- integrity: sha512-Atfcy4E++beKtwJHiDln2Nby8W/mam64opFPTiHEqgsthqeydFS1pY+OUlN1ouNOmf8ArPU/6cDS65anOP3KQw==,
- }
- engines: { node: '>=20.0.0' }
+ resolution: {integrity: sha512-Atfcy4E++beKtwJHiDln2Nby8W/mam64opFPTiHEqgsthqeydFS1pY+OUlN1ouNOmf8ArPU/6cDS65anOP3KQw==}
+ engines: {node: '>=20.0.0'}
'@aws-sdk/util-arn-parser@3.972.3':
- resolution:
- {
- integrity: sha512-HzSD8PMFrvgi2Kserxuff5VitNq2sgf3w9qxmskKDiDTThWfVteJxuCS9JXiPIPtmCrp+7N9asfIaVhBFORllA==,
- }
- engines: { node: '>=20.0.0' }
+ resolution: {integrity: sha512-HzSD8PMFrvgi2Kserxuff5VitNq2sgf3w9qxmskKDiDTThWfVteJxuCS9JXiPIPtmCrp+7N9asfIaVhBFORllA==}
+ engines: {node: '>=20.0.0'}
'@aws-sdk/util-endpoints@3.996.5':
- resolution:
- {
- integrity: sha512-Uh93L5sXFNbyR5sEPMzUU8tJ++Ku97EY4udmC01nB8Zu+xfBPwpIwJ6F7snqQeq8h2pf+8SGN5/NoytfKgYPIw==,
- }
- engines: { node: '>=20.0.0' }
+ resolution: {integrity: sha512-Uh93L5sXFNbyR5sEPMzUU8tJ++Ku97EY4udmC01nB8Zu+xfBPwpIwJ6F7snqQeq8h2pf+8SGN5/NoytfKgYPIw==}
+ engines: {node: '>=20.0.0'}
'@aws-sdk/util-format-url@3.972.8':
- resolution:
- {
- integrity: sha512-J6DS9oocrgxM8xlUTTmQOuwRF6rnAGEujAN9SAzllcrQmwn5iJ58ogxy3SEhD0Q7JZvlA5jvIXBkpQRqEqlE9A==,
- }
- engines: { node: '>=20.0.0' }
+ resolution: {integrity: sha512-J6DS9oocrgxM8xlUTTmQOuwRF6rnAGEujAN9SAzllcrQmwn5iJ58ogxy3SEhD0Q7JZvlA5jvIXBkpQRqEqlE9A==}
+ engines: {node: '>=20.0.0'}
'@aws-sdk/util-locate-window@3.965.5':
- resolution:
- {
- integrity: sha512-WhlJNNINQB+9qtLtZJcpQdgZw3SCDCpXdUJP7cToGwHbCWCnRckGlc6Bx/OhWwIYFNAn+FIydY8SZ0QmVu3xTQ==,
- }
- engines: { node: '>=20.0.0' }
+ resolution: {integrity: sha512-WhlJNNINQB+9qtLtZJcpQdgZw3SCDCpXdUJP7cToGwHbCWCnRckGlc6Bx/OhWwIYFNAn+FIydY8SZ0QmVu3xTQ==}
+ engines: {node: '>=20.0.0'}
'@aws-sdk/util-user-agent-browser@3.972.8':
- resolution:
- {
- integrity: sha512-B3KGXJviV2u6Cdw2SDY2aDhoJkVfY/Q/Trwk2CMSkikE1Oi6gRzxhvhIfiRpHfmIsAhV4EA54TVEX8K6CbHbkA==,
- }
+ resolution: {integrity: sha512-B3KGXJviV2u6Cdw2SDY2aDhoJkVfY/Q/Trwk2CMSkikE1Oi6gRzxhvhIfiRpHfmIsAhV4EA54TVEX8K6CbHbkA==}
'@aws-sdk/util-user-agent-node@3.973.7':
- resolution:
- {
- integrity: sha512-Hz6EZMUAEzqUd7e+vZ9LE7mn+5gMbxltXy18v+YSFY+9LBJz15wkNZvw5JqfX3z0FS9n3bgUtz3L5rAsfh4YlA==,
- }
- engines: { node: '>=20.0.0' }
+ resolution: {integrity: sha512-Hz6EZMUAEzqUd7e+vZ9LE7mn+5gMbxltXy18v+YSFY+9LBJz15wkNZvw5JqfX3z0FS9n3bgUtz3L5rAsfh4YlA==}
+ engines: {node: '>=20.0.0'}
peerDependencies:
aws-crt: '>=1.0.0'
peerDependenciesMeta:
@@ -3225,423 +3136,258 @@ packages:
optional: true
'@aws-sdk/xml-builder@3.972.15':
- resolution:
- {
- integrity: sha512-PxMRlCFNiQnke9YR29vjFQwz4jq+6Q04rOVFeTDR2K7Qpv9h9FOWOxG+zJjageimYbWqE3bTuLjmryWHAWbvaA==,
- }
- engines: { node: '>=20.0.0' }
+ resolution: {integrity: sha512-PxMRlCFNiQnke9YR29vjFQwz4jq+6Q04rOVFeTDR2K7Qpv9h9FOWOxG+zJjageimYbWqE3bTuLjmryWHAWbvaA==}
+ engines: {node: '>=20.0.0'}
'@aws/lambda-invoke-store@0.2.4':
- resolution:
- {
- integrity: sha512-iY8yvjE0y651BixKNPgmv1WrQc+GZ142sb0z4gYnChDDY2YqI4P/jsSopBWrKfAt7LOJAkOXt7rC/hms+WclQQ==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-iY8yvjE0y651BixKNPgmv1WrQc+GZ142sb0z4gYnChDDY2YqI4P/jsSopBWrKfAt7LOJAkOXt7rC/hms+WclQQ==}
+ engines: {node: '>=18.0.0'}
'@babel/code-frame@7.27.1':
- resolution:
- {
- integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==}
+ engines: {node: '>=6.9.0'}
'@babel/code-frame@7.28.6':
- resolution:
- {
- integrity: sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==}
+ engines: {node: '>=6.9.0'}
'@babel/code-frame@7.29.0':
- resolution:
- {
- integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==}
+ engines: {node: '>=6.9.0'}
'@babel/compat-data@7.28.6':
- resolution:
- {
- integrity: sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg==}
+ engines: {node: '>=6.9.0'}
'@babel/core@7.28.6':
- resolution:
- {
- integrity: sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw==}
+ engines: {node: '>=6.9.0'}
'@babel/core@7.29.0':
- resolution:
- {
- integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==}
+ engines: {node: '>=6.9.0'}
'@babel/generator@7.29.1':
- resolution:
- {
- integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==}
+ engines: {node: '>=6.9.0'}
'@babel/helper-annotate-as-pure@7.27.3':
- resolution:
- {
- integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==}
+ engines: {node: '>=6.9.0'}
'@babel/helper-compilation-targets@7.28.6':
- resolution:
- {
- integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==}
+ engines: {node: '>=6.9.0'}
'@babel/helper-globals@7.28.0':
- resolution:
- {
- integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==}
+ engines: {node: '>=6.9.0'}
'@babel/helper-module-imports@7.27.1':
- resolution:
- {
- integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==}
+ engines: {node: '>=6.9.0'}
'@babel/helper-module-imports@7.28.6':
- resolution:
- {
- integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==}
+ engines: {node: '>=6.9.0'}
'@babel/helper-module-transforms@7.28.6':
- resolution:
- {
- integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
'@babel/helper-plugin-utils@7.27.1':
- resolution:
- {
- integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==}
+ engines: {node: '>=6.9.0'}
'@babel/helper-plugin-utils@7.28.6':
- resolution:
- {
- integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==}
+ engines: {node: '>=6.9.0'}
'@babel/helper-string-parser@7.27.1':
- resolution:
- {
- integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
+ engines: {node: '>=6.9.0'}
'@babel/helper-validator-identifier@7.28.5':
- resolution:
- {
- integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==}
+ engines: {node: '>=6.9.0'}
'@babel/helper-validator-option@7.27.1':
- resolution:
- {
- integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==}
+ engines: {node: '>=6.9.0'}
'@babel/helpers@7.28.6':
- resolution:
- {
- integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==}
+ engines: {node: '>=6.9.0'}
'@babel/parser@7.28.6':
- resolution:
- {
- integrity: sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==,
- }
- engines: { node: '>=6.0.0' }
+ resolution: {integrity: sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==}
+ engines: {node: '>=6.0.0'}
hasBin: true
'@babel/parser@7.29.0':
- resolution:
- {
- integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==,
- }
- engines: { node: '>=6.0.0' }
+ resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==}
+ engines: {node: '>=6.0.0'}
hasBin: true
'@babel/plugin-syntax-async-generators@7.8.4':
- resolution:
- {
- integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==,
- }
+ resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-bigint@7.8.3':
- resolution:
- {
- integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==,
- }
+ resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-class-properties@7.12.13':
- resolution:
- {
- integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==,
- }
+ resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-class-static-block@7.14.5':
- resolution:
- {
- integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-import-attributes@7.28.6':
- resolution:
- {
- integrity: sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-import-meta@7.10.4':
- resolution:
- {
- integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==,
- }
+ resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-json-strings@7.8.3':
- resolution:
- {
- integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==,
- }
+ resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-jsx@7.27.1':
- resolution:
- {
- integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-jsx@7.28.6':
- resolution:
- {
- integrity: sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-logical-assignment-operators@7.10.4':
- resolution:
- {
- integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==,
- }
+ resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-nullish-coalescing-operator@7.8.3':
- resolution:
- {
- integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==,
- }
+ resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-numeric-separator@7.10.4':
- resolution:
- {
- integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==,
- }
+ resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-object-rest-spread@7.8.3':
- resolution:
- {
- integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==,
- }
+ resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-optional-catch-binding@7.8.3':
- resolution:
- {
- integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==,
- }
+ resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-optional-chaining@7.8.3':
- resolution:
- {
- integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==,
- }
+ resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-private-property-in-object@7.14.5':
- resolution:
- {
- integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-top-level-await@7.14.5':
- resolution:
- {
- integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-typescript@7.28.6':
- resolution:
- {
- integrity: sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-transform-react-jsx-self@7.27.1':
- resolution:
- {
- integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-transform-react-jsx-source@7.27.1':
- resolution:
- {
- integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/runtime-corejs3@7.28.4':
- resolution:
- {
- integrity: sha512-h7iEYiW4HebClDEhtvFObtPmIvrd1SSfpI9EhOeKk4CtIK/ngBWFpuhCzhdmRKtg71ylcue+9I6dv54XYO1epQ==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-h7iEYiW4HebClDEhtvFObtPmIvrd1SSfpI9EhOeKk4CtIK/ngBWFpuhCzhdmRKtg71ylcue+9I6dv54XYO1epQ==}
+ engines: {node: '>=6.9.0'}
'@babel/runtime@7.28.4':
- resolution:
- {
- integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==}
+ engines: {node: '>=6.9.0'}
'@babel/template@7.28.6':
- resolution:
- {
- integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==}
+ engines: {node: '>=6.9.0'}
'@babel/traverse@7.28.5':
- resolution:
- {
- integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==}
+ engines: {node: '>=6.9.0'}
'@babel/traverse@7.28.6':
- resolution:
- {
- integrity: sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==}
+ engines: {node: '>=6.9.0'}
'@babel/traverse@7.29.0':
- resolution:
- {
- integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==}
+ engines: {node: '>=6.9.0'}
'@babel/types@7.28.5':
- resolution:
- {
- integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==}
+ engines: {node: '>=6.9.0'}
'@babel/types@7.29.0':
- resolution:
- {
- integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==}
+ engines: {node: '>=6.9.0'}
'@bcoe/v8-coverage@0.2.3':
- resolution:
- {
- integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==,
- }
+ resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
'@cspotcode/source-map-support@0.8.1':
- resolution:
- {
- integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==,
- }
- engines: { node: '>=12' }
+ resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
+ engines: {node: '>=12'}
'@dataplan/json@1.0.0':
- resolution:
- {
- integrity: sha512-mSBzlhKTZWeXYq/j8U+8/9sVToeVQW4TYfTaEwZvE6fFHJTIzBK38dgOPTN+Vp/Wk7iiRT+GYd8RWE6aMFpNDg==,
- }
- engines: { node: '>=22' }
+ resolution: {integrity: sha512-mSBzlhKTZWeXYq/j8U+8/9sVToeVQW4TYfTaEwZvE6fFHJTIzBK38dgOPTN+Vp/Wk7iiRT+GYd8RWE6aMFpNDg==}
+ engines: {node: '>=22'}
peerDependencies:
grafast: ^1.0.0-rc.8
'@dataplan/pg@1.0.0':
- resolution:
- {
- integrity: sha512-Nl4cdQWgdl86u78K1FjQtvH+AyH5ToDb9hYxN99Hu8T+ip6a6B3i3Ho0nRlBccUWYHx+p92Kh70sDXCJ3Fpmnw==,
- }
- engines: { node: '>=22' }
+ resolution: {integrity: sha512-Nl4cdQWgdl86u78K1FjQtvH+AyH5ToDb9hYxN99Hu8T+ip6a6B3i3Ho0nRlBccUWYHx+p92Kh70sDXCJ3Fpmnw==}
+ engines: {node: '>=22'}
peerDependencies:
'@dataplan/json': 1.0.0
grafast: ^1.0.0
@@ -3654,668 +3400,425 @@ packages:
optional: true
'@emnapi/core@1.7.1':
- resolution:
- {
- integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==,
- }
+ resolution: {integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==}
'@emnapi/core@1.9.0':
- resolution:
- {
- integrity: sha512-0DQ98G9ZQZOxfUcQn1waV2yS8aWdZ6kJMbYCJB3oUBecjWYO1fqJ+a1DRfPF3O5JEkwqwP1A9QEN/9mYm2Yd0w==,
- }
+ resolution: {integrity: sha512-0DQ98G9ZQZOxfUcQn1waV2yS8aWdZ6kJMbYCJB3oUBecjWYO1fqJ+a1DRfPF3O5JEkwqwP1A9QEN/9mYm2Yd0w==}
'@emnapi/runtime@1.7.1':
- resolution:
- {
- integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==,
- }
+ resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==}
'@emnapi/runtime@1.9.0':
- resolution:
- {
- integrity: sha512-QN75eB0IH2ywSpRpNddCRfQIhmJYBCJ1x5Lb3IscKAL8bMnVAKnRg8dCoXbHzVLLH7P38N2Z3mtulB7W0J0FKw==,
- }
+ resolution: {integrity: sha512-QN75eB0IH2ywSpRpNddCRfQIhmJYBCJ1x5Lb3IscKAL8bMnVAKnRg8dCoXbHzVLLH7P38N2Z3mtulB7W0J0FKw==}
'@emnapi/wasi-threads@1.1.0':
- resolution:
- {
- integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==,
- }
+ resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==}
'@emnapi/wasi-threads@1.2.0':
- resolution:
- {
- integrity: sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==,
- }
+ resolution: {integrity: sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==}
'@emotion/is-prop-valid@1.4.0':
- resolution:
- {
- integrity: sha512-QgD4fyscGcbbKwJmqNvUMSE02OsHUa+lAWKdEUIJKgqe5IwRSKd7+KhibEWdaKwgjLj0DRSHA9biAIqGBk05lw==,
- }
+ resolution: {integrity: sha512-QgD4fyscGcbbKwJmqNvUMSE02OsHUa+lAWKdEUIJKgqe5IwRSKd7+KhibEWdaKwgjLj0DRSHA9biAIqGBk05lw==}
'@emotion/memoize@0.9.0':
- resolution:
- {
- integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==,
- }
+ resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==}
'@emotion/stylis@0.8.5':
- resolution:
- {
- integrity: sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==,
- }
+ resolution: {integrity: sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==}
'@emotion/unitless@0.7.5':
- resolution:
- {
- integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==,
- }
+ resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==}
'@esbuild/aix-ppc64@0.25.12':
- resolution:
- {
- integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==}
+ engines: {node: '>=18'}
cpu: [ppc64]
os: [aix]
'@esbuild/aix-ppc64@0.27.2':
- resolution:
- {
- integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==}
+ engines: {node: '>=18'}
cpu: [ppc64]
os: [aix]
'@esbuild/android-arm64@0.25.12':
- resolution:
- {
- integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==}
+ engines: {node: '>=18'}
cpu: [arm64]
os: [android]
'@esbuild/android-arm64@0.27.2':
- resolution:
- {
- integrity: sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==}
+ engines: {node: '>=18'}
cpu: [arm64]
os: [android]
'@esbuild/android-arm@0.25.12':
- resolution:
- {
- integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==}
+ engines: {node: '>=18'}
cpu: [arm]
os: [android]
'@esbuild/android-arm@0.27.2':
- resolution:
- {
- integrity: sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==}
+ engines: {node: '>=18'}
cpu: [arm]
os: [android]
'@esbuild/android-x64@0.25.12':
- resolution:
- {
- integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==}
+ engines: {node: '>=18'}
cpu: [x64]
os: [android]
'@esbuild/android-x64@0.27.2':
- resolution:
- {
- integrity: sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==}
+ engines: {node: '>=18'}
cpu: [x64]
os: [android]
'@esbuild/darwin-arm64@0.25.12':
- resolution:
- {
- integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==}
+ engines: {node: '>=18'}
cpu: [arm64]
os: [darwin]
'@esbuild/darwin-arm64@0.27.2':
- resolution:
- {
- integrity: sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==}
+ engines: {node: '>=18'}
cpu: [arm64]
os: [darwin]
'@esbuild/darwin-x64@0.25.12':
- resolution:
- {
- integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==}
+ engines: {node: '>=18'}
cpu: [x64]
os: [darwin]
'@esbuild/darwin-x64@0.27.2':
- resolution:
- {
- integrity: sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==}
+ engines: {node: '>=18'}
cpu: [x64]
os: [darwin]
'@esbuild/freebsd-arm64@0.25.12':
- resolution:
- {
- integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==}
+ engines: {node: '>=18'}
cpu: [arm64]
os: [freebsd]
'@esbuild/freebsd-arm64@0.27.2':
- resolution:
- {
- integrity: sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==}
+ engines: {node: '>=18'}
cpu: [arm64]
os: [freebsd]
'@esbuild/freebsd-x64@0.25.12':
- resolution:
- {
- integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==}
+ engines: {node: '>=18'}
cpu: [x64]
os: [freebsd]
'@esbuild/freebsd-x64@0.27.2':
- resolution:
- {
- integrity: sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==}
+ engines: {node: '>=18'}
cpu: [x64]
os: [freebsd]
'@esbuild/linux-arm64@0.25.12':
- resolution:
- {
- integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==}
+ engines: {node: '>=18'}
cpu: [arm64]
os: [linux]
'@esbuild/linux-arm64@0.27.2':
- resolution:
- {
- integrity: sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==}
+ engines: {node: '>=18'}
cpu: [arm64]
os: [linux]
'@esbuild/linux-arm@0.25.12':
- resolution:
- {
- integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==}
+ engines: {node: '>=18'}
cpu: [arm]
os: [linux]
'@esbuild/linux-arm@0.27.2':
- resolution:
- {
- integrity: sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==}
+ engines: {node: '>=18'}
cpu: [arm]
os: [linux]
'@esbuild/linux-ia32@0.25.12':
- resolution:
- {
- integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==}
+ engines: {node: '>=18'}
cpu: [ia32]
os: [linux]
'@esbuild/linux-ia32@0.27.2':
- resolution:
- {
- integrity: sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==}
+ engines: {node: '>=18'}
cpu: [ia32]
os: [linux]
'@esbuild/linux-loong64@0.25.12':
- resolution:
- {
- integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==}
+ engines: {node: '>=18'}
cpu: [loong64]
os: [linux]
'@esbuild/linux-loong64@0.27.2':
- resolution:
- {
- integrity: sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==}
+ engines: {node: '>=18'}
cpu: [loong64]
os: [linux]
'@esbuild/linux-mips64el@0.25.12':
- resolution:
- {
- integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==}
+ engines: {node: '>=18'}
cpu: [mips64el]
os: [linux]
'@esbuild/linux-mips64el@0.27.2':
- resolution:
- {
- integrity: sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==}
+ engines: {node: '>=18'}
cpu: [mips64el]
os: [linux]
'@esbuild/linux-ppc64@0.25.12':
- resolution:
- {
- integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==}
+ engines: {node: '>=18'}
cpu: [ppc64]
os: [linux]
'@esbuild/linux-ppc64@0.27.2':
- resolution:
- {
- integrity: sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==}
+ engines: {node: '>=18'}
cpu: [ppc64]
os: [linux]
'@esbuild/linux-riscv64@0.25.12':
- resolution:
- {
- integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==}
+ engines: {node: '>=18'}
cpu: [riscv64]
os: [linux]
'@esbuild/linux-riscv64@0.27.2':
- resolution:
- {
- integrity: sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==}
+ engines: {node: '>=18'}
cpu: [riscv64]
os: [linux]
'@esbuild/linux-s390x@0.25.12':
- resolution:
- {
- integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==}
+ engines: {node: '>=18'}
cpu: [s390x]
os: [linux]
'@esbuild/linux-s390x@0.27.2':
- resolution:
- {
- integrity: sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==}
+ engines: {node: '>=18'}
cpu: [s390x]
os: [linux]
'@esbuild/linux-x64@0.25.12':
- resolution:
- {
- integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==}
+ engines: {node: '>=18'}
cpu: [x64]
os: [linux]
'@esbuild/linux-x64@0.27.2':
- resolution:
- {
- integrity: sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==}
+ engines: {node: '>=18'}
cpu: [x64]
os: [linux]
'@esbuild/netbsd-arm64@0.25.12':
- resolution:
- {
- integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==}
+ engines: {node: '>=18'}
cpu: [arm64]
os: [netbsd]
'@esbuild/netbsd-arm64@0.27.2':
- resolution:
- {
- integrity: sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==}
+ engines: {node: '>=18'}
cpu: [arm64]
os: [netbsd]
'@esbuild/netbsd-x64@0.25.12':
- resolution:
- {
- integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==}
+ engines: {node: '>=18'}
cpu: [x64]
os: [netbsd]
'@esbuild/netbsd-x64@0.27.2':
- resolution:
- {
- integrity: sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==}
+ engines: {node: '>=18'}
cpu: [x64]
os: [netbsd]
'@esbuild/openbsd-arm64@0.25.12':
- resolution:
- {
- integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==}
+ engines: {node: '>=18'}
cpu: [arm64]
os: [openbsd]
'@esbuild/openbsd-arm64@0.27.2':
- resolution:
- {
- integrity: sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==}
+ engines: {node: '>=18'}
cpu: [arm64]
os: [openbsd]
'@esbuild/openbsd-x64@0.25.12':
- resolution:
- {
- integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==}
+ engines: {node: '>=18'}
cpu: [x64]
os: [openbsd]
'@esbuild/openbsd-x64@0.27.2':
- resolution:
- {
- integrity: sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==}
+ engines: {node: '>=18'}
cpu: [x64]
os: [openbsd]
'@esbuild/openharmony-arm64@0.25.12':
- resolution:
- {
- integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==}
+ engines: {node: '>=18'}
cpu: [arm64]
os: [openharmony]
'@esbuild/openharmony-arm64@0.27.2':
- resolution:
- {
- integrity: sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==}
+ engines: {node: '>=18'}
cpu: [arm64]
os: [openharmony]
'@esbuild/sunos-x64@0.25.12':
- resolution:
- {
- integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==}
+ engines: {node: '>=18'}
cpu: [x64]
os: [sunos]
'@esbuild/sunos-x64@0.27.2':
- resolution:
- {
- integrity: sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==}
+ engines: {node: '>=18'}
cpu: [x64]
os: [sunos]
'@esbuild/win32-arm64@0.25.12':
- resolution:
- {
- integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==}
+ engines: {node: '>=18'}
cpu: [arm64]
os: [win32]
'@esbuild/win32-arm64@0.27.2':
- resolution:
- {
- integrity: sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==}
+ engines: {node: '>=18'}
cpu: [arm64]
os: [win32]
'@esbuild/win32-ia32@0.25.12':
- resolution:
- {
- integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==}
+ engines: {node: '>=18'}
cpu: [ia32]
os: [win32]
'@esbuild/win32-ia32@0.27.2':
- resolution:
- {
- integrity: sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==}
+ engines: {node: '>=18'}
cpu: [ia32]
os: [win32]
'@esbuild/win32-x64@0.25.12':
- resolution:
- {
- integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==}
+ engines: {node: '>=18'}
cpu: [x64]
os: [win32]
'@esbuild/win32-x64@0.27.2':
- resolution:
- {
- integrity: sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==}
+ engines: {node: '>=18'}
cpu: [x64]
os: [win32]
'@eslint-community/eslint-utils@4.9.0':
- resolution:
- {
- integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==,
- }
- engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
+ resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
'@eslint-community/eslint-utils@4.9.1':
- resolution:
- {
- integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==,
- }
- engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
+ resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
'@eslint-community/regexpp@4.12.2':
- resolution:
- {
- integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==,
- }
- engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 }
+ resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==}
+ engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
'@eslint/config-array@0.21.1':
- resolution:
- {
- integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==,
- }
- engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/config-helpers@0.4.2':
- resolution:
- {
- integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==,
- }
- engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/core@0.17.0':
- resolution:
- {
- integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==,
- }
- engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/eslintrc@3.3.3':
- resolution:
- {
- integrity: sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==,
- }
- engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ resolution: {integrity: sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/js@9.39.2':
- resolution:
- {
- integrity: sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==,
- }
- engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ resolution: {integrity: sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/object-schema@2.1.7':
- resolution:
- {
- integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==,
- }
- engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/plugin-kit@0.4.1':
- resolution:
- {
- integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==,
- }
- engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@floating-ui/core@1.7.5':
- resolution:
- {
- integrity: sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==,
- }
+ resolution: {integrity: sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==}
'@floating-ui/dom@1.7.6':
- resolution:
- {
- integrity: sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==,
- }
+ resolution: {integrity: sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==}
'@floating-ui/react-dom@2.1.8':
- resolution:
- {
- integrity: sha512-cC52bHwM/n/CxS87FH0yWdngEZrjdtLW/qVruo68qg+prK7ZQ4YGdut2GyDVpoGeAYe/h899rVeOVm6Oi40k2A==,
- }
+ resolution: {integrity: sha512-cC52bHwM/n/CxS87FH0yWdngEZrjdtLW/qVruo68qg+prK7ZQ4YGdut2GyDVpoGeAYe/h899rVeOVm6Oi40k2A==}
peerDependencies:
react: '>=16.8.0'
react-dom: '>=16.8.0'
'@floating-ui/react@0.26.28':
- resolution:
- {
- integrity: sha512-yORQuuAtVpiRjpMhdc0wJj06b9JFjrYF4qp96j++v2NBpbi6SEGF7donUJ3TMieerQ6qVkAv1tgr7L4r5roTqw==,
- }
+ resolution: {integrity: sha512-yORQuuAtVpiRjpMhdc0wJj06b9JFjrYF4qp96j++v2NBpbi6SEGF7donUJ3TMieerQ6qVkAv1tgr7L4r5roTqw==}
peerDependencies:
react: '>=16.8.0'
react-dom: '>=16.8.0'
'@floating-ui/utils@0.2.11':
- resolution:
- {
- integrity: sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==,
- }
+ resolution: {integrity: sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==}
'@graphile-contrib/pg-many-to-many@2.0.0-rc.2':
- resolution:
- {
- integrity: sha512-aPu/oPWIsljTmlj58UNy95+JzXwHrClQA51bvfZUgj3l7kaUiwCCBYCFql2nSrMwdlFgexphs3faJbHiqsEDrw==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-aPu/oPWIsljTmlj58UNy95+JzXwHrClQA51bvfZUgj3l7kaUiwCCBYCFql2nSrMwdlFgexphs3faJbHiqsEDrw==}
+ engines: {node: '>=10'}
'@graphile/lru@5.0.0':
- resolution:
- {
- integrity: sha512-NeRBDdUd/l4H284HrYL2/wNHv/FmW5stAMPFAiBZanLHwq9J3suZTtyN5CwTxUFA/vgqzu0B1/9XtIEaJYEKig==,
- }
- engines: { node: '>=22' }
+ resolution: {integrity: sha512-NeRBDdUd/l4H284HrYL2/wNHv/FmW5stAMPFAiBZanLHwq9J3suZTtyN5CwTxUFA/vgqzu0B1/9XtIEaJYEKig==}
+ engines: {node: '>=22'}
'@graphile/simplify-inflection@8.0.0':
- resolution:
- {
- integrity: sha512-fzC4zz456Km8oZQMiBU03kgSRQxT+aS3sEdEQIcvkfdUhJKlIk81ll8UaxLLkl/WRb7TByNM1VfrY9mEa4w9kw==,
- }
+ resolution: {integrity: sha512-fzC4zz456Km8oZQMiBU03kgSRQxT+aS3sEdEQIcvkfdUhJKlIk81ll8UaxLLkl/WRb7TByNM1VfrY9mEa4w9kw==}
'@graphiql/plugin-doc-explorer@0.4.1':
- resolution:
- {
- integrity: sha512-+ram1dDDGMqJn/f9n5I8E6grTvxcM9JZYt/HhtYLuCvkN8kERI6/E3zBHBshhIUnQZoXioZ03fAzXg7JOn0Kyg==,
- }
+ resolution: {integrity: sha512-+ram1dDDGMqJn/f9n5I8E6grTvxcM9JZYt/HhtYLuCvkN8kERI6/E3zBHBshhIUnQZoXioZ03fAzXg7JOn0Kyg==}
peerDependencies:
'@graphiql/react': ^0.37.0
graphql: 16.13.0
@@ -4324,10 +3827,7 @@ packages:
react-dom: ^18 || ^19
'@graphiql/plugin-history@0.4.1':
- resolution:
- {
- integrity: sha512-UyGI/Nm5tzKNMB71li41p6TfkthLqHkmNi9CgHzAM1zKgPIrtSq7Q8WCWKHLOEB5n4/8X8sXFeyQfHgnGYTXYg==,
- }
+ resolution: {integrity: sha512-UyGI/Nm5tzKNMB71li41p6TfkthLqHkmNi9CgHzAM1zKgPIrtSq7Q8WCWKHLOEB5n4/8X8sXFeyQfHgnGYTXYg==}
peerDependencies:
'@graphiql/react': ^0.37.0
react: ^18 || ^19
@@ -4335,10 +3835,7 @@ packages:
react-dom: ^18 || ^19
'@graphiql/react@0.37.3':
- resolution:
- {
- integrity: sha512-rNJjwsYGhcZRdZ2FnyU6ss06xQaZ4UordyvOhp7+b/bEqQiEBpMOLJjuUr48Z6T7zEbZBnzCJpIJyXNqlcfQeA==,
- }
+ resolution: {integrity: sha512-rNJjwsYGhcZRdZ2FnyU6ss06xQaZ4UordyvOhp7+b/bEqQiEBpMOLJjuUr48Z6T7zEbZBnzCJpIJyXNqlcfQeA==}
peerDependencies:
graphql: 16.13.0
react: ^18 || ^19
@@ -4346,10 +3843,7 @@ packages:
react-dom: ^18 || ^19
'@graphiql/toolkit@0.11.3':
- resolution:
- {
- integrity: sha512-Glf0fK1cdHLNq52UWPzfSrYIJuNxy8h4451Pw1ZVpJ7dtU+tm7GVVC64UjEDQ/v2j3fnG4cX8jvR75IvfL6nzQ==,
- }
+ resolution: {integrity: sha512-Glf0fK1cdHLNq52UWPzfSrYIJuNxy8h4451Pw1ZVpJ7dtU+tm7GVVC64UjEDQ/v2j3fnG4cX8jvR75IvfL6nzQ==}
peerDependencies:
graphql: 16.13.0
graphql-ws: '>= 4.5.0'
@@ -4358,64 +3852,40 @@ packages:
optional: true
'@graphql-typed-document-node/core@3.2.0':
- resolution:
- {
- integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==,
- }
+ resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==}
peerDependencies:
graphql: 16.13.0
'@headlessui/react@2.2.9':
- resolution:
- {
- integrity: sha512-Mb+Un58gwBn0/yWZfyrCh0TJyurtT+dETj7YHleylHk5od3dv2XqETPGWMyQ5/7sYN7oWdyM1u9MvC0OC8UmzQ==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-Mb+Un58gwBn0/yWZfyrCh0TJyurtT+dETj7YHleylHk5od3dv2XqETPGWMyQ5/7sYN7oWdyM1u9MvC0OC8UmzQ==}
+ engines: {node: '>=10'}
peerDependencies:
react: ^18 || ^19 || ^19.0.0-rc
react-dom: ^18 || ^19 || ^19.0.0-rc
'@humanfs/core@0.19.1':
- resolution:
- {
- integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==,
- }
- engines: { node: '>=18.18.0' }
+ resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
+ engines: {node: '>=18.18.0'}
'@humanfs/node@0.16.7':
- resolution:
- {
- integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==,
- }
- engines: { node: '>=18.18.0' }
+ resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==}
+ engines: {node: '>=18.18.0'}
'@humanwhocodes/module-importer@1.0.1':
- resolution:
- {
- integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==,
- }
- engines: { node: '>=12.22' }
+ resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
+ engines: {node: '>=12.22'}
'@humanwhocodes/retry@0.4.3':
- resolution:
- {
- integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==,
- }
- engines: { node: '>=18.18' }
+ resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==}
+ engines: {node: '>=18.18'}
'@hutson/parse-repository-url@3.0.2':
- resolution:
- {
- integrity: sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==}
+ engines: {node: '>=6.9.0'}
'@inquirer/external-editor@1.0.3':
- resolution:
- {
- integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==}
+ engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
@@ -4423,10 +3893,7 @@ packages:
optional: true
'@inquirerer/test@1.3.5':
- resolution:
- {
- integrity: sha512-oA8rqZTDAqgf3GJ48KFX6/cLrnm9D8qzqseU1mJuFibDheb2TpGzR7cshCwQtnc4zuOEAl5QyLrg8BHhX5DR4Q==,
- }
+ resolution: {integrity: sha512-oA8rqZTDAqgf3GJ48KFX6/cLrnm9D8qzqseU1mJuFibDheb2TpGzR7cshCwQtnc4zuOEAl5QyLrg8BHhX5DR4Q==}
peerDependencies:
jest: '>=29.0.0'
peerDependenciesMeta:
@@ -4434,58 +3901,34 @@ packages:
optional: true
'@inquirerer/utils@3.3.5':
- resolution:
- {
- integrity: sha512-ENzkQImZ59Y2wegY4ng9MsCLe2CZjWGO6WXFpoppGQmZqgIOAzsmGHpdQxORRS+I4RnzA/7Tr+ZUJ6bSpC7JWg==,
- }
+ resolution: {integrity: sha512-ENzkQImZ59Y2wegY4ng9MsCLe2CZjWGO6WXFpoppGQmZqgIOAzsmGHpdQxORRS+I4RnzA/7Tr+ZUJ6bSpC7JWg==}
'@isaacs/cliui@8.0.2':
- resolution:
- {
- integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==,
- }
- engines: { node: '>=12' }
+ resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
+ engines: {node: '>=12'}
'@isaacs/cliui@9.0.0':
- resolution:
- {
- integrity: sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==}
+ engines: {node: '>=18'}
'@isaacs/string-locale-compare@1.1.0':
- resolution:
- {
- integrity: sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==,
- }
+ resolution: {integrity: sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==}
'@istanbuljs/load-nyc-config@1.1.0':
- resolution:
- {
- integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==}
+ engines: {node: '>=8'}
'@istanbuljs/schema@0.1.3':
- resolution:
- {
- integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==}
+ engines: {node: '>=8'}
'@jest/console@30.3.0':
- resolution:
- {
- integrity: sha512-PAwCvFJ4696XP2qZj+LAn1BWjZaJ6RjG6c7/lkMaUJnkyMS34ucuIsfqYvfskVNvUI27R/u4P1HMYFnlVXG/Ww==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-PAwCvFJ4696XP2qZj+LAn1BWjZaJ6RjG6c7/lkMaUJnkyMS34ucuIsfqYvfskVNvUI27R/u4P1HMYFnlVXG/Ww==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
'@jest/core@30.3.0':
- resolution:
- {
- integrity: sha512-U5mVPsBxLSO6xYbf+tgkymLx+iAhvZX43/xI1+ej2ZOPnPdkdO1CzDmFKh2mZBn2s4XZixszHeQnzp1gm/DIxw==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-U5mVPsBxLSO6xYbf+tgkymLx+iAhvZX43/xI1+ej2ZOPnPdkdO1CzDmFKh2mZBn2s4XZixszHeQnzp1gm/DIxw==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
peerDependencies:
node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
peerDependenciesMeta:
@@ -4493,81 +3936,48 @@ packages:
optional: true
'@jest/diff-sequences@30.0.1':
- resolution:
- {
- integrity: sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
'@jest/diff-sequences@30.3.0':
- resolution:
- {
- integrity: sha512-cG51MVnLq1ecVUaQ3fr6YuuAOitHK1S4WUJHnsPFE/quQr33ADUx1FfrTCpMCRxvy0Yr9BThKpDjSlcTi91tMA==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-cG51MVnLq1ecVUaQ3fr6YuuAOitHK1S4WUJHnsPFE/quQr33ADUx1FfrTCpMCRxvy0Yr9BThKpDjSlcTi91tMA==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
'@jest/environment@30.3.0':
- resolution:
- {
- integrity: sha512-SlLSF4Be735yQXyh2+mctBOzNDx5s5uLv88/j8Qn1wH679PDcwy67+YdADn8NJnGjzlXtN62asGH/T4vWOkfaw==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-SlLSF4Be735yQXyh2+mctBOzNDx5s5uLv88/j8Qn1wH679PDcwy67+YdADn8NJnGjzlXtN62asGH/T4vWOkfaw==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
'@jest/expect-utils@30.2.0':
- resolution:
- {
- integrity: sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
'@jest/expect-utils@30.3.0':
- resolution:
- {
- integrity: sha512-j0+W5iQQ8hBh7tHZkTQv3q2Fh/M7Je72cIsYqC4OaktgtO7v1So9UTjp6uPBHIaB6beoF/RRsCgMJKvti0wADA==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-j0+W5iQQ8hBh7tHZkTQv3q2Fh/M7Je72cIsYqC4OaktgtO7v1So9UTjp6uPBHIaB6beoF/RRsCgMJKvti0wADA==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
'@jest/expect@30.3.0':
- resolution:
- {
- integrity: sha512-76Nlh4xJxk2D/9URCn3wFi98d2hb19uWE1idLsTt2ywhvdOldbw3S570hBgn25P4ICUZ/cBjybrBex2g17IDbg==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-76Nlh4xJxk2D/9URCn3wFi98d2hb19uWE1idLsTt2ywhvdOldbw3S570hBgn25P4ICUZ/cBjybrBex2g17IDbg==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
'@jest/fake-timers@30.3.0':
- resolution:
- {
- integrity: sha512-WUQDs8SOP9URStX1DzhD425CqbN/HxUYCTwVrT8sTVBfMvFqYt/s61EK5T05qnHu0po6RitXIvP9otZxYDzTGQ==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-WUQDs8SOP9URStX1DzhD425CqbN/HxUYCTwVrT8sTVBfMvFqYt/s61EK5T05qnHu0po6RitXIvP9otZxYDzTGQ==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
'@jest/get-type@30.1.0':
- resolution:
- {
- integrity: sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
'@jest/globals@30.3.0':
- resolution:
- {
- integrity: sha512-+owLCBBdfpgL3HU+BD5etr1SvbXpSitJK0is1kiYjJxAAJggYMRQz5hSdd5pq1sSggfxPbw2ld71pt4x5wwViA==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-+owLCBBdfpgL3HU+BD5etr1SvbXpSitJK0is1kiYjJxAAJggYMRQz5hSdd5pq1sSggfxPbw2ld71pt4x5wwViA==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
'@jest/pattern@30.0.1':
- resolution:
- {
- integrity: sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
'@jest/reporters@30.3.0':
- resolution:
- {
- integrity: sha512-a09z89S+PkQnL055bVj8+pe2Caed2PBOaczHcXCykW5ngxX9EWx/1uAwncxc/HiU0oZqfwseMjyhxgRjS49qPw==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-a09z89S+PkQnL055bVj8+pe2Caed2PBOaczHcXCykW5ngxX9EWx/1uAwncxc/HiU0oZqfwseMjyhxgRjS49qPw==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
peerDependencies:
node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
peerDependenciesMeta:
@@ -4575,850 +3985,514 @@ packages:
optional: true
'@jest/schemas@29.6.3':
- resolution:
- {
- integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==,
- }
- engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 }
+ resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
'@jest/schemas@30.0.5':
- resolution:
- {
- integrity: sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
'@jest/snapshot-utils@30.3.0':
- resolution:
- {
- integrity: sha512-ORbRN9sf5PP82v3FXNSwmO1OTDR2vzR2YTaR+E3VkSBZ8zadQE6IqYdYEeFH1NIkeB2HIGdF02dapb6K0Mj05g==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-ORbRN9sf5PP82v3FXNSwmO1OTDR2vzR2YTaR+E3VkSBZ8zadQE6IqYdYEeFH1NIkeB2HIGdF02dapb6K0Mj05g==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
'@jest/source-map@30.0.1':
- resolution:
- {
- integrity: sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
'@jest/test-result@30.3.0':
- resolution:
- {
- integrity: sha512-e/52nJGuD74AKTSe0P4y5wFRlaXP0qmrS17rqOMHeSwm278VyNyXE3gFO/4DTGF9w+65ra3lo3VKj0LBrzmgdQ==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-e/52nJGuD74AKTSe0P4y5wFRlaXP0qmrS17rqOMHeSwm278VyNyXE3gFO/4DTGF9w+65ra3lo3VKj0LBrzmgdQ==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
'@jest/test-sequencer@30.3.0':
- resolution:
- {
- integrity: sha512-dgbWy9b8QDlQeRZcv7LNF+/jFiiYHTKho1xirauZ7kVwY7avjFF6uTT0RqlgudB5OuIPagFdVtfFMosjVbk1eA==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-dgbWy9b8QDlQeRZcv7LNF+/jFiiYHTKho1xirauZ7kVwY7avjFF6uTT0RqlgudB5OuIPagFdVtfFMosjVbk1eA==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
'@jest/transform@30.3.0':
- resolution:
- {
- integrity: sha512-TLKY33fSLVd/lKB2YI1pH69ijyUblO/BQvCj566YvnwuzoTNr648iE0j22vRvVNk2HsPwByPxATg3MleS3gf5A==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-TLKY33fSLVd/lKB2YI1pH69ijyUblO/BQvCj566YvnwuzoTNr648iE0j22vRvVNk2HsPwByPxATg3MleS3gf5A==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
'@jest/types@26.6.2':
- resolution:
- {
- integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==,
- }
- engines: { node: '>= 10.14.2' }
+ resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==}
+ engines: {node: '>= 10.14.2'}
'@jest/types@30.2.0':
- resolution:
- {
- integrity: sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
'@jest/types@30.3.0':
- resolution:
- {
- integrity: sha512-JHm87k7bA33hpBngtU8h6UBub/fqqA9uXfw+21j5Hmk7ooPHlboRNxHq0JcMtC+n8VJGP1mcfnD3Mk+XKe1oSw==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-JHm87k7bA33hpBngtU8h6UBub/fqqA9uXfw+21j5Hmk7ooPHlboRNxHq0JcMtC+n8VJGP1mcfnD3Mk+XKe1oSw==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
'@jridgewell/gen-mapping@0.3.13':
- resolution:
- {
- integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==,
- }
+ resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
'@jridgewell/remapping@2.3.5':
- resolution:
- {
- integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==,
- }
+ resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==}
'@jridgewell/resolve-uri@3.1.2':
- resolution:
- {
- integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==,
- }
- engines: { node: '>=6.0.0' }
+ resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
+ engines: {node: '>=6.0.0'}
'@jridgewell/sourcemap-codec@1.5.5':
- resolution:
- {
- integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==,
- }
+ resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
'@jridgewell/trace-mapping@0.3.31':
- resolution:
- {
- integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==,
- }
+ resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
'@jridgewell/trace-mapping@0.3.9':
- resolution:
- {
- integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==,
- }
+ resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
'@launchql/mjml@0.1.1':
- resolution:
- {
- integrity: sha512-6+OEmECuu5atRZ43ovsMfFs+T4NWNaKbzNG0uA8HYaBSn3kWR7GH3QnmL3lCIeymLtvgua8aZChYvg6SxrQdnw==,
- }
+ resolution: {integrity: sha512-6+OEmECuu5atRZ43ovsMfFs+T4NWNaKbzNG0uA8HYaBSn3kWR7GH3QnmL3lCIeymLtvgua8aZChYvg6SxrQdnw==}
peerDependencies:
react: '>=16'
react-dom: '>=16'
'@launchql/protobufjs@7.2.6':
- resolution:
- {
- integrity: sha512-vwi1nG2/heVFsIMHQU1KxTjUp5c757CTtRAZn/jutApCkFlle1iv8tzM/DHlSZJKDldxaYqnNYTg0pTyp8Bbtg==,
- }
- engines: { node: '>=12.0.0' }
+ resolution: {integrity: sha512-vwi1nG2/heVFsIMHQU1KxTjUp5c757CTtRAZn/jutApCkFlle1iv8tzM/DHlSZJKDldxaYqnNYTg0pTyp8Bbtg==}
+ engines: {node: '>=12.0.0'}
'@launchql/styled-email@0.1.0':
- resolution:
- {
- integrity: sha512-ISjzsY+3EOH/qAKHPq3evw9QmmEyA8Vw+0pUf+Zf8l4/rAHJJKrSa/uPiaUf2Abi8yAZKyx2uyaZq4ExNNkD+w==,
- }
+ resolution: {integrity: sha512-ISjzsY+3EOH/qAKHPq3evw9QmmEyA8Vw+0pUf+Zf8l4/rAHJJKrSa/uPiaUf2Abi8yAZKyx2uyaZq4ExNNkD+w==}
peerDependencies:
react: '>=16'
react-dom: '>=16'
'@lerna/create@8.2.4':
- resolution:
- {
- integrity: sha512-A8AlzetnS2WIuhijdAzKUyFpR5YbLLfV3luQ4lzBgIBgRfuoBDZeF+RSZPhra+7A6/zTUlrbhKZIOi/MNhqgvQ==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-A8AlzetnS2WIuhijdAzKUyFpR5YbLLfV3luQ4lzBgIBgRfuoBDZeF+RSZPhra+7A6/zTUlrbhKZIOi/MNhqgvQ==}
+ engines: {node: '>=18.0.0'}
deprecated: This package is an implementation detail of Lerna and is no longer published separately.
'@n1ru4l/push-pull-async-iterable-iterator@3.2.0':
- resolution:
- {
- integrity: sha512-3fkKj25kEjsfObL6IlKPAlHYPq/oYwUkkQ03zsTTiDjD7vg/RxjdiLeCydqtxHZP0JgsXL3D/X5oAkMGzuUp/Q==,
- }
- engines: { node: '>=12' }
+ resolution: {integrity: sha512-3fkKj25kEjsfObL6IlKPAlHYPq/oYwUkkQ03zsTTiDjD7vg/RxjdiLeCydqtxHZP0JgsXL3D/X5oAkMGzuUp/Q==}
+ engines: {node: '>=12'}
'@napi-rs/wasm-runtime@0.2.12':
- resolution:
- {
- integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==,
- }
+ resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==}
'@napi-rs/wasm-runtime@0.2.4':
- resolution:
- {
- integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==,
- }
+ resolution: {integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==}
'@noble/hashes@1.8.0':
- resolution:
- {
- integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==,
- }
- engines: { node: ^14.21.3 || >=16 }
+ resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==}
+ engines: {node: ^14.21.3 || >=16}
'@nodelib/fs.scandir@2.1.5':
- resolution:
- {
- integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==,
- }
- engines: { node: '>= 8' }
+ resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
+ engines: {node: '>= 8'}
'@nodelib/fs.stat@2.0.5':
- resolution:
- {
- integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==,
- }
- engines: { node: '>= 8' }
+ 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' }
+ resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
+ engines: {node: '>= 8'}
'@npmcli/agent@2.2.2':
- resolution:
- {
- integrity: sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==,
- }
- engines: { node: ^16.14.0 || >=18.0.0 }
+ resolution: {integrity: sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==}
+ engines: {node: ^16.14.0 || >=18.0.0}
'@npmcli/arborist@7.5.4':
- resolution:
- {
- integrity: sha512-nWtIc6QwwoUORCRNzKx4ypHqCk3drI+5aeYdMTQQiRCcn4lOOgfQh7WyZobGYTxXPSq1VwV53lkpN/BRlRk08g==,
- }
- engines: { node: ^16.14.0 || >=18.0.0 }
+ resolution: {integrity: sha512-nWtIc6QwwoUORCRNzKx4ypHqCk3drI+5aeYdMTQQiRCcn4lOOgfQh7WyZobGYTxXPSq1VwV53lkpN/BRlRk08g==}
+ engines: {node: ^16.14.0 || >=18.0.0}
hasBin: true
'@npmcli/fs@3.1.1':
- resolution:
- {
- integrity: sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==,
- }
- engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+ resolution: {integrity: sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
'@npmcli/git@5.0.8':
- resolution:
- {
- integrity: sha512-liASfw5cqhjNW9UFd+ruwwdEf/lbOAQjLL2XY2dFW/bkJheXDYZgOyul/4gVvEV4BWkTXjYGmDqMw9uegdbJNQ==,
- }
- engines: { node: ^16.14.0 || >=18.0.0 }
+ resolution: {integrity: sha512-liASfw5cqhjNW9UFd+ruwwdEf/lbOAQjLL2XY2dFW/bkJheXDYZgOyul/4gVvEV4BWkTXjYGmDqMw9uegdbJNQ==}
+ engines: {node: ^16.14.0 || >=18.0.0}
'@npmcli/installed-package-contents@2.1.0':
- resolution:
- {
- integrity: sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w==,
- }
- engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+ resolution: {integrity: sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
hasBin: true
'@npmcli/map-workspaces@3.0.6':
- resolution:
- {
- integrity: sha512-tkYs0OYnzQm6iIRdfy+LcLBjcKuQCeE5YLb8KnrIlutJfheNaPvPpgoFEyEFgbjzl5PLZ3IA/BWAwRU0eHuQDA==,
- }
- engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+ resolution: {integrity: sha512-tkYs0OYnzQm6iIRdfy+LcLBjcKuQCeE5YLb8KnrIlutJfheNaPvPpgoFEyEFgbjzl5PLZ3IA/BWAwRU0eHuQDA==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
'@npmcli/metavuln-calculator@7.1.1':
- resolution:
- {
- integrity: sha512-Nkxf96V0lAx3HCpVda7Vw4P23RILgdi/5K1fmj2tZkWIYLpXAN8k2UVVOsW16TsS5F8Ws2I7Cm+PU1/rsVF47g==,
- }
- engines: { node: ^16.14.0 || >=18.0.0 }
+ resolution: {integrity: sha512-Nkxf96V0lAx3HCpVda7Vw4P23RILgdi/5K1fmj2tZkWIYLpXAN8k2UVVOsW16TsS5F8Ws2I7Cm+PU1/rsVF47g==}
+ engines: {node: ^16.14.0 || >=18.0.0}
'@npmcli/name-from-folder@2.0.0':
- resolution:
- {
- integrity: sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==,
- }
- engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+ resolution: {integrity: sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
'@npmcli/node-gyp@3.0.0':
- resolution:
- {
- integrity: sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==,
- }
- engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+ resolution: {integrity: sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
'@npmcli/package-json@5.2.0':
- resolution:
- {
- integrity: sha512-qe/kiqqkW0AGtvBjL8TJKZk/eBBSpnJkUWvHdQ9jM2lKHXRYYJuyNpJPlJw3c8QjC2ow6NZYiLExhUaeJelbxQ==,
- }
- engines: { node: ^16.14.0 || >=18.0.0 }
+ resolution: {integrity: sha512-qe/kiqqkW0AGtvBjL8TJKZk/eBBSpnJkUWvHdQ9jM2lKHXRYYJuyNpJPlJw3c8QjC2ow6NZYiLExhUaeJelbxQ==}
+ engines: {node: ^16.14.0 || >=18.0.0}
'@npmcli/promise-spawn@7.0.2':
- resolution:
- {
- integrity: sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ==,
- }
- engines: { node: ^16.14.0 || >=18.0.0 }
+ resolution: {integrity: sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ==}
+ engines: {node: ^16.14.0 || >=18.0.0}
'@npmcli/query@3.1.0':
- resolution:
- {
- integrity: sha512-C/iR0tk7KSKGldibYIB9x8GtO/0Bd0I2mhOaDb8ucQL/bQVTmGoeREaFj64Z5+iCBRf3dQfed0CjJL7I8iTkiQ==,
- }
- engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+ resolution: {integrity: sha512-C/iR0tk7KSKGldibYIB9x8GtO/0Bd0I2mhOaDb8ucQL/bQVTmGoeREaFj64Z5+iCBRf3dQfed0CjJL7I8iTkiQ==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
'@npmcli/redact@2.0.1':
- resolution:
- {
- integrity: sha512-YgsR5jCQZhVmTJvjduTOIHph0L73pK8xwMVaDY0PatySqVM9AZj93jpoXYSJqfHFxFkN9dmqTw6OiqExsS3LPw==,
- }
- engines: { node: ^16.14.0 || >=18.0.0 }
+ resolution: {integrity: sha512-YgsR5jCQZhVmTJvjduTOIHph0L73pK8xwMVaDY0PatySqVM9AZj93jpoXYSJqfHFxFkN9dmqTw6OiqExsS3LPw==}
+ engines: {node: ^16.14.0 || >=18.0.0}
'@npmcli/run-script@8.1.0':
- resolution:
- {
- integrity: sha512-y7efHHwghQfk28G2z3tlZ67pLG0XdfYbcVG26r7YIXALRsrVQcTq4/tdenSmdOrEsNahIYA/eh8aEVROWGFUDg==,
- }
- engines: { node: ^16.14.0 || >=18.0.0 }
+ resolution: {integrity: sha512-y7efHHwghQfk28G2z3tlZ67pLG0XdfYbcVG26r7YIXALRsrVQcTq4/tdenSmdOrEsNahIYA/eh8aEVROWGFUDg==}
+ engines: {node: ^16.14.0 || >=18.0.0}
'@nx/devkit@20.8.3':
- resolution:
- {
- integrity: sha512-5lbfJ6ICFOiGeirldQOU5fQ/W/VQ8L3dfWnmHG4UgpWSLoK/YFdRf4lTB4rS0aDXsBL0gyWABz3sZGLPGNYnPA==,
- }
+ resolution: {integrity: sha512-5lbfJ6ICFOiGeirldQOU5fQ/W/VQ8L3dfWnmHG4UgpWSLoK/YFdRf4lTB4rS0aDXsBL0gyWABz3sZGLPGNYnPA==}
peerDependencies:
nx: '>= 19 <= 21'
'@nx/nx-darwin-arm64@20.8.3':
- resolution:
- {
- integrity: sha512-BeYnPAcnaerg6q+qR0bAb0nebwwrsvm4STSVqqVlaqLmmQpU3Bfpx44CEa5d6T9b0V11ZqVE/bkmRhMqhUcrhw==,
- }
- engines: { node: '>= 10' }
+ resolution: {integrity: sha512-BeYnPAcnaerg6q+qR0bAb0nebwwrsvm4STSVqqVlaqLmmQpU3Bfpx44CEa5d6T9b0V11ZqVE/bkmRhMqhUcrhw==}
+ engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
'@nx/nx-darwin-x64@20.8.3':
- resolution:
- {
- integrity: sha512-RIFg1VkQ4jhI+ErqEZuIeGBcJGD8t+u9J5CdQBDIASd8QRhtudBkiYLYCJb+qaQly09G7nVfxuyItlS2uRW3qA==,
- }
- engines: { node: '>= 10' }
+ resolution: {integrity: sha512-RIFg1VkQ4jhI+ErqEZuIeGBcJGD8t+u9J5CdQBDIASd8QRhtudBkiYLYCJb+qaQly09G7nVfxuyItlS2uRW3qA==}
+ engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
'@nx/nx-freebsd-x64@20.8.3':
- resolution:
- {
- integrity: sha512-boQTgMUdnqpZhHMrV/xgnp/dTg5dfxw8I4d16NBwmW4j+Sez7zi/dydgsJpfZsj8TicOHvPu6KK4W5wzp82NPw==,
- }
- engines: { node: '>= 10' }
+ resolution: {integrity: sha512-boQTgMUdnqpZhHMrV/xgnp/dTg5dfxw8I4d16NBwmW4j+Sez7zi/dydgsJpfZsj8TicOHvPu6KK4W5wzp82NPw==}
+ engines: {node: '>= 10'}
cpu: [x64]
os: [freebsd]
'@nx/nx-linux-arm-gnueabihf@20.8.3':
- resolution:
- {
- integrity: sha512-wpiNyY1igx1rLN3EsTLum2lDtblFijdBZB9/9u/6UDub4z9CaQ4yaC4h9n5v7yFYILwfL44YTsQKzrE+iv0y1Q==,
- }
- engines: { node: '>= 10' }
+ resolution: {integrity: sha512-wpiNyY1igx1rLN3EsTLum2lDtblFijdBZB9/9u/6UDub4z9CaQ4yaC4h9n5v7yFYILwfL44YTsQKzrE+iv0y1Q==}
+ engines: {node: '>= 10'}
cpu: [arm]
os: [linux]
'@nx/nx-linux-arm64-gnu@20.8.3':
- resolution:
- {
- integrity: sha512-nbi/eZtJfWxuDwdUCiP+VJolFubtrz6XxVtB26eMAkODnREOKELHZtMOrlm8JBZCdtWCvTqibq9Az74XsqSfdA==,
- }
- engines: { node: '>= 10' }
+ resolution: {integrity: sha512-nbi/eZtJfWxuDwdUCiP+VJolFubtrz6XxVtB26eMAkODnREOKELHZtMOrlm8JBZCdtWCvTqibq9Az74XsqSfdA==}
+ engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
'@nx/nx-linux-arm64-musl@20.8.3':
- resolution:
- {
- integrity: sha512-LTTGzI8YVPlF1v0YlVf+exM+1q7rpsiUbjTTHJcfHFRU5t4BsiZD54K19Y1UBg1XFx5cwhEaIomSmJ88RwPPVQ==,
- }
- engines: { node: '>= 10' }
+ resolution: {integrity: sha512-LTTGzI8YVPlF1v0YlVf+exM+1q7rpsiUbjTTHJcfHFRU5t4BsiZD54K19Y1UBg1XFx5cwhEaIomSmJ88RwPPVQ==}
+ engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
+ libc: [musl]
'@nx/nx-linux-x64-gnu@20.8.3':
- resolution:
- {
- integrity: sha512-SlA4GtXvQbSzSIWLgiIiLBOjdINPOUR/im+TUbaEMZ8wiGrOY8cnk0PVt95TIQJVBeXBCeb5HnoY0lHJpMOODg==,
- }
- engines: { node: '>= 10' }
+ resolution: {integrity: sha512-SlA4GtXvQbSzSIWLgiIiLBOjdINPOUR/im+TUbaEMZ8wiGrOY8cnk0PVt95TIQJVBeXBCeb5HnoY0lHJpMOODg==}
+ engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
+ libc: [glibc]
'@nx/nx-linux-x64-musl@20.8.3':
- resolution:
- {
- integrity: sha512-MNzkEwPktp5SQH9dJDH2wP9hgG9LsBDhKJXJfKw6sUI/6qz5+/aAjFziKy+zBnhU4AO1yXt5qEWzR8lDcIriVQ==,
- }
- engines: { node: '>= 10' }
+ resolution: {integrity: sha512-MNzkEwPktp5SQH9dJDH2wP9hgG9LsBDhKJXJfKw6sUI/6qz5+/aAjFziKy+zBnhU4AO1yXt5qEWzR8lDcIriVQ==}
+ engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
+ libc: [musl]
'@nx/nx-win32-arm64-msvc@20.8.3':
- resolution:
- {
- integrity: sha512-qUV7CyXKwRCM/lkvyS6Xa1MqgAuK5da6w27RAehh7LATBUKn1I4/M7DGn6L7ERCxpZuh1TrDz9pUzEy0R+Ekkg==,
- }
- engines: { node: '>= 10' }
+ resolution: {integrity: sha512-qUV7CyXKwRCM/lkvyS6Xa1MqgAuK5da6w27RAehh7LATBUKn1I4/M7DGn6L7ERCxpZuh1TrDz9pUzEy0R+Ekkg==}
+ engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
'@nx/nx-win32-x64-msvc@20.8.3':
- resolution:
- {
- integrity: sha512-gX1G8u6W6EPX6PO/wv07+B++UHyCHBXyVWXITA3Kv6HoSajOxIa2Kk1rv1iDQGmX1WWxBaj3bUyYJAFBDITe4w==,
- }
- engines: { node: '>= 10' }
+ resolution: {integrity: sha512-gX1G8u6W6EPX6PO/wv07+B++UHyCHBXyVWXITA3Kv6HoSajOxIa2Kk1rv1iDQGmX1WWxBaj3bUyYJAFBDITe4w==}
+ engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
'@octokit/auth-token@4.0.0':
- resolution:
- {
- integrity: sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==,
- }
- engines: { node: '>= 18' }
+ resolution: {integrity: sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==}
+ engines: {node: '>= 18'}
'@octokit/core@5.2.2':
- resolution:
- {
- integrity: sha512-/g2d4sW9nUDJOMz3mabVQvOGhVa4e/BN/Um7yca9Bb2XTzPPnfTWHWQg+IsEYO7M3Vx+EXvaM/I2pJWIMun1bg==,
- }
- engines: { node: '>= 18' }
+ resolution: {integrity: sha512-/g2d4sW9nUDJOMz3mabVQvOGhVa4e/BN/Um7yca9Bb2XTzPPnfTWHWQg+IsEYO7M3Vx+EXvaM/I2pJWIMun1bg==}
+ engines: {node: '>= 18'}
'@octokit/endpoint@9.0.6':
- resolution:
- {
- integrity: sha512-H1fNTMA57HbkFESSt3Y9+FBICv+0jFceJFPWDePYlR/iMGrwM5ph+Dd4XRQs+8X+PUFURLQgX9ChPfhJ/1uNQw==,
- }
- engines: { node: '>= 18' }
+ resolution: {integrity: sha512-H1fNTMA57HbkFESSt3Y9+FBICv+0jFceJFPWDePYlR/iMGrwM5ph+Dd4XRQs+8X+PUFURLQgX9ChPfhJ/1uNQw==}
+ engines: {node: '>= 18'}
'@octokit/graphql@7.1.1':
- resolution:
- {
- integrity: sha512-3mkDltSfcDUoa176nlGoA32RGjeWjl3K7F/BwHwRMJUW/IteSa4bnSV8p2ThNkcIcZU2umkZWxwETSSCJf2Q7g==,
- }
- engines: { node: '>= 18' }
+ resolution: {integrity: sha512-3mkDltSfcDUoa176nlGoA32RGjeWjl3K7F/BwHwRMJUW/IteSa4bnSV8p2ThNkcIcZU2umkZWxwETSSCJf2Q7g==}
+ engines: {node: '>= 18'}
'@octokit/openapi-types@24.2.0':
- resolution:
- {
- integrity: sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==,
- }
+ resolution: {integrity: sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==}
'@octokit/plugin-enterprise-rest@6.0.1':
- resolution:
- {
- integrity: sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==,
- }
+ resolution: {integrity: sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==}
'@octokit/plugin-paginate-rest@11.4.4-cjs.2':
- resolution:
- {
- integrity: sha512-2dK6z8fhs8lla5PaOTgqfCGBxgAv/le+EhPs27KklPhm1bKObpu6lXzwfUEQ16ajXzqNrKMujsFyo9K2eaoISw==,
- }
- engines: { node: '>= 18' }
+ resolution: {integrity: sha512-2dK6z8fhs8lla5PaOTgqfCGBxgAv/le+EhPs27KklPhm1bKObpu6lXzwfUEQ16ajXzqNrKMujsFyo9K2eaoISw==}
+ engines: {node: '>= 18'}
peerDependencies:
'@octokit/core': '5'
'@octokit/plugin-request-log@4.0.1':
- resolution:
- {
- integrity: sha512-GihNqNpGHorUrO7Qa9JbAl0dbLnqJVrV8OXe2Zm5/Y4wFkZQDfTreBzVmiRfJVfE4mClXdihHnbpyyO9FSX4HA==,
- }
- engines: { node: '>= 18' }
+ resolution: {integrity: sha512-GihNqNpGHorUrO7Qa9JbAl0dbLnqJVrV8OXe2Zm5/Y4wFkZQDfTreBzVmiRfJVfE4mClXdihHnbpyyO9FSX4HA==}
+ engines: {node: '>= 18'}
peerDependencies:
'@octokit/core': '5'
'@octokit/plugin-rest-endpoint-methods@13.3.2-cjs.1':
- resolution:
- {
- integrity: sha512-VUjIjOOvF2oELQmiFpWA1aOPdawpyaCUqcEBc/UOUnj3Xp6DJGrJ1+bjUIIDzdHjnFNO6q57ODMfdEZnoBkCwQ==,
- }
- engines: { node: '>= 18' }
+ resolution: {integrity: sha512-VUjIjOOvF2oELQmiFpWA1aOPdawpyaCUqcEBc/UOUnj3Xp6DJGrJ1+bjUIIDzdHjnFNO6q57ODMfdEZnoBkCwQ==}
+ engines: {node: '>= 18'}
peerDependencies:
'@octokit/core': ^5
'@octokit/request-error@5.1.1':
- resolution:
- {
- integrity: sha512-v9iyEQJH6ZntoENr9/yXxjuezh4My67CBSu9r6Ve/05Iu5gNgnisNWOsoJHTP6k0Rr0+HQIpnH+kyammu90q/g==,
- }
- engines: { node: '>= 18' }
+ resolution: {integrity: sha512-v9iyEQJH6ZntoENr9/yXxjuezh4My67CBSu9r6Ve/05Iu5gNgnisNWOsoJHTP6k0Rr0+HQIpnH+kyammu90q/g==}
+ engines: {node: '>= 18'}
'@octokit/request@8.4.1':
- resolution:
- {
- integrity: sha512-qnB2+SY3hkCmBxZsR/MPCybNmbJe4KAlfWErXq+rBKkQJlbjdJeS85VI9r8UqeLYLvnAenU8Q1okM/0MBsAGXw==,
- }
- engines: { node: '>= 18' }
+ resolution: {integrity: sha512-qnB2+SY3hkCmBxZsR/MPCybNmbJe4KAlfWErXq+rBKkQJlbjdJeS85VI9r8UqeLYLvnAenU8Q1okM/0MBsAGXw==}
+ engines: {node: '>= 18'}
'@octokit/rest@20.1.2':
- resolution:
- {
- integrity: sha512-GmYiltypkHHtihFwPRxlaorG5R9VAHuk/vbszVoRTGXnAsY60wYLkh/E2XiFmdZmqrisw+9FaazS1i5SbdWYgA==,
- }
- engines: { node: '>= 18' }
+ resolution: {integrity: sha512-GmYiltypkHHtihFwPRxlaorG5R9VAHuk/vbszVoRTGXnAsY60wYLkh/E2XiFmdZmqrisw+9FaazS1i5SbdWYgA==}
+ engines: {node: '>= 18'}
'@octokit/types@13.10.0':
- resolution:
- {
- integrity: sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==,
- }
+ resolution: {integrity: sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==}
'@one-ini/wasm@0.1.1':
- resolution:
- {
- integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==,
- }
+ resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==}
'@oxfmt/binding-android-arm-eabi@0.42.0':
- resolution:
- {
- integrity: sha512-dsqPTYsozeokRjlrt/b4E7Pj0z3eS3Eg74TWQuuKbjY4VttBmA88rB7d50Xrd+TZ986qdXCNeZRPEzZHAe+jow==,
- }
- engines: { node: ^20.19.0 || >=22.12.0 }
+ resolution: {integrity: sha512-dsqPTYsozeokRjlrt/b4E7Pj0z3eS3Eg74TWQuuKbjY4VttBmA88rB7d50Xrd+TZ986qdXCNeZRPEzZHAe+jow==}
+ engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [android]
'@oxfmt/binding-android-arm64@0.42.0':
- resolution:
- {
- integrity: sha512-t+aAjHxcr5eOBphFHdg1ouQU9qmZZoRxnX7UOJSaTwSoKsb6TYezNKO0YbWytGXCECObRqNcUxPoPr0KaraAIg==,
- }
- engines: { node: ^20.19.0 || >=22.12.0 }
+ resolution: {integrity: sha512-t+aAjHxcr5eOBphFHdg1ouQU9qmZZoRxnX7UOJSaTwSoKsb6TYezNKO0YbWytGXCECObRqNcUxPoPr0KaraAIg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [android]
'@oxfmt/binding-darwin-arm64@0.42.0':
- resolution:
- {
- integrity: sha512-ulpSEYMKg61C5bRMZinFHrKJYRoKGVbvMEXA5zM1puX3O9T6Q4XXDbft20yrDijpYWeuG59z3Nabt+npeTsM1A==,
- }
- engines: { node: ^20.19.0 || >=22.12.0 }
+ resolution: {integrity: sha512-ulpSEYMKg61C5bRMZinFHrKJYRoKGVbvMEXA5zM1puX3O9T6Q4XXDbft20yrDijpYWeuG59z3Nabt+npeTsM1A==}
+ engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [darwin]
'@oxfmt/binding-darwin-x64@0.42.0':
- resolution:
- {
- integrity: sha512-ttxLKhQYPdFiM8I/Ri37cvqChE4Xa562nNOsZFcv1CKTVLeEozXjKuYClNvxkXmNlcF55nzM80P+CQkdFBu+uQ==,
- }
- engines: { node: ^20.19.0 || >=22.12.0 }
+ resolution: {integrity: sha512-ttxLKhQYPdFiM8I/Ri37cvqChE4Xa562nNOsZFcv1CKTVLeEozXjKuYClNvxkXmNlcF55nzM80P+CQkdFBu+uQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [darwin]
'@oxfmt/binding-freebsd-x64@0.42.0':
- resolution:
- {
- integrity: sha512-Og7QS3yI3tdIKYZ58SXik0rADxIk2jmd+/YvuHRyKULWpG4V2fR5V4hvKm624Mc0cQET35waPXiCQWvjQEjwYQ==,
- }
- engines: { node: ^20.19.0 || >=22.12.0 }
+ resolution: {integrity: sha512-Og7QS3yI3tdIKYZ58SXik0rADxIk2jmd+/YvuHRyKULWpG4V2fR5V4hvKm624Mc0cQET35waPXiCQWvjQEjwYQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [freebsd]
'@oxfmt/binding-linux-arm-gnueabihf@0.42.0':
- resolution:
- {
- integrity: sha512-jwLOw/3CW4H6Vxcry4/buQHk7zm9Ne2YsidzTL1kpiMe4qqrRCwev3dkyWe2YkFmP+iZCQ7zku4KwjcLRoh8ew==,
- }
- engines: { node: ^20.19.0 || >=22.12.0 }
+ resolution: {integrity: sha512-jwLOw/3CW4H6Vxcry4/buQHk7zm9Ne2YsidzTL1kpiMe4qqrRCwev3dkyWe2YkFmP+iZCQ7zku4KwjcLRoh8ew==}
+ engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [linux]
'@oxfmt/binding-linux-arm-musleabihf@0.42.0':
- resolution:
- {
- integrity: sha512-XwXu2vkMtiq2h7tfvN+WA/9/5/1IoGAVCFPiiQUvcAuG3efR97KNcRGM8BetmbYouFotQ2bDal3yyjUx6IPsTg==,
- }
- engines: { node: ^20.19.0 || >=22.12.0 }
+ resolution: {integrity: sha512-XwXu2vkMtiq2h7tfvN+WA/9/5/1IoGAVCFPiiQUvcAuG3efR97KNcRGM8BetmbYouFotQ2bDal3yyjUx6IPsTg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [linux]
'@oxfmt/binding-linux-arm64-gnu@0.42.0':
- resolution:
- {
- integrity: sha512-ea7s/XUJoT7ENAtUQDudFe3nkSM3e3Qpz4nJFRdzO2wbgXEcjnchKLEsV3+t4ev3r8nWxIYr9NRjPWtnyIFJVA==,
- }
- engines: { node: ^20.19.0 || >=22.12.0 }
+ resolution: {integrity: sha512-ea7s/XUJoT7ENAtUQDudFe3nkSM3e3Qpz4nJFRdzO2wbgXEcjnchKLEsV3+t4ev3r8nWxIYr9NRjPWtnyIFJVA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
'@oxfmt/binding-linux-arm64-musl@0.42.0':
- resolution:
- {
- integrity: sha512-+JA0YMlSdDqmacygGi2REp57c3fN+tzARD8nwsukx9pkCHK+6DkbAA9ojS4lNKsiBjIW8WWa0pBrBWhdZEqfuw==,
- }
- engines: { node: ^20.19.0 || >=22.12.0 }
+ resolution: {integrity: sha512-+JA0YMlSdDqmacygGi2REp57c3fN+tzARD8nwsukx9pkCHK+6DkbAA9ojS4lNKsiBjIW8WWa0pBrBWhdZEqfuw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
+ libc: [musl]
'@oxfmt/binding-linux-ppc64-gnu@0.42.0':
- resolution:
- {
- integrity: sha512-VfnET0j4Y5mdfCzh5gBt0NK28lgn5DKx+8WgSMLYYeSooHhohdbzwAStLki9pNuGy51y4I7IoW8bqwAaCMiJQg==,
- }
- engines: { node: ^20.19.0 || >=22.12.0 }
+ resolution: {integrity: sha512-VfnET0j4Y5mdfCzh5gBt0NK28lgn5DKx+8WgSMLYYeSooHhohdbzwAStLki9pNuGy51y4I7IoW8bqwAaCMiJQg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
cpu: [ppc64]
os: [linux]
+ libc: [glibc]
'@oxfmt/binding-linux-riscv64-gnu@0.42.0':
- resolution:
- {
- integrity: sha512-gVlCbmBkB0fxBWbhBj9rcxezPydsQHf4MFKeHoTSPicOQ+8oGeTQgQ8EeesSybWeiFPVRx3bgdt4IJnH6nOjAA==,
- }
- engines: { node: ^20.19.0 || >=22.12.0 }
+ resolution: {integrity: sha512-gVlCbmBkB0fxBWbhBj9rcxezPydsQHf4MFKeHoTSPicOQ+8oGeTQgQ8EeesSybWeiFPVRx3bgdt4IJnH6nOjAA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
cpu: [riscv64]
os: [linux]
+ libc: [glibc]
'@oxfmt/binding-linux-riscv64-musl@0.42.0':
- resolution:
- {
- integrity: sha512-zN5OfstL0avgt/IgvRu0zjQzVh/EPkcLzs33E9LMAzpqlLWiPWeMDZyMGFlSRGOdDjuNmlZBCgj0pFnK5u32TQ==,
- }
- engines: { node: ^20.19.0 || >=22.12.0 }
+ resolution: {integrity: sha512-zN5OfstL0avgt/IgvRu0zjQzVh/EPkcLzs33E9LMAzpqlLWiPWeMDZyMGFlSRGOdDjuNmlZBCgj0pFnK5u32TQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
cpu: [riscv64]
os: [linux]
+ libc: [musl]
'@oxfmt/binding-linux-s390x-gnu@0.42.0':
- resolution:
- {
- integrity: sha512-9X6+H2L0qMc2sCAgO9HS03bkGLMKvOFjmEdchaFlany3vNZOjnVui//D8k/xZAtQv2vaCs1reD5KAgPoIU4msA==,
- }
- engines: { node: ^20.19.0 || >=22.12.0 }
+ resolution: {integrity: sha512-9X6+H2L0qMc2sCAgO9HS03bkGLMKvOFjmEdchaFlany3vNZOjnVui//D8k/xZAtQv2vaCs1reD5KAgPoIU4msA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
cpu: [s390x]
os: [linux]
+ libc: [glibc]
'@oxfmt/binding-linux-x64-gnu@0.42.0':
- resolution:
- {
- integrity: sha512-BajxJ6KQvMMdpXGPWhBGyjb2Jvx4uec0w+wi6TJZ6Tv7+MzPwe0pO8g5h1U0jyFgoaF7mDl6yKPW3ykWcbUJRw==,
- }
- engines: { node: ^20.19.0 || >=22.12.0 }
+ resolution: {integrity: sha512-BajxJ6KQvMMdpXGPWhBGyjb2Jvx4uec0w+wi6TJZ6Tv7+MzPwe0pO8g5h1U0jyFgoaF7mDl6yKPW3ykWcbUJRw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
+ libc: [glibc]
'@oxfmt/binding-linux-x64-musl@0.42.0':
- resolution:
- {
- integrity: sha512-0wV284I6vc5f0AqAhgAbHU2935B4bVpncPoe5n/WzVZY/KnHgqxC8iSFGeSyLWEgstFboIcWkOPck7tqbdHkzA==,
- }
- engines: { node: ^20.19.0 || >=22.12.0 }
+ resolution: {integrity: sha512-0wV284I6vc5f0AqAhgAbHU2935B4bVpncPoe5n/WzVZY/KnHgqxC8iSFGeSyLWEgstFboIcWkOPck7tqbdHkzA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
+ libc: [musl]
'@oxfmt/binding-openharmony-arm64@0.42.0':
- resolution:
- {
- integrity: sha512-p4BG6HpGnhfgHk1rzZfyR6zcWkE7iLrWxyehHfXUy4Qa5j3e0roglFOdP/Nj5cJJ58MA3isQ5dlfkW2nNEpolw==,
- }
- engines: { node: ^20.19.0 || >=22.12.0 }
+ resolution: {integrity: sha512-p4BG6HpGnhfgHk1rzZfyR6zcWkE7iLrWxyehHfXUy4Qa5j3e0roglFOdP/Nj5cJJ58MA3isQ5dlfkW2nNEpolw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [openharmony]
'@oxfmt/binding-win32-arm64-msvc@0.42.0':
- resolution:
- {
- integrity: sha512-mn//WV60A+IetORDxYieYGAoQso4KnVRRjORDewMcod4irlRe0OSC7YPhhwaexYNPQz/GCFk+v9iUcZ2W22yxQ==,
- }
- engines: { node: ^20.19.0 || >=22.12.0 }
+ resolution: {integrity: sha512-mn//WV60A+IetORDxYieYGAoQso4KnVRRjORDewMcod4irlRe0OSC7YPhhwaexYNPQz/GCFk+v9iUcZ2W22yxQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [win32]
'@oxfmt/binding-win32-ia32-msvc@0.42.0':
- resolution:
- {
- integrity: sha512-3gWltUrvuz4LPJXWivoAxZ28Of2O4N7OGuM5/X3ubPXCEV8hmgECLZzjz7UYvSDUS3grfdccQwmjynm+51EFpw==,
- }
- engines: { node: ^20.19.0 || >=22.12.0 }
+ resolution: {integrity: sha512-3gWltUrvuz4LPJXWivoAxZ28Of2O4N7OGuM5/X3ubPXCEV8hmgECLZzjz7UYvSDUS3grfdccQwmjynm+51EFpw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
cpu: [ia32]
os: [win32]
'@oxfmt/binding-win32-x64-msvc@0.42.0':
- resolution:
- {
- integrity: sha512-Wg4TMAfQRL9J9AZevJ/ZNy3uyyDztDYQtGr4P8UyyzIhLhFrdSmz1J/9JT+rv0fiCDLaFOBQnj3f3K3+a5PzDQ==,
- }
- engines: { node: ^20.19.0 || >=22.12.0 }
+ resolution: {integrity: sha512-Wg4TMAfQRL9J9AZevJ/ZNy3uyyDztDYQtGr4P8UyyzIhLhFrdSmz1J/9JT+rv0fiCDLaFOBQnj3f3K3+a5PzDQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [win32]
'@paralleldrive/cuid2@2.3.1':
- resolution:
- {
- integrity: sha512-XO7cAxhnTZl0Yggq6jOgjiOHhbgcO4NqFqwSmQpjK3b6TEE6Uj/jfSk6wzYyemh3+I0sHirKSetjQwn5cZktFw==,
- }
+ resolution: {integrity: sha512-XO7cAxhnTZl0Yggq6jOgjiOHhbgcO4NqFqwSmQpjK3b6TEE6Uj/jfSk6wzYyemh3+I0sHirKSetjQwn5cZktFw==}
'@pgpm/database-jobs@0.18.0':
- resolution:
- {
- integrity: sha512-3LX7ZQJQEMHd4POG2I2xPzMFR2X6LwvuxJAMpLhcc/I4P3EbEyEig6rPpsyDr9uabRjgUWfZDz05w6cW8X4KwA==,
- }
+ resolution: {integrity: sha512-3LX7ZQJQEMHd4POG2I2xPzMFR2X6LwvuxJAMpLhcc/I4P3EbEyEig6rPpsyDr9uabRjgUWfZDz05w6cW8X4KwA==}
'@pgpm/database-jobs@0.21.0':
- resolution:
- {
- integrity: sha512-TN6Uddyq5PJMQ7P+dJOCl0xwyIW1Hv8PkJmRshMNljzt0OVu4Mq8YR5gNkTDveGGHdYCDyP0vhCrpty9aQld6g==,
- }
+ resolution: {integrity: sha512-TN6Uddyq5PJMQ7P+dJOCl0xwyIW1Hv8PkJmRshMNljzt0OVu4Mq8YR5gNkTDveGGHdYCDyP0vhCrpty9aQld6g==}
'@pgpm/inflection@0.18.0':
- resolution:
- {
- integrity: sha512-gHfxI6l/+cE9zY5ea6BjVjNcb9VKIavqRXGVyw16Fy0n4HgCmxF8ccZFFPq46JXfakNSk3cPTHDYvvWQaAlIPA==,
- }
+ resolution: {integrity: sha512-gHfxI6l/+cE9zY5ea6BjVjNcb9VKIavqRXGVyw16Fy0n4HgCmxF8ccZFFPq46JXfakNSk3cPTHDYvvWQaAlIPA==}
'@pgpm/inflection@0.21.0':
- resolution:
- {
- integrity: sha512-tb1OQCQp1i5SjT04CCN27ptGQcDXidVZrDB8SJsdZZrz6Rcl0WStf4t50z5CSUebg8RJxkpiF4VNpv583RCuhQ==,
- }
+ resolution: {integrity: sha512-tb1OQCQp1i5SjT04CCN27ptGQcDXidVZrDB8SJsdZZrz6Rcl0WStf4t50z5CSUebg8RJxkpiF4VNpv583RCuhQ==}
'@pgpm/metaschema-modules@0.21.1':
- resolution:
- {
- integrity: sha512-6RTHN+PcxmTma7k7uHPZdjtN92P3kkqndXxu2acuSOpXi1sxrN5nNSNgi2r42ovl92B8MKy4r7SyF5DUlQwD1A==,
- }
+ resolution: {integrity: sha512-6RTHN+PcxmTma7k7uHPZdjtN92P3kkqndXxu2acuSOpXi1sxrN5nNSNgi2r42ovl92B8MKy4r7SyF5DUlQwD1A==}
'@pgpm/metaschema-schema@0.18.0':
- resolution:
- {
- integrity: sha512-joIBoYegI4ZQFFPW7w0HhNXMT+sXnmSytX8YBxGgi5XZqjE2aQdtZcWBIiwZa3MjqU7mYN2xlZt5gPmo/IzLMw==,
- }
+ resolution: {integrity: sha512-joIBoYegI4ZQFFPW7w0HhNXMT+sXnmSytX8YBxGgi5XZqjE2aQdtZcWBIiwZa3MjqU7mYN2xlZt5gPmo/IzLMw==}
'@pgpm/metaschema-schema@0.21.0':
- resolution:
- {
- integrity: sha512-kRfVyysGOrGcZEElcAJWaX9Xx2f5fMPtI4rmAxI11vJ0axYUcqtI+9fyp7McwqXnIHr0ShR28jvwqUGaZherJw==,
- }
+ resolution: {integrity: sha512-kRfVyysGOrGcZEElcAJWaX9Xx2f5fMPtI4rmAxI11vJ0axYUcqtI+9fyp7McwqXnIHr0ShR28jvwqUGaZherJw==}
'@pgpm/services@0.18.0':
- resolution:
- {
- integrity: sha512-YedLEVdgwkHden55uaZaO8O3HACEiIvblYmPFsQk1ivHwzw1l0KUv6WT5+idwMC/SOsexH/Xq8ckSSM84ErWtQ==,
- }
+ resolution: {integrity: sha512-YedLEVdgwkHden55uaZaO8O3HACEiIvblYmPFsQk1ivHwzw1l0KUv6WT5+idwMC/SOsexH/Xq8ckSSM84ErWtQ==}
'@pgpm/types@0.18.0':
- resolution:
- {
- integrity: sha512-w6pfcS5HuJ2IGfyn74mGChl0nhNBIbxdu6sarlARGveZFHvBkTIPKEezA524sLKhUHda84YWuExEhCUd6N/AqQ==,
- }
+ resolution: {integrity: sha512-w6pfcS5HuJ2IGfyn74mGChl0nhNBIbxdu6sarlARGveZFHvBkTIPKEezA524sLKhUHda84YWuExEhCUd6N/AqQ==}
'@pgpm/types@0.21.0':
- resolution:
- {
- integrity: sha512-F5ph4z7JWwKVcy/CmAgodEIXqXCwSgv0ESVxIV2spdl01RgNi0SdKuHqVJnjp8rbHHUtlCPRj/UlAopUSpIIOg==,
- }
+ resolution: {integrity: sha512-F5ph4z7JWwKVcy/CmAgodEIXqXCwSgv0ESVxIV2spdl01RgNi0SdKuHqVJnjp8rbHHUtlCPRj/UlAopUSpIIOg==}
'@pgpm/verify@0.18.0':
- resolution:
- {
- integrity: sha512-7XtY+hj9CbYb0ZhD0LJRp+TErtYS2z0FZbdkMNM7UabEwz05VLlS/lXbdtn5hksbUq6dkIxwxQ2mfFpATPpqDQ==,
- }
+ resolution: {integrity: sha512-7XtY+hj9CbYb0ZhD0LJRp+TErtYS2z0FZbdkMNM7UabEwz05VLlS/lXbdtn5hksbUq6dkIxwxQ2mfFpATPpqDQ==}
'@pgpm/verify@0.21.0':
- resolution:
- {
- integrity: sha512-z4iiwEUrUR+aIvxfu4+HefitVPLtypXdbyEkbNJ//EMsnzturo6wzxT1e60w/Xp29AzF6m5OaJ0djc6lzr9hTw==,
- }
+ resolution: {integrity: sha512-z4iiwEUrUR+aIvxfu4+HefitVPLtypXdbyEkbNJ//EMsnzturo6wzxT1e60w/Xp29AzF6m5OaJ0djc6lzr9hTw==}
'@pgsql/quotes@17.1.0':
- resolution:
- {
- integrity: sha512-J/H+LcrENBpYgL45WW6aTjb5Yk4tX4+AmB2/k8KZa+Zh3wiCtqmNIag+HZz5HmWaF6EZK9ZGC95NBD1fs+rUvg==,
- }
+ resolution: {integrity: sha512-J/H+LcrENBpYgL45WW6aTjb5Yk4tX4+AmB2/k8KZa+Zh3wiCtqmNIag+HZz5HmWaF6EZK9ZGC95NBD1fs+rUvg==}
'@pgsql/types@17.6.2':
- resolution:
- {
- integrity: sha512-1UtbELdbqNdyOShhrVfSz3a1gDi0s9XXiQemx+6QqtsrXe62a6zOGU+vjb2GRfG5jeEokI1zBBcfD42enRv0Rw==,
- }
+ resolution: {integrity: sha512-1UtbELdbqNdyOShhrVfSz3a1gDi0s9XXiQemx+6QqtsrXe62a6zOGU+vjb2GRfG5jeEokI1zBBcfD42enRv0Rw==}
'@pgsql/utils@17.8.15':
- resolution:
- {
- integrity: sha512-Q9szjg1ztXUhyoi49wt1kJvO/H+ohtaKXpkGxVlAlpmxh4/t7AXt1ldQX/LeKrlVqnisHrEKP9XgvR02pq+1oQ==,
- }
+ resolution: {integrity: sha512-Q9szjg1ztXUhyoi49wt1kJvO/H+ohtaKXpkGxVlAlpmxh4/t7AXt1ldQX/LeKrlVqnisHrEKP9XgvR02pq+1oQ==}
'@pkgjs/parseargs@0.11.0':
- resolution:
- {
- integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==,
- }
- engines: { node: '>=14' }
+ resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
+ engines: {node: '>=14'}
'@pkgr/core@0.2.9':
- resolution:
- {
- integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==,
- }
- engines: { node: ^12.20.0 || ^14.18.0 || >=16.0.0 }
+ resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==}
+ engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
'@playwright/test@1.58.2':
- resolution:
- {
- integrity: sha512-akea+6bHYBBfA9uQqSYmlJXn61cTa+jbO87xVLCWbTqbWadRVmhxlXATaOjOgcBaWU4ePo0wB41KMFv3o35IXA==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-akea+6bHYBBfA9uQqSYmlJXn61cTa+jbO87xVLCWbTqbWadRVmhxlXATaOjOgcBaWU4ePo0wB41KMFv3o35IXA==}
+ engines: {node: '>=18'}
hasBin: true
'@protobufjs/aspromise@1.1.2':
- resolution:
- {
- integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==,
- }
+ resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==}
'@protobufjs/base64@1.1.2':
- resolution:
- {
- integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==,
- }
+ resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==}
'@protobufjs/codegen@2.0.4':
- resolution:
- {
- integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==,
- }
+ resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==}
'@protobufjs/eventemitter@1.1.0':
- resolution:
- {
- integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==,
- }
+ resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==}
'@protobufjs/fetch@1.1.0':
- resolution:
- {
- integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==,
- }
+ resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==}
'@protobufjs/float@1.0.2':
- resolution:
- {
- integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==,
- }
+ resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==}
'@protobufjs/inquire@1.1.0':
- resolution:
- {
- integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==,
- }
+ resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==}
'@protobufjs/path@1.1.2':
- resolution:
- {
- integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==,
- }
+ resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==}
'@protobufjs/pool@1.1.0':
- resolution:
- {
- integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==,
- }
+ resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==}
'@protobufjs/utf8@1.1.0':
- resolution:
- {
- integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==,
- }
+ resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==}
'@radix-ui/primitive@1.1.3':
- resolution:
- {
- integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==,
- }
+ resolution: {integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==}
'@radix-ui/react-arrow@1.1.7':
- resolution:
- {
- integrity: sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==,
- }
+ resolution: {integrity: sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==}
peerDependencies:
'@types/react': '*'
'@types/react-dom': '*'
@@ -5431,10 +4505,7 @@ packages:
optional: true
'@radix-ui/react-collection@1.1.7':
- resolution:
- {
- integrity: sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==,
- }
+ resolution: {integrity: sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==}
peerDependencies:
'@types/react': '*'
'@types/react-dom': '*'
@@ -5447,10 +4518,7 @@ packages:
optional: true
'@radix-ui/react-compose-refs@1.1.2':
- resolution:
- {
- integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==,
- }
+ resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==}
peerDependencies:
'@types/react': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -5459,10 +4527,7 @@ packages:
optional: true
'@radix-ui/react-context@1.1.2':
- resolution:
- {
- integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==,
- }
+ resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==}
peerDependencies:
'@types/react': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -5471,10 +4536,7 @@ packages:
optional: true
'@radix-ui/react-dialog@1.1.15':
- resolution:
- {
- integrity: sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==,
- }
+ resolution: {integrity: sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==}
peerDependencies:
'@types/react': '*'
'@types/react-dom': '*'
@@ -5487,10 +4549,7 @@ packages:
optional: true
'@radix-ui/react-direction@1.1.1':
- resolution:
- {
- integrity: sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==,
- }
+ resolution: {integrity: sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==}
peerDependencies:
'@types/react': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -5499,10 +4558,7 @@ packages:
optional: true
'@radix-ui/react-dismissable-layer@1.1.11':
- resolution:
- {
- integrity: sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==,
- }
+ resolution: {integrity: sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==}
peerDependencies:
'@types/react': '*'
'@types/react-dom': '*'
@@ -5515,10 +4571,7 @@ packages:
optional: true
'@radix-ui/react-dropdown-menu@2.1.16':
- resolution:
- {
- integrity: sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw==,
- }
+ resolution: {integrity: sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw==}
peerDependencies:
'@types/react': '*'
'@types/react-dom': '*'
@@ -5531,10 +4584,7 @@ packages:
optional: true
'@radix-ui/react-focus-guards@1.1.3':
- resolution:
- {
- integrity: sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==,
- }
+ resolution: {integrity: sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==}
peerDependencies:
'@types/react': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -5543,10 +4593,7 @@ packages:
optional: true
'@radix-ui/react-focus-scope@1.1.7':
- resolution:
- {
- integrity: sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==,
- }
+ resolution: {integrity: sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==}
peerDependencies:
'@types/react': '*'
'@types/react-dom': '*'
@@ -5559,10 +4606,7 @@ packages:
optional: true
'@radix-ui/react-id@1.1.1':
- resolution:
- {
- integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==,
- }
+ resolution: {integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==}
peerDependencies:
'@types/react': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -5571,10 +4615,7 @@ packages:
optional: true
'@radix-ui/react-menu@2.1.16':
- resolution:
- {
- integrity: sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg==,
- }
+ resolution: {integrity: sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg==}
peerDependencies:
'@types/react': '*'
'@types/react-dom': '*'
@@ -5587,10 +4628,7 @@ packages:
optional: true
'@radix-ui/react-popper@1.2.8':
- resolution:
- {
- integrity: sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==,
- }
+ resolution: {integrity: sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==}
peerDependencies:
'@types/react': '*'
'@types/react-dom': '*'
@@ -5603,10 +4641,7 @@ packages:
optional: true
'@radix-ui/react-portal@1.1.9':
- resolution:
- {
- integrity: sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==,
- }
+ resolution: {integrity: sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==}
peerDependencies:
'@types/react': '*'
'@types/react-dom': '*'
@@ -5619,10 +4654,7 @@ packages:
optional: true
'@radix-ui/react-presence@1.1.5':
- resolution:
- {
- integrity: sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==,
- }
+ resolution: {integrity: sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==}
peerDependencies:
'@types/react': '*'
'@types/react-dom': '*'
@@ -5635,10 +4667,7 @@ packages:
optional: true
'@radix-ui/react-primitive@2.1.3':
- resolution:
- {
- integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==,
- }
+ resolution: {integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==}
peerDependencies:
'@types/react': '*'
'@types/react-dom': '*'
@@ -5651,10 +4680,7 @@ packages:
optional: true
'@radix-ui/react-primitive@2.1.4':
- resolution:
- {
- integrity: sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg==,
- }
+ resolution: {integrity: sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg==}
peerDependencies:
'@types/react': '*'
'@types/react-dom': '*'
@@ -5667,10 +4693,7 @@ packages:
optional: true
'@radix-ui/react-roving-focus@1.1.11':
- resolution:
- {
- integrity: sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==,
- }
+ resolution: {integrity: sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==}
peerDependencies:
'@types/react': '*'
'@types/react-dom': '*'
@@ -5683,10 +4706,7 @@ packages:
optional: true
'@radix-ui/react-slot@1.2.3':
- resolution:
- {
- integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==,
- }
+ resolution: {integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==}
peerDependencies:
'@types/react': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -5695,10 +4715,7 @@ packages:
optional: true
'@radix-ui/react-slot@1.2.4':
- resolution:
- {
- integrity: sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==,
- }
+ resolution: {integrity: sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==}
peerDependencies:
'@types/react': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -5707,10 +4724,7 @@ packages:
optional: true
'@radix-ui/react-tooltip@1.2.8':
- resolution:
- {
- integrity: sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==,
- }
+ resolution: {integrity: sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==}
peerDependencies:
'@types/react': '*'
'@types/react-dom': '*'
@@ -5723,10 +4737,7 @@ packages:
optional: true
'@radix-ui/react-use-callback-ref@1.1.1':
- resolution:
- {
- integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==,
- }
+ resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==}
peerDependencies:
'@types/react': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -5735,10 +4746,7 @@ packages:
optional: true
'@radix-ui/react-use-controllable-state@1.2.2':
- resolution:
- {
- integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==,
- }
+ resolution: {integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==}
peerDependencies:
'@types/react': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -5747,10 +4755,7 @@ packages:
optional: true
'@radix-ui/react-use-effect-event@0.0.2':
- resolution:
- {
- integrity: sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==,
- }
+ resolution: {integrity: sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==}
peerDependencies:
'@types/react': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -5759,10 +4764,7 @@ packages:
optional: true
'@radix-ui/react-use-escape-keydown@1.1.1':
- resolution:
- {
- integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==,
- }
+ resolution: {integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==}
peerDependencies:
'@types/react': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -5771,10 +4773,7 @@ packages:
optional: true
'@radix-ui/react-use-layout-effect@1.1.1':
- resolution:
- {
- integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==,
- }
+ resolution: {integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==}
peerDependencies:
'@types/react': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -5783,10 +4782,7 @@ packages:
optional: true
'@radix-ui/react-use-rect@1.1.1':
- resolution:
- {
- integrity: sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==,
- }
+ resolution: {integrity: sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==}
peerDependencies:
'@types/react': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -5795,10 +4791,7 @@ packages:
optional: true
'@radix-ui/react-use-size@1.1.1':
- resolution:
- {
- integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==,
- }
+ resolution: {integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==}
peerDependencies:
'@types/react': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -5807,10 +4800,7 @@ packages:
optional: true
'@radix-ui/react-visually-hidden@1.2.3':
- resolution:
- {
- integrity: sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==,
- }
+ resolution: {integrity: sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==}
peerDependencies:
'@types/react': '*'
'@types/react-dom': '*'
@@ -5823,10 +4813,7 @@ packages:
optional: true
'@radix-ui/react-visually-hidden@1.2.4':
- resolution:
- {
- integrity: sha512-kaeiyGCe844dkb9AVF+rb4yTyb1LiLN/e3es3nLiRyN4dC8AduBYPMnnNlDjX2VDOcvDEiPnRNMJeWCfsX0txg==,
- }
+ resolution: {integrity: sha512-kaeiyGCe844dkb9AVF+rb4yTyb1LiLN/e3es3nLiRyN4dC8AduBYPMnnNlDjX2VDOcvDEiPnRNMJeWCfsX0txg==}
peerDependencies:
'@types/react': '*'
'@types/react-dom': '*'
@@ -5839,2567 +4826,1469 @@ packages:
optional: true
'@radix-ui/rect@1.1.1':
- resolution:
- {
- integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==,
- }
+ resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==}
'@react-aria/focus@3.21.5':
- resolution:
- {
- integrity: sha512-V18fwCyf8zqgJdpLQeDU5ZRNd9TeOfBbhLgmX77Zr5ae9XwaoJ1R3SFJG1wCJX60t34AW+aLZSEEK+saQElf3Q==,
- }
+ resolution: {integrity: sha512-V18fwCyf8zqgJdpLQeDU5ZRNd9TeOfBbhLgmX77Zr5ae9XwaoJ1R3SFJG1wCJX60t34AW+aLZSEEK+saQElf3Q==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
'@react-aria/interactions@3.27.1':
- resolution:
- {
- integrity: sha512-M3wLpTTmDflI0QGNK0PJNUaBXXfeBXue8ZxLMngfc1piHNiH4G5lUvWd9W14XVbqrSCVY8i8DfGrNYpyyZu0tw==,
- }
+ resolution: {integrity: sha512-M3wLpTTmDflI0QGNK0PJNUaBXXfeBXue8ZxLMngfc1piHNiH4G5lUvWd9W14XVbqrSCVY8i8DfGrNYpyyZu0tw==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
'@react-aria/ssr@3.9.10':
- resolution:
- {
- integrity: sha512-hvTm77Pf+pMBhuBm760Li0BVIO38jv1IBws1xFm1NoL26PU+fe+FMW5+VZWyANR6nYL65joaJKZqOdTQMkO9IQ==,
- }
- engines: { node: '>= 12' }
+ resolution: {integrity: sha512-hvTm77Pf+pMBhuBm760Li0BVIO38jv1IBws1xFm1NoL26PU+fe+FMW5+VZWyANR6nYL65joaJKZqOdTQMkO9IQ==}
+ engines: {node: '>= 12'}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
'@react-aria/utils@3.33.1':
- resolution:
- {
- integrity: sha512-kIx1Sj6bbAT0pdqCegHuPanR9zrLn5zMRiM7LN12rgRf55S19ptd9g3ncahArifYTRkfEU9VIn+q0HjfMqS9/w==,
- }
+ resolution: {integrity: sha512-kIx1Sj6bbAT0pdqCegHuPanR9zrLn5zMRiM7LN12rgRf55S19ptd9g3ncahArifYTRkfEU9VIn+q0HjfMqS9/w==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
'@react-stately/flags@3.1.2':
- resolution:
- {
- integrity: sha512-2HjFcZx1MyQXoPqcBGALwWWmgFVUk2TuKVIQxCbRq7fPyWXIl6VHcakCLurdtYC2Iks7zizvz0Idv48MQ38DWg==,
- }
+ resolution: {integrity: sha512-2HjFcZx1MyQXoPqcBGALwWWmgFVUk2TuKVIQxCbRq7fPyWXIl6VHcakCLurdtYC2Iks7zizvz0Idv48MQ38DWg==}
'@react-stately/utils@3.11.0':
- resolution:
- {
- integrity: sha512-8LZpYowJ9eZmmYLpudbo/eclIRnbhWIJZ994ncmlKlouNzKohtM8qTC6B1w1pwUbiwGdUoyzLuQbeaIor5Dvcw==,
- }
+ resolution: {integrity: sha512-8LZpYowJ9eZmmYLpudbo/eclIRnbhWIJZ994ncmlKlouNzKohtM8qTC6B1w1pwUbiwGdUoyzLuQbeaIor5Dvcw==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
'@react-types/shared@3.33.1':
- resolution:
- {
- integrity: sha512-oJHtjvLG43VjwemQDadlR5g/8VepK56B/xKO2XORPHt9zlW6IZs3tZrYlvH29BMvoqC7RtE7E5UjgbnbFtDGag==,
- }
+ resolution: {integrity: sha512-oJHtjvLG43VjwemQDadlR5g/8VepK56B/xKO2XORPHt9zlW6IZs3tZrYlvH29BMvoqC7RtE7E5UjgbnbFtDGag==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
'@rolldown/pluginutils@1.0.0-beta.27':
- resolution:
- {
- integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==,
- }
+ resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==}
'@rollup/rollup-android-arm-eabi@4.57.1':
- resolution:
- {
- integrity: sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg==,
- }
+ resolution: {integrity: sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg==}
cpu: [arm]
os: [android]
'@rollup/rollup-android-arm64@4.57.1':
- resolution:
- {
- integrity: sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w==,
- }
+ resolution: {integrity: sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w==}
cpu: [arm64]
os: [android]
'@rollup/rollup-darwin-arm64@4.57.1':
- resolution:
- {
- integrity: sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg==,
- }
+ resolution: {integrity: sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg==}
cpu: [arm64]
os: [darwin]
'@rollup/rollup-darwin-x64@4.57.1':
- resolution:
- {
- integrity: sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w==,
- }
+ resolution: {integrity: sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w==}
cpu: [x64]
os: [darwin]
'@rollup/rollup-freebsd-arm64@4.57.1':
- resolution:
- {
- integrity: sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug==,
- }
+ resolution: {integrity: sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug==}
cpu: [arm64]
os: [freebsd]
'@rollup/rollup-freebsd-x64@4.57.1':
- resolution:
- {
- integrity: sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q==,
- }
+ resolution: {integrity: sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q==}
cpu: [x64]
os: [freebsd]
'@rollup/rollup-linux-arm-gnueabihf@4.57.1':
- resolution:
- {
- integrity: sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw==,
- }
+ resolution: {integrity: sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw==}
cpu: [arm]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-arm-musleabihf@4.57.1':
- resolution:
- {
- integrity: sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw==,
- }
+ resolution: {integrity: sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw==}
cpu: [arm]
os: [linux]
+ libc: [musl]
'@rollup/rollup-linux-arm64-gnu@4.57.1':
- resolution:
- {
- integrity: sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g==,
- }
+ resolution: {integrity: sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g==}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-arm64-musl@4.57.1':
- resolution:
- {
- integrity: sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q==,
- }
+ resolution: {integrity: sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q==}
cpu: [arm64]
os: [linux]
+ libc: [musl]
'@rollup/rollup-linux-loong64-gnu@4.57.1':
- resolution:
- {
- integrity: sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA==,
- }
+ resolution: {integrity: sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA==}
cpu: [loong64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-loong64-musl@4.57.1':
- resolution:
- {
- integrity: sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw==,
- }
+ resolution: {integrity: sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw==}
cpu: [loong64]
os: [linux]
+ libc: [musl]
'@rollup/rollup-linux-ppc64-gnu@4.57.1':
- resolution:
- {
- integrity: sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w==,
- }
+ resolution: {integrity: sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w==}
cpu: [ppc64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-ppc64-musl@4.57.1':
- resolution:
- {
- integrity: sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw==,
- }
+ resolution: {integrity: sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw==}
cpu: [ppc64]
os: [linux]
+ libc: [musl]
'@rollup/rollup-linux-riscv64-gnu@4.57.1':
- resolution:
- {
- integrity: sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A==,
- }
+ resolution: {integrity: sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A==}
cpu: [riscv64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-riscv64-musl@4.57.1':
- resolution:
- {
- integrity: sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw==,
- }
+ resolution: {integrity: sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw==}
cpu: [riscv64]
os: [linux]
+ libc: [musl]
'@rollup/rollup-linux-s390x-gnu@4.57.1':
- resolution:
- {
- integrity: sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg==,
- }
+ resolution: {integrity: sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg==}
cpu: [s390x]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-x64-gnu@4.57.1':
- resolution:
- {
- integrity: sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg==,
- }
+ resolution: {integrity: sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg==}
cpu: [x64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-x64-musl@4.57.1':
- resolution:
- {
- integrity: sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw==,
- }
+ resolution: {integrity: sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw==}
cpu: [x64]
os: [linux]
+ libc: [musl]
'@rollup/rollup-openbsd-x64@4.57.1':
- resolution:
- {
- integrity: sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw==,
- }
+ resolution: {integrity: sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw==}
cpu: [x64]
os: [openbsd]
'@rollup/rollup-openharmony-arm64@4.57.1':
- resolution:
- {
- integrity: sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ==,
- }
+ resolution: {integrity: sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ==}
cpu: [arm64]
os: [openharmony]
'@rollup/rollup-win32-arm64-msvc@4.57.1':
- resolution:
- {
- integrity: sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ==,
- }
+ resolution: {integrity: sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ==}
cpu: [arm64]
os: [win32]
'@rollup/rollup-win32-ia32-msvc@4.57.1':
- resolution:
- {
- integrity: sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew==,
- }
+ resolution: {integrity: sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew==}
cpu: [ia32]
os: [win32]
'@rollup/rollup-win32-x64-gnu@4.57.1':
- resolution:
- {
- integrity: sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ==,
- }
+ resolution: {integrity: sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ==}
cpu: [x64]
os: [win32]
'@rollup/rollup-win32-x64-msvc@4.57.1':
- resolution:
- {
- integrity: sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA==,
- }
+ resolution: {integrity: sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA==}
cpu: [x64]
os: [win32]
'@sigstore/bundle@2.3.2':
- resolution:
- {
- integrity: sha512-wueKWDk70QixNLB363yHc2D2ItTgYiMTdPwK8D9dKQMR3ZQ0c35IxP5xnwQ8cNLoCgCRcHf14kE+CLIvNX1zmA==,
- }
- engines: { node: ^16.14.0 || >=18.0.0 }
+ resolution: {integrity: sha512-wueKWDk70QixNLB363yHc2D2ItTgYiMTdPwK8D9dKQMR3ZQ0c35IxP5xnwQ8cNLoCgCRcHf14kE+CLIvNX1zmA==}
+ engines: {node: ^16.14.0 || >=18.0.0}
'@sigstore/core@1.1.0':
- resolution:
- {
- integrity: sha512-JzBqdVIyqm2FRQCulY6nbQzMpJJpSiJ8XXWMhtOX9eKgaXXpfNOF53lzQEjIydlStnd/eFtuC1dW4VYdD93oRg==,
- }
- engines: { node: ^16.14.0 || >=18.0.0 }
+ resolution: {integrity: sha512-JzBqdVIyqm2FRQCulY6nbQzMpJJpSiJ8XXWMhtOX9eKgaXXpfNOF53lzQEjIydlStnd/eFtuC1dW4VYdD93oRg==}
+ engines: {node: ^16.14.0 || >=18.0.0}
'@sigstore/protobuf-specs@0.3.3':
- resolution:
- {
- integrity: sha512-RpacQhBlwpBWd7KEJsRKcBQalbV28fvkxwTOJIqhIuDysMMaJW47V4OqW30iJB9uRpqOSxxEAQFdr8tTattReQ==,
- }
- engines: { node: ^18.17.0 || >=20.5.0 }
+ resolution: {integrity: sha512-RpacQhBlwpBWd7KEJsRKcBQalbV28fvkxwTOJIqhIuDysMMaJW47V4OqW30iJB9uRpqOSxxEAQFdr8tTattReQ==}
+ engines: {node: ^18.17.0 || >=20.5.0}
'@sigstore/sign@2.3.2':
- resolution:
- {
- integrity: sha512-5Vz5dPVuunIIvC5vBb0APwo7qKA4G9yM48kPWJT+OEERs40md5GoUR1yedwpekWZ4m0Hhw44m6zU+ObsON+iDA==,
- }
- engines: { node: ^16.14.0 || >=18.0.0 }
+ resolution: {integrity: sha512-5Vz5dPVuunIIvC5vBb0APwo7qKA4G9yM48kPWJT+OEERs40md5GoUR1yedwpekWZ4m0Hhw44m6zU+ObsON+iDA==}
+ engines: {node: ^16.14.0 || >=18.0.0}
'@sigstore/tuf@2.3.4':
- resolution:
- {
- integrity: sha512-44vtsveTPUpqhm9NCrbU8CWLe3Vck2HO1PNLw7RIajbB7xhtn5RBPm1VNSCMwqGYHhDsBJG8gDF0q4lgydsJvw==,
- }
- engines: { node: ^16.14.0 || >=18.0.0 }
+ resolution: {integrity: sha512-44vtsveTPUpqhm9NCrbU8CWLe3Vck2HO1PNLw7RIajbB7xhtn5RBPm1VNSCMwqGYHhDsBJG8gDF0q4lgydsJvw==}
+ engines: {node: ^16.14.0 || >=18.0.0}
'@sigstore/verify@1.2.1':
- resolution:
- {
- integrity: sha512-8iKx79/F73DKbGfRf7+t4dqrc0bRr0thdPrxAtCKWRm/F0tG71i6O1rvlnScncJLLBZHn3h8M3c1BSUAb9yu8g==,
- }
- engines: { node: ^16.14.0 || >=18.0.0 }
+ resolution: {integrity: sha512-8iKx79/F73DKbGfRf7+t4dqrc0bRr0thdPrxAtCKWRm/F0tG71i6O1rvlnScncJLLBZHn3h8M3c1BSUAb9yu8g==}
+ engines: {node: ^16.14.0 || >=18.0.0}
'@sinclair/typebox@0.27.8':
- resolution:
- {
- integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==,
- }
+ resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
'@sinclair/typebox@0.34.47':
- resolution:
- {
- integrity: sha512-ZGIBQ+XDvO5JQku9wmwtabcVTHJsgSWAHYtVuM9pBNNR5E88v6Jcj/llpmsjivig5X8A8HHOb4/mbEKPS5EvAw==,
- }
+ resolution: {integrity: sha512-ZGIBQ+XDvO5JQku9wmwtabcVTHJsgSWAHYtVuM9pBNNR5E88v6Jcj/llpmsjivig5X8A8HHOb4/mbEKPS5EvAw==}
'@sinonjs/commons@3.0.1':
- resolution:
- {
- integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==,
- }
+ resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==}
'@sinonjs/fake-timers@15.1.1':
- resolution:
- {
- integrity: sha512-cO5W33JgAPbOh07tvZjUOJ7oWhtaqGHiZw+11DPbyqh2kHTBc3eF/CjJDeQ4205RLQsX6rxCuYOroFQwl7JDRw==,
- }
+ resolution: {integrity: sha512-cO5W33JgAPbOh07tvZjUOJ7oWhtaqGHiZw+11DPbyqh2kHTBc3eF/CjJDeQ4205RLQsX6rxCuYOroFQwl7JDRw==}
'@smithy/abort-controller@4.2.12':
- resolution:
- {
- integrity: sha512-xolrFw6b+2iYGl6EcOL7IJY71vvyZ0DJ3mcKtpykqPe2uscwtzDZJa1uVQXyP7w9Dd+kGwYnPbMsJrGISKiY/Q==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-xolrFw6b+2iYGl6EcOL7IJY71vvyZ0DJ3mcKtpykqPe2uscwtzDZJa1uVQXyP7w9Dd+kGwYnPbMsJrGISKiY/Q==}
+ engines: {node: '>=18.0.0'}
'@smithy/chunked-blob-reader-native@4.2.3':
- resolution:
- {
- integrity: sha512-jA5k5Udn7Y5717L86h4EIv06wIr3xn8GM1qHRi/Nf31annXcXHJjBKvgztnbn2TxH3xWrPBfgwHsOwZf0UmQWw==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-jA5k5Udn7Y5717L86h4EIv06wIr3xn8GM1qHRi/Nf31annXcXHJjBKvgztnbn2TxH3xWrPBfgwHsOwZf0UmQWw==}
+ engines: {node: '>=18.0.0'}
'@smithy/chunked-blob-reader@5.2.2':
- resolution:
- {
- integrity: sha512-St+kVicSyayWQca+I1rGitaOEH6uKgE8IUWoYnnEX26SWdWQcL6LvMSD19Lg+vYHKdT9B2Zuu7rd3i6Wnyb/iw==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-St+kVicSyayWQca+I1rGitaOEH6uKgE8IUWoYnnEX26SWdWQcL6LvMSD19Lg+vYHKdT9B2Zuu7rd3i6Wnyb/iw==}
+ engines: {node: '>=18.0.0'}
'@smithy/config-resolver@4.4.11':
- resolution:
- {
- integrity: sha512-YxFiiG4YDAtX7WMN7RuhHZLeTmRRAOyCbr+zB8e3AQzHPnUhS8zXjB1+cniPVQI3xbWsQPM0X2aaIkO/ME0ymw==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-YxFiiG4YDAtX7WMN7RuhHZLeTmRRAOyCbr+zB8e3AQzHPnUhS8zXjB1+cniPVQI3xbWsQPM0X2aaIkO/ME0ymw==}
+ engines: {node: '>=18.0.0'}
'@smithy/core@3.23.12':
- resolution:
- {
- integrity: sha512-o9VycsYNtgC+Dy3I0yrwCqv9CWicDnke0L7EVOrZtJpjb2t0EjaEofmMrYc0T1Kn3yk32zm6cspxF9u9Bj7e5w==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-o9VycsYNtgC+Dy3I0yrwCqv9CWicDnke0L7EVOrZtJpjb2t0EjaEofmMrYc0T1Kn3yk32zm6cspxF9u9Bj7e5w==}
+ engines: {node: '>=18.0.0'}
'@smithy/credential-provider-imds@4.2.12':
- resolution:
- {
- integrity: sha512-cr2lR792vNZcYMriSIj+Um3x9KWrjcu98kn234xA6reOAFMmbRpQMOv8KPgEmLLtx3eldU6c5wALKFqNOhugmg==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-cr2lR792vNZcYMriSIj+Um3x9KWrjcu98kn234xA6reOAFMmbRpQMOv8KPgEmLLtx3eldU6c5wALKFqNOhugmg==}
+ engines: {node: '>=18.0.0'}
'@smithy/eventstream-codec@4.2.12':
- resolution:
- {
- integrity: sha512-FE3bZdEl62ojmy8x4FHqxq2+BuOHlcxiH5vaZ6aqHJr3AIZzwF5jfx8dEiU/X0a8RboyNDjmXjlbr8AdEyLgiA==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-FE3bZdEl62ojmy8x4FHqxq2+BuOHlcxiH5vaZ6aqHJr3AIZzwF5jfx8dEiU/X0a8RboyNDjmXjlbr8AdEyLgiA==}
+ engines: {node: '>=18.0.0'}
'@smithy/eventstream-serde-browser@4.2.12':
- resolution:
- {
- integrity: sha512-XUSuMxlTxV5pp4VpqZf6Sa3vT/Q75FVkLSpSSE3KkWBvAQWeuWt1msTv8fJfgA4/jcJhrbrbMzN1AC/hvPmm5A==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-XUSuMxlTxV5pp4VpqZf6Sa3vT/Q75FVkLSpSSE3KkWBvAQWeuWt1msTv8fJfgA4/jcJhrbrbMzN1AC/hvPmm5A==}
+ engines: {node: '>=18.0.0'}
'@smithy/eventstream-serde-config-resolver@4.3.12':
- resolution:
- {
- integrity: sha512-7epsAZ3QvfHkngz6RXQYseyZYHlmWXSTPOfPmXkiS+zA6TBNo1awUaMFL9vxyXlGdoELmCZyZe1nQE+imbmV+Q==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-7epsAZ3QvfHkngz6RXQYseyZYHlmWXSTPOfPmXkiS+zA6TBNo1awUaMFL9vxyXlGdoELmCZyZe1nQE+imbmV+Q==}
+ engines: {node: '>=18.0.0'}
'@smithy/eventstream-serde-node@4.2.12':
- resolution:
- {
- integrity: sha512-D1pFuExo31854eAvg89KMn9Oab/wEeJR6Buy32B49A9Ogdtx5fwZPqBHUlDzaCDpycTFk2+fSQgX689Qsk7UGA==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-D1pFuExo31854eAvg89KMn9Oab/wEeJR6Buy32B49A9Ogdtx5fwZPqBHUlDzaCDpycTFk2+fSQgX689Qsk7UGA==}
+ engines: {node: '>=18.0.0'}
'@smithy/eventstream-serde-universal@4.2.12':
- resolution:
- {
- integrity: sha512-+yNuTiyBACxOJUTvbsNsSOfH9G9oKbaJE1lNL3YHpGcuucl6rPZMi3nrpehpVOVR2E07YqFFmtwpImtpzlouHQ==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-+yNuTiyBACxOJUTvbsNsSOfH9G9oKbaJE1lNL3YHpGcuucl6rPZMi3nrpehpVOVR2E07YqFFmtwpImtpzlouHQ==}
+ engines: {node: '>=18.0.0'}
'@smithy/fetch-http-handler@5.3.15':
- resolution:
- {
- integrity: sha512-T4jFU5N/yiIfrtrsb9uOQn7RdELdM/7HbyLNr6uO/mpkj1ctiVs7CihVr51w4LyQlXWDpXFn4BElf1WmQvZu/A==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-T4jFU5N/yiIfrtrsb9uOQn7RdELdM/7HbyLNr6uO/mpkj1ctiVs7CihVr51w4LyQlXWDpXFn4BElf1WmQvZu/A==}
+ engines: {node: '>=18.0.0'}
'@smithy/hash-blob-browser@4.2.13':
- resolution:
- {
- integrity: sha512-YrF4zWKh+ghLuquldj6e/RzE3xZYL8wIPfkt0MqCRphVICjyyjH8OwKD7LLlKpVEbk4FLizFfC1+gwK6XQdR3g==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-YrF4zWKh+ghLuquldj6e/RzE3xZYL8wIPfkt0MqCRphVICjyyjH8OwKD7LLlKpVEbk4FLizFfC1+gwK6XQdR3g==}
+ engines: {node: '>=18.0.0'}
'@smithy/hash-node@4.2.12':
- resolution:
- {
- integrity: sha512-QhBYbGrbxTkZ43QoTPrK72DoYviDeg6YKDrHTMJbbC+A0sml3kSjzFtXP7BtbyJnXojLfTQldGdUR0RGD8dA3w==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-QhBYbGrbxTkZ43QoTPrK72DoYviDeg6YKDrHTMJbbC+A0sml3kSjzFtXP7BtbyJnXojLfTQldGdUR0RGD8dA3w==}
+ engines: {node: '>=18.0.0'}
'@smithy/hash-stream-node@4.2.12':
- resolution:
- {
- integrity: sha512-O3YbmGExeafuM/kP7Y8r6+1y0hIh3/zn6GROx0uNlB54K9oihAL75Qtc+jFfLNliTi6pxOAYZrRKD9A7iA6UFw==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-O3YbmGExeafuM/kP7Y8r6+1y0hIh3/zn6GROx0uNlB54K9oihAL75Qtc+jFfLNliTi6pxOAYZrRKD9A7iA6UFw==}
+ engines: {node: '>=18.0.0'}
'@smithy/invalid-dependency@4.2.12':
- resolution:
- {
- integrity: sha512-/4F1zb7Z8LOu1PalTdESFHR0RbPwHd3FcaG1sI3UEIriQTWakysgJr65lc1jj6QY5ye7aFsisajotH6UhWfm/g==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-/4F1zb7Z8LOu1PalTdESFHR0RbPwHd3FcaG1sI3UEIriQTWakysgJr65lc1jj6QY5ye7aFsisajotH6UhWfm/g==}
+ engines: {node: '>=18.0.0'}
'@smithy/is-array-buffer@2.2.0':
- resolution:
- {
- integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==,
- }
- engines: { node: '>=14.0.0' }
+ resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==}
+ engines: {node: '>=14.0.0'}
'@smithy/is-array-buffer@4.2.2':
- resolution:
- {
- integrity: sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow==}
+ engines: {node: '>=18.0.0'}
'@smithy/md5-js@4.2.12':
- resolution:
- {
- integrity: sha512-W/oIpHCpWU2+iAkfZYyGWE+qkpuf3vEXHLxQQDx9FPNZTTdnul0dZ2d/gUFrtQ5je1G2kp4cjG0/24YueG2LbQ==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-W/oIpHCpWU2+iAkfZYyGWE+qkpuf3vEXHLxQQDx9FPNZTTdnul0dZ2d/gUFrtQ5je1G2kp4cjG0/24YueG2LbQ==}
+ engines: {node: '>=18.0.0'}
'@smithy/middleware-content-length@4.2.12':
- resolution:
- {
- integrity: sha512-YE58Yz+cvFInWI/wOTrB+DbvUVz/pLn5mC5MvOV4fdRUc6qGwygyngcucRQjAhiCEbmfLOXX0gntSIcgMvAjmA==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-YE58Yz+cvFInWI/wOTrB+DbvUVz/pLn5mC5MvOV4fdRUc6qGwygyngcucRQjAhiCEbmfLOXX0gntSIcgMvAjmA==}
+ engines: {node: '>=18.0.0'}
'@smithy/middleware-endpoint@4.4.25':
- resolution:
- {
- integrity: sha512-dqjLwZs2eBxIUG6Qtw8/YZ4DvzHGIf0DA18wrgtfP6a50UIO7e2nY0FPdcbv5tVJKqWCCU5BmGMOUwT7Puan+A==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-dqjLwZs2eBxIUG6Qtw8/YZ4DvzHGIf0DA18wrgtfP6a50UIO7e2nY0FPdcbv5tVJKqWCCU5BmGMOUwT7Puan+A==}
+ engines: {node: '>=18.0.0'}
'@smithy/middleware-endpoint@4.4.27':
- resolution:
- {
- integrity: sha512-T3TFfUgXQlpcg+UdzcAISdZpj4Z+XECZ/cefgA6wLBd6V4lRi0svN2hBouN/be9dXQ31X4sLWz3fAQDf+nt6BA==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-T3TFfUgXQlpcg+UdzcAISdZpj4Z+XECZ/cefgA6wLBd6V4lRi0svN2hBouN/be9dXQ31X4sLWz3fAQDf+nt6BA==}
+ engines: {node: '>=18.0.0'}
'@smithy/middleware-retry@4.4.42':
- resolution:
- {
- integrity: sha512-vbwyqHRIpIZutNXZpLAozakzamcINaRCpEy1MYmK6xBeW3xN+TyPRA123GjXnuxZIjc9848MRRCugVMTXxC4Eg==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-vbwyqHRIpIZutNXZpLAozakzamcINaRCpEy1MYmK6xBeW3xN+TyPRA123GjXnuxZIjc9848MRRCugVMTXxC4Eg==}
+ engines: {node: '>=18.0.0'}
'@smithy/middleware-serde@4.2.15':
- resolution:
- {
- integrity: sha512-ExYhcltZSli0pgAKOpQQe1DLFBLryeZ22605y/YS+mQpdNWekum9Ujb/jMKfJKgjtz1AZldtwA/wCYuKJgjjlg==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-ExYhcltZSli0pgAKOpQQe1DLFBLryeZ22605y/YS+mQpdNWekum9Ujb/jMKfJKgjtz1AZldtwA/wCYuKJgjjlg==}
+ engines: {node: '>=18.0.0'}
'@smithy/middleware-stack@4.2.12':
- resolution:
- {
- integrity: sha512-kruC5gRHwsCOuyCd4ouQxYjgRAym2uDlCvQ5acuMtRrcdfg7mFBg6blaxcJ09STpt3ziEkis6bhg1uwrWU7txw==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-kruC5gRHwsCOuyCd4ouQxYjgRAym2uDlCvQ5acuMtRrcdfg7mFBg6blaxcJ09STpt3ziEkis6bhg1uwrWU7txw==}
+ engines: {node: '>=18.0.0'}
'@smithy/node-config-provider@4.3.12':
- resolution:
- {
- integrity: sha512-tr2oKX2xMcO+rBOjobSwVAkV05SIfUKz8iI53rzxEmgW3GOOPOv0UioSDk+J8OpRQnpnhsO3Af6IEBabQBVmiw==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-tr2oKX2xMcO+rBOjobSwVAkV05SIfUKz8iI53rzxEmgW3GOOPOv0UioSDk+J8OpRQnpnhsO3Af6IEBabQBVmiw==}
+ engines: {node: '>=18.0.0'}
'@smithy/node-http-handler@4.4.16':
- resolution:
- {
- integrity: sha512-ULC8UCS/HivdCB3jhi+kLFYe4B5gxH2gi9vHBfEIiRrT2jfKiZNiETJSlzRtE6B26XbBHjPtc8iZKSNqMol9bw==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-ULC8UCS/HivdCB3jhi+kLFYe4B5gxH2gi9vHBfEIiRrT2jfKiZNiETJSlzRtE6B26XbBHjPtc8iZKSNqMol9bw==}
+ engines: {node: '>=18.0.0'}
'@smithy/property-provider@4.2.12':
- resolution:
- {
- integrity: sha512-jqve46eYU1v7pZ5BM+fmkbq3DerkSluPr5EhvOcHxygxzD05ByDRppRwRPPpFrsFo5yDtCYLKu+kreHKVrvc7A==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-jqve46eYU1v7pZ5BM+fmkbq3DerkSluPr5EhvOcHxygxzD05ByDRppRwRPPpFrsFo5yDtCYLKu+kreHKVrvc7A==}
+ engines: {node: '>=18.0.0'}
'@smithy/protocol-http@5.3.12':
- resolution:
- {
- integrity: sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw==}
+ engines: {node: '>=18.0.0'}
'@smithy/querystring-builder@4.2.12':
- resolution:
- {
- integrity: sha512-6wTZjGABQufekycfDGMEB84BgtdOE/rCVTov+EDXQ8NHKTUNIp/j27IliwP7tjIU9LR+sSzyGBOXjeEtVgzCHg==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-6wTZjGABQufekycfDGMEB84BgtdOE/rCVTov+EDXQ8NHKTUNIp/j27IliwP7tjIU9LR+sSzyGBOXjeEtVgzCHg==}
+ engines: {node: '>=18.0.0'}
'@smithy/querystring-parser@4.2.12':
- resolution:
- {
- integrity: sha512-P2OdvrgiAKpkPNKlKUtWbNZKB1XjPxM086NeVhK+W+wI46pIKdWBe5QyXvhUm3MEcyS/rkLvY8rZzyUdmyDZBw==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-P2OdvrgiAKpkPNKlKUtWbNZKB1XjPxM086NeVhK+W+wI46pIKdWBe5QyXvhUm3MEcyS/rkLvY8rZzyUdmyDZBw==}
+ engines: {node: '>=18.0.0'}
'@smithy/service-error-classification@4.2.12':
- resolution:
- {
- integrity: sha512-LlP29oSQN0Tw0b6D0Xo6BIikBswuIiGYbRACy5ujw/JgWSzTdYj46U83ssf6Ux0GyNJVivs2uReU8pt7Eu9okQ==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-LlP29oSQN0Tw0b6D0Xo6BIikBswuIiGYbRACy5ujw/JgWSzTdYj46U83ssf6Ux0GyNJVivs2uReU8pt7Eu9okQ==}
+ engines: {node: '>=18.0.0'}
'@smithy/shared-ini-file-loader@4.4.7':
- resolution:
- {
- integrity: sha512-HrOKWsUb+otTeo1HxVWeEb99t5ER1XrBi/xka2Wv6NVmTbuCUC1dvlrksdvxFtODLBjsC+PHK+fuy2x/7Ynyiw==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-HrOKWsUb+otTeo1HxVWeEb99t5ER1XrBi/xka2Wv6NVmTbuCUC1dvlrksdvxFtODLBjsC+PHK+fuy2x/7Ynyiw==}
+ engines: {node: '>=18.0.0'}
'@smithy/signature-v4@5.3.12':
- resolution:
- {
- integrity: sha512-B/FBwO3MVOL00DaRSXfXfa/TRXRheagt/q5A2NM13u7q+sHS59EOVGQNfG7DkmVtdQm5m3vOosoKAXSqn/OEgw==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-B/FBwO3MVOL00DaRSXfXfa/TRXRheagt/q5A2NM13u7q+sHS59EOVGQNfG7DkmVtdQm5m3vOosoKAXSqn/OEgw==}
+ engines: {node: '>=18.0.0'}
'@smithy/smithy-client@4.12.5':
- resolution:
- {
- integrity: sha512-UqwYawyqSr/aog8mnLnfbPurS0gi4G7IYDcD28cUIBhsvWs1+rQcL2IwkUQ+QZ7dibaoRzhNF99fAQ9AUcO00w==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-UqwYawyqSr/aog8mnLnfbPurS0gi4G7IYDcD28cUIBhsvWs1+rQcL2IwkUQ+QZ7dibaoRzhNF99fAQ9AUcO00w==}
+ engines: {node: '>=18.0.0'}
'@smithy/smithy-client@4.12.7':
- resolution:
- {
- integrity: sha512-q3gqnwml60G44FECaEEsdQMplYhDMZYCtYhMCzadCnRnnHIobZJjegmdoUo6ieLQlPUzvrMdIJUpx6DoPmzANQ==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-q3gqnwml60G44FECaEEsdQMplYhDMZYCtYhMCzadCnRnnHIobZJjegmdoUo6ieLQlPUzvrMdIJUpx6DoPmzANQ==}
+ engines: {node: '>=18.0.0'}
'@smithy/types@4.13.1':
- resolution:
- {
- integrity: sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g==}
+ engines: {node: '>=18.0.0'}
'@smithy/url-parser@4.2.12':
- resolution:
- {
- integrity: sha512-wOPKPEpso+doCZGIlr+e1lVI6+9VAKfL4kZWFgzVgGWY2hZxshNKod4l2LXS3PRC9otH/JRSjtEHqQ/7eLciRA==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-wOPKPEpso+doCZGIlr+e1lVI6+9VAKfL4kZWFgzVgGWY2hZxshNKod4l2LXS3PRC9otH/JRSjtEHqQ/7eLciRA==}
+ engines: {node: '>=18.0.0'}
'@smithy/util-base64@4.3.2':
- resolution:
- {
- integrity: sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ==}
+ engines: {node: '>=18.0.0'}
'@smithy/util-body-length-browser@4.2.2':
- resolution:
- {
- integrity: sha512-JKCrLNOup3OOgmzeaKQwi4ZCTWlYR5H4Gm1r2uTMVBXoemo1UEghk5vtMi1xSu2ymgKVGW631e2fp9/R610ZjQ==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-JKCrLNOup3OOgmzeaKQwi4ZCTWlYR5H4Gm1r2uTMVBXoemo1UEghk5vtMi1xSu2ymgKVGW631e2fp9/R610ZjQ==}
+ engines: {node: '>=18.0.0'}
'@smithy/util-body-length-node@4.2.3':
- resolution:
- {
- integrity: sha512-ZkJGvqBzMHVHE7r/hcuCxlTY8pQr1kMtdsVPs7ex4mMU+EAbcXppfo5NmyxMYi2XU49eqaz56j2gsk4dHHPG/g==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-ZkJGvqBzMHVHE7r/hcuCxlTY8pQr1kMtdsVPs7ex4mMU+EAbcXppfo5NmyxMYi2XU49eqaz56j2gsk4dHHPG/g==}
+ engines: {node: '>=18.0.0'}
'@smithy/util-buffer-from@2.2.0':
- resolution:
- {
- integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==,
- }
- engines: { node: '>=14.0.0' }
+ resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==}
+ engines: {node: '>=14.0.0'}
'@smithy/util-buffer-from@4.2.2':
- resolution:
- {
- integrity: sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q==}
+ engines: {node: '>=18.0.0'}
'@smithy/util-config-provider@4.2.2':
- resolution:
- {
- integrity: sha512-dWU03V3XUprJwaUIFVv4iOnS1FC9HnMHDfUrlNDSh4315v0cWyaIErP8KiqGVbf5z+JupoVpNM7ZB3jFiTejvQ==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-dWU03V3XUprJwaUIFVv4iOnS1FC9HnMHDfUrlNDSh4315v0cWyaIErP8KiqGVbf5z+JupoVpNM7ZB3jFiTejvQ==}
+ engines: {node: '>=18.0.0'}
'@smithy/util-defaults-mode-browser@4.3.41':
- resolution:
- {
- integrity: sha512-M1w1Ux0rSVvBOxIIiqbxvZvhnjQ+VUjJrugtORE90BbadSTH+jsQL279KRL3Hv0w69rE7EuYkV/4Lepz/NBW9g==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-M1w1Ux0rSVvBOxIIiqbxvZvhnjQ+VUjJrugtORE90BbadSTH+jsQL279KRL3Hv0w69rE7EuYkV/4Lepz/NBW9g==}
+ engines: {node: '>=18.0.0'}
'@smithy/util-defaults-mode-node@4.2.44':
- resolution:
- {
- integrity: sha512-YPze3/lD1KmWuZsl9JlfhcgGLX7AXhSoaCDtiPntUjNW5/YY0lOHjkcgxyE9x/h5vvS1fzDifMGjzqnNlNiqOQ==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-YPze3/lD1KmWuZsl9JlfhcgGLX7AXhSoaCDtiPntUjNW5/YY0lOHjkcgxyE9x/h5vvS1fzDifMGjzqnNlNiqOQ==}
+ engines: {node: '>=18.0.0'}
'@smithy/util-endpoints@3.3.3':
- resolution:
- {
- integrity: sha512-VACQVe50j0HZPjpwWcjyT51KUQ4AnsvEaQ2lKHOSL4mNLD0G9BjEniQ+yCt1qqfKfiAHRAts26ud7hBjamrwig==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-VACQVe50j0HZPjpwWcjyT51KUQ4AnsvEaQ2lKHOSL4mNLD0G9BjEniQ+yCt1qqfKfiAHRAts26ud7hBjamrwig==}
+ engines: {node: '>=18.0.0'}
'@smithy/util-hex-encoding@4.2.2':
- resolution:
- {
- integrity: sha512-Qcz3W5vuHK4sLQdyT93k/rfrUwdJ8/HZ+nMUOyGdpeGA1Wxt65zYwi3oEl9kOM+RswvYq90fzkNDahPS8K0OIg==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-Qcz3W5vuHK4sLQdyT93k/rfrUwdJ8/HZ+nMUOyGdpeGA1Wxt65zYwi3oEl9kOM+RswvYq90fzkNDahPS8K0OIg==}
+ engines: {node: '>=18.0.0'}
'@smithy/util-middleware@4.2.12':
- resolution:
- {
- integrity: sha512-Er805uFUOvgc0l8nv0e0su0VFISoxhJ/AwOn3gL2NWNY2LUEldP5WtVcRYSQBcjg0y9NfG8JYrCJaYDpupBHJQ==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-Er805uFUOvgc0l8nv0e0su0VFISoxhJ/AwOn3gL2NWNY2LUEldP5WtVcRYSQBcjg0y9NfG8JYrCJaYDpupBHJQ==}
+ engines: {node: '>=18.0.0'}
'@smithy/util-retry@4.2.12':
- resolution:
- {
- integrity: sha512-1zopLDUEOwumjcHdJ1mwBHddubYF8GMQvstVCLC54Y46rqoHwlIU+8ZzUeaBcD+WCJHyDGSeZ2ml9YSe9aqcoQ==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-1zopLDUEOwumjcHdJ1mwBHddubYF8GMQvstVCLC54Y46rqoHwlIU+8ZzUeaBcD+WCJHyDGSeZ2ml9YSe9aqcoQ==}
+ engines: {node: '>=18.0.0'}
'@smithy/util-stream@4.5.20':
- resolution:
- {
- integrity: sha512-4yXLm5n/B5SRBR2p8cZ90Sbv4zL4NKsgxdzCzp/83cXw2KxLEumt5p+GAVyRNZgQOSrzXn9ARpO0lUe8XSlSDw==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-4yXLm5n/B5SRBR2p8cZ90Sbv4zL4NKsgxdzCzp/83cXw2KxLEumt5p+GAVyRNZgQOSrzXn9ARpO0lUe8XSlSDw==}
+ engines: {node: '>=18.0.0'}
'@smithy/util-uri-escape@4.2.2':
- resolution:
- {
- integrity: sha512-2kAStBlvq+lTXHyAZYfJRb/DfS3rsinLiwb+69SstC9Vb0s9vNWkRwpnj918Pfi85mzi42sOqdV72OLxWAISnw==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-2kAStBlvq+lTXHyAZYfJRb/DfS3rsinLiwb+69SstC9Vb0s9vNWkRwpnj918Pfi85mzi42sOqdV72OLxWAISnw==}
+ engines: {node: '>=18.0.0'}
'@smithy/util-utf8@2.3.0':
- resolution:
- {
- integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==,
- }
- engines: { node: '>=14.0.0' }
+ resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==}
+ engines: {node: '>=14.0.0'}
'@smithy/util-utf8@4.2.2':
- resolution:
- {
- integrity: sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw==}
+ engines: {node: '>=18.0.0'}
'@smithy/util-waiter@4.2.13':
- resolution:
- {
- integrity: sha512-2zdZ9DTHngRtcYxJK1GUDxruNr53kv5W2Lupe0LMU+Imr6ohQg8M2T14MNkj1Y0wS3FFwpgpGQyvuaMF7CiTmQ==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-2zdZ9DTHngRtcYxJK1GUDxruNr53kv5W2Lupe0LMU+Imr6ohQg8M2T14MNkj1Y0wS3FFwpgpGQyvuaMF7CiTmQ==}
+ engines: {node: '>=18.0.0'}
'@smithy/uuid@1.1.2':
- resolution:
- {
- integrity: sha512-O/IEdcCUKkubz60tFbGA7ceITTAJsty+lBjNoorP4Z6XRqaFb/OjQjZODophEcuq68nKm6/0r+6/lLQ+XVpk8g==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-O/IEdcCUKkubz60tFbGA7ceITTAJsty+lBjNoorP4Z6XRqaFb/OjQjZODophEcuq68nKm6/0r+6/lLQ+XVpk8g==}
+ engines: {node: '>=18.0.0'}
'@styled-system/background@5.1.2':
- resolution:
- {
- integrity: sha512-jtwH2C/U6ssuGSvwTN3ri/IyjdHb8W9X/g8Y0JLcrH02G+BW3OS8kZdHphF1/YyRklnrKrBT2ngwGUK6aqqV3A==,
- }
+ resolution: {integrity: sha512-jtwH2C/U6ssuGSvwTN3ri/IyjdHb8W9X/g8Y0JLcrH02G+BW3OS8kZdHphF1/YyRklnrKrBT2ngwGUK6aqqV3A==}
'@styled-system/border@5.1.5':
- resolution:
- {
- integrity: sha512-JvddhNrnhGigtzWRCVuAHepniyVi6hBlimxWDVAdcTuk7aRn9BYJUwfHslURtwYFsF5FoEs8Zmr1oZq2M1AP0A==,
- }
+ resolution: {integrity: sha512-JvddhNrnhGigtzWRCVuAHepniyVi6hBlimxWDVAdcTuk7aRn9BYJUwfHslURtwYFsF5FoEs8Zmr1oZq2M1AP0A==}
'@styled-system/color@5.1.2':
- resolution:
- {
- integrity: sha512-1kCkeKDZkt4GYkuFNKc7vJQMcOmTl3bJY3YBUs7fCNM6mMYJeT1pViQ2LwBSBJytj3AB0o4IdLBoepgSgGl5MA==,
- }
+ resolution: {integrity: sha512-1kCkeKDZkt4GYkuFNKc7vJQMcOmTl3bJY3YBUs7fCNM6mMYJeT1pViQ2LwBSBJytj3AB0o4IdLBoepgSgGl5MA==}
'@styled-system/core@5.1.2':
- resolution:
- {
- integrity: sha512-XclBDdNIy7OPOsN4HBsawG2eiWfCcuFt6gxKn1x4QfMIgeO6TOlA2pZZ5GWZtIhCUqEPTgIBta6JXsGyCkLBYw==,
- }
+ resolution: {integrity: sha512-XclBDdNIy7OPOsN4HBsawG2eiWfCcuFt6gxKn1x4QfMIgeO6TOlA2pZZ5GWZtIhCUqEPTgIBta6JXsGyCkLBYw==}
'@styled-system/css@5.1.5':
- resolution:
- {
- integrity: sha512-XkORZdS5kypzcBotAMPBoeckDs9aSZVkvrAlq5K3xP8IMAUek+x2O4NtwoSgkYkWWzVBu6DGdFZLR790QWGG+A==,
- }
+ resolution: {integrity: sha512-XkORZdS5kypzcBotAMPBoeckDs9aSZVkvrAlq5K3xP8IMAUek+x2O4NtwoSgkYkWWzVBu6DGdFZLR790QWGG+A==}
'@styled-system/flexbox@5.1.2':
- resolution:
- {
- integrity: sha512-6hHV52+eUk654Y1J2v77B8iLeBNtc+SA3R4necsu2VVinSD7+XY5PCCEzBFaWs42dtOEDIa2lMrgL0YBC01mDQ==,
- }
+ resolution: {integrity: sha512-6hHV52+eUk654Y1J2v77B8iLeBNtc+SA3R4necsu2VVinSD7+XY5PCCEzBFaWs42dtOEDIa2lMrgL0YBC01mDQ==}
'@styled-system/grid@5.1.2':
- resolution:
- {
- integrity: sha512-K3YiV1KyHHzgdNuNlaw8oW2ktMuGga99o1e/NAfTEi5Zsa7JXxzwEnVSDSBdJC+z6R8WYTCYRQC6bkVFcvdTeg==,
- }
+ resolution: {integrity: sha512-K3YiV1KyHHzgdNuNlaw8oW2ktMuGga99o1e/NAfTEi5Zsa7JXxzwEnVSDSBdJC+z6R8WYTCYRQC6bkVFcvdTeg==}
'@styled-system/layout@5.1.2':
- resolution:
- {
- integrity: sha512-wUhkMBqSeacPFhoE9S6UF3fsMEKFv91gF4AdDWp0Aym1yeMPpqz9l9qS/6vjSsDPF7zOb5cOKC3tcKKOMuDCPw==,
- }
+ resolution: {integrity: sha512-wUhkMBqSeacPFhoE9S6UF3fsMEKFv91gF4AdDWp0Aym1yeMPpqz9l9qS/6vjSsDPF7zOb5cOKC3tcKKOMuDCPw==}
'@styled-system/position@5.1.2':
- resolution:
- {
- integrity: sha512-60IZfMXEOOZe3l1mCu6sj/2NAyUmES2kR9Kzp7s2D3P4qKsZWxD1Se1+wJvevb+1TP+ZMkGPEYYXRyU8M1aF5A==,
- }
+ resolution: {integrity: sha512-60IZfMXEOOZe3l1mCu6sj/2NAyUmES2kR9Kzp7s2D3P4qKsZWxD1Se1+wJvevb+1TP+ZMkGPEYYXRyU8M1aF5A==}
'@styled-system/shadow@5.1.2':
- resolution:
- {
- integrity: sha512-wqniqYb7XuZM7K7C0d1Euxc4eGtqEe/lvM0WjuAFsQVImiq6KGT7s7is+0bNI8O4Dwg27jyu4Lfqo/oIQXNzAg==,
- }
+ resolution: {integrity: sha512-wqniqYb7XuZM7K7C0d1Euxc4eGtqEe/lvM0WjuAFsQVImiq6KGT7s7is+0bNI8O4Dwg27jyu4Lfqo/oIQXNzAg==}
'@styled-system/space@5.1.2':
- resolution:
- {
- integrity: sha512-+zzYpR8uvfhcAbaPXhH8QgDAV//flxqxSjHiS9cDFQQUSznXMQmxJegbhcdEF7/eNnJgHeIXv1jmny78kipgBA==,
- }
+ resolution: {integrity: sha512-+zzYpR8uvfhcAbaPXhH8QgDAV//flxqxSjHiS9cDFQQUSznXMQmxJegbhcdEF7/eNnJgHeIXv1jmny78kipgBA==}
'@styled-system/typography@5.1.2':
- resolution:
- {
- integrity: sha512-BxbVUnN8N7hJ4aaPOd7wEsudeT7CxarR+2hns8XCX1zp0DFfbWw4xYa/olA0oQaqx7F1hzDg+eRaGzAJbF+jOg==,
- }
+ resolution: {integrity: sha512-BxbVUnN8N7hJ4aaPOd7wEsudeT7CxarR+2hns8XCX1zp0DFfbWw4xYa/olA0oQaqx7F1hzDg+eRaGzAJbF+jOg==}
'@styled-system/variant@5.1.5':
- resolution:
- {
- integrity: sha512-Yn8hXAFoWIro8+Q5J8YJd/mP85Teiut3fsGVR9CAxwgNfIAiqlYxsk5iHU7VHJks/0KjL4ATSjmbtCDC/4l1qw==,
- }
+ resolution: {integrity: sha512-Yn8hXAFoWIro8+Q5J8YJd/mP85Teiut3fsGVR9CAxwgNfIAiqlYxsk5iHU7VHJks/0KjL4ATSjmbtCDC/4l1qw==}
'@swc/helpers@0.5.19':
- resolution:
- {
- integrity: sha512-QamiFeIK3txNjgUTNppE6MiG3p7TdninpZu0E0PbqVh1a9FNLT2FRhisaa4NcaX52XVhA5l7Pk58Ft7Sqi/2sA==,
- }
+ resolution: {integrity: sha512-QamiFeIK3txNjgUTNppE6MiG3p7TdninpZu0E0PbqVh1a9FNLT2FRhisaa4NcaX52XVhA5l7Pk58Ft7Sqi/2sA==}
'@tanstack/query-core@5.90.20':
- resolution:
- {
- integrity: sha512-OMD2HLpNouXEfZJWcKeVKUgQ5n+n3A2JFmBaScpNDUqSrQSjiveC7dKMe53uJUg1nDG16ttFPz2xfilz6i2uVg==,
- }
+ resolution: {integrity: sha512-OMD2HLpNouXEfZJWcKeVKUgQ5n+n3A2JFmBaScpNDUqSrQSjiveC7dKMe53uJUg1nDG16ttFPz2xfilz6i2uVg==}
'@tanstack/react-query@5.90.21':
- resolution:
- {
- integrity: sha512-0Lu6y5t+tvlTJMTO7oh5NSpJfpg/5D41LlThfepTixPYkJ0sE2Jj0m0f6yYqujBwIXlId87e234+MxG3D3g7kg==,
- }
+ resolution: {integrity: sha512-0Lu6y5t+tvlTJMTO7oh5NSpJfpg/5D41LlThfepTixPYkJ0sE2Jj0m0f6yYqujBwIXlId87e234+MxG3D3g7kg==}
peerDependencies:
react: ^18 || ^19
'@tanstack/react-virtual@3.13.22':
- resolution:
- {
- integrity: sha512-EaOrBBJLi3M0bTMQRjGkxLXRw7Gizwntoy5E2Q2UnSbML7Mo2a1P/Hfkw5tw9FLzK62bj34Jl6VNbQfRV6eJcA==,
- }
+ resolution: {integrity: sha512-EaOrBBJLi3M0bTMQRjGkxLXRw7Gizwntoy5E2Q2UnSbML7Mo2a1P/Hfkw5tw9FLzK62bj34Jl6VNbQfRV6eJcA==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
'@tanstack/virtual-core@3.13.22':
- resolution:
- {
- integrity: sha512-isuUGKsc5TAPDoHSbWTbl1SCil54zOS2MiWz/9GCWHPUQOvNTQx8qJEWC7UWR0lShhbK0Lmkcf0SZYxvch7G3g==,
- }
+ resolution: {integrity: sha512-isuUGKsc5TAPDoHSbWTbl1SCil54zOS2MiWz/9GCWHPUQOvNTQx8qJEWC7UWR0lShhbK0Lmkcf0SZYxvch7G3g==}
'@testing-library/dom@7.31.2':
- resolution:
- {
- integrity: sha512-3UqjCpey6HiTZT92vODYLPxTBWlM8ZOOjr3LX5F37/VRipW2M1kX6I/Cm4VXzteZqfGfagg8yXywpcOgQBlNsQ==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-3UqjCpey6HiTZT92vODYLPxTBWlM8ZOOjr3LX5F37/VRipW2M1kX6I/Cm4VXzteZqfGfagg8yXywpcOgQBlNsQ==}
+ engines: {node: '>=10'}
'@testing-library/jest-dom@5.11.10':
- resolution:
- {
- integrity: sha512-FuKiq5xuk44Fqm0000Z9w0hjOdwZRNzgx7xGGxQYepWFZy+OYUMOT/wPI4nLYXCaVltNVpU1W/qmD88wLWDsqQ==,
- }
- engines: { node: '>=8', npm: '>=6', yarn: '>=1' }
+ resolution: {integrity: sha512-FuKiq5xuk44Fqm0000Z9w0hjOdwZRNzgx7xGGxQYepWFZy+OYUMOT/wPI4nLYXCaVltNVpU1W/qmD88wLWDsqQ==}
+ engines: {node: '>=8', npm: '>=6', yarn: '>=1'}
'@testing-library/react@11.2.5':
- resolution:
- {
- integrity: sha512-yEx7oIa/UWLe2F2dqK0FtMF9sJWNXD+2PPtp39BvE0Kh9MJ9Kl0HrZAgEuhUJR+Lx8Di6Xz+rKwSdEPY2UV8ZQ==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-yEx7oIa/UWLe2F2dqK0FtMF9sJWNXD+2PPtp39BvE0Kh9MJ9Kl0HrZAgEuhUJR+Lx8Di6Xz+rKwSdEPY2UV8ZQ==}
+ engines: {node: '>=10'}
peerDependencies:
react: '*'
react-dom: '*'
'@tsconfig/node10@1.0.12':
- resolution:
- {
- integrity: sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==,
- }
+ resolution: {integrity: sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==}
'@tsconfig/node12@1.0.11':
- resolution:
- {
- integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==,
- }
+ resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==}
'@tsconfig/node14@1.0.3':
- resolution:
- {
- integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==,
- }
+ resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==}
'@tsconfig/node16@1.0.4':
- resolution:
- {
- integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==,
- }
+ resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==}
'@tufjs/canonical-json@2.0.0':
- resolution:
- {
- integrity: sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==,
- }
- engines: { node: ^16.14.0 || >=18.0.0 }
+ resolution: {integrity: sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==}
+ engines: {node: ^16.14.0 || >=18.0.0}
'@tufjs/models@2.0.1':
- resolution:
- {
- integrity: sha512-92F7/SFyufn4DXsha9+QfKnN03JGqtMFMXgSHbZOo8JG59WkTni7UzAouNQDf7AuP9OAMxVOPQcqG3sB7w+kkg==,
- }
- engines: { node: ^16.14.0 || >=18.0.0 }
+ resolution: {integrity: sha512-92F7/SFyufn4DXsha9+QfKnN03JGqtMFMXgSHbZOo8JG59WkTni7UzAouNQDf7AuP9OAMxVOPQcqG3sB7w+kkg==}
+ engines: {node: ^16.14.0 || >=18.0.0}
'@tybys/wasm-util@0.10.1':
- resolution:
- {
- integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==,
- }
+ resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==}
'@tybys/wasm-util@0.9.0':
- resolution:
- {
- integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==,
- }
+ resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==}
'@types/accepts@1.3.7':
- resolution:
- {
- integrity: sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==,
- }
+ resolution: {integrity: sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==}
'@types/aria-query@4.2.2':
- resolution:
- {
- integrity: sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==,
- }
+ resolution: {integrity: sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==}
'@types/babel__core@7.20.5':
- resolution:
- {
- integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==,
- }
+ resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
'@types/babel__generator@7.27.0':
- resolution:
- {
- integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==,
- }
+ resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==}
'@types/babel__template@7.4.4':
- resolution:
- {
- integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==,
- }
+ resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==}
'@types/babel__traverse@7.28.0':
- resolution:
- {
- integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==,
- }
+ resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==}
'@types/body-parser@1.19.6':
- resolution:
- {
- integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==,
- }
+ resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==}
'@types/connect@3.4.38':
- resolution:
- {
- integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==,
- }
+ resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==}
'@types/content-disposition@0.5.9':
- resolution:
- {
- integrity: sha512-8uYXI3Gw35MhiVYhG3s295oihrxRyytcRHjSjqnqZVDDy/xcGBRny7+Xj1Wgfhv5QzRtN2hB2dVRBUX9XW3UcQ==,
- }
+ resolution: {integrity: sha512-8uYXI3Gw35MhiVYhG3s295oihrxRyytcRHjSjqnqZVDDy/xcGBRny7+Xj1Wgfhv5QzRtN2hB2dVRBUX9XW3UcQ==}
'@types/cookiejar@2.1.5':
- resolution:
- {
- integrity: sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==,
- }
+ resolution: {integrity: sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==}
'@types/cookies@0.9.2':
- resolution:
- {
- integrity: sha512-1AvkDdZM2dbyFybL4fxpuNCaWyv//0AwsuUk2DWeXyM1/5ZKm6W3z6mQi24RZ4l2ucY+bkSHzbDVpySqPGuV8A==,
- }
+ resolution: {integrity: sha512-1AvkDdZM2dbyFybL4fxpuNCaWyv//0AwsuUk2DWeXyM1/5ZKm6W3z6mQi24RZ4l2ucY+bkSHzbDVpySqPGuV8A==}
'@types/cors@2.8.19':
- resolution:
- {
- integrity: sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==,
- }
+ resolution: {integrity: sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==}
'@types/estree@1.0.8':
- resolution:
- {
- integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==,
- }
+ resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
'@types/express-serve-static-core@5.1.0':
- resolution:
- {
- integrity: sha512-jnHMsrd0Mwa9Cf4IdOzbz543y4XJepXrbia2T4b6+spXC2We3t1y6K44D3mR8XMFSXMCf3/l7rCgddfx7UNVBA==,
- }
+ resolution: {integrity: sha512-jnHMsrd0Mwa9Cf4IdOzbz543y4XJepXrbia2T4b6+spXC2We3t1y6K44D3mR8XMFSXMCf3/l7rCgddfx7UNVBA==}
'@types/express@5.0.6':
- resolution:
- {
- integrity: sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA==,
- }
+ resolution: {integrity: sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA==}
'@types/geojson@7946.0.16':
- resolution:
- {
- integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==,
- }
+ resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==}
'@types/graphql-upload@8.0.12':
- resolution:
- {
- integrity: sha512-M0ZPZqNUzKNB16q5woEzgG/Q8DjICV80K7JvDSRnDmDFfrRdfFX/n6PbmqAN7gCzECcHVnw1gk6N4Cg0FwxCqA==,
- }
+ resolution: {integrity: sha512-M0ZPZqNUzKNB16q5woEzgG/Q8DjICV80K7JvDSRnDmDFfrRdfFX/n6PbmqAN7gCzECcHVnw1gk6N4Cg0FwxCqA==}
'@types/http-assert@1.5.6':
- resolution:
- {
- integrity: sha512-TTEwmtjgVbYAzZYWyeHPrrtWnfVkm8tQkP8P21uQifPgMRgjrow3XDEYqucuC8SKZJT7pUnhU/JymvjggxO9vw==,
- }
+ resolution: {integrity: sha512-TTEwmtjgVbYAzZYWyeHPrrtWnfVkm8tQkP8P21uQifPgMRgjrow3XDEYqucuC8SKZJT7pUnhU/JymvjggxO9vw==}
'@types/http-errors@2.0.5':
- resolution:
- {
- integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==,
- }
+ resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==}
'@types/interpret@1.1.4':
- resolution:
- {
- integrity: sha512-r+tPKWHYqaxJOYA3Eik0mMi+SEREqOXLmsooRFmc6GHv7nWUDixFtKN+cegvsPlDcEZd9wxsdp041v2imQuvag==,
- }
+ resolution: {integrity: sha512-r+tPKWHYqaxJOYA3Eik0mMi+SEREqOXLmsooRFmc6GHv7nWUDixFtKN+cegvsPlDcEZd9wxsdp041v2imQuvag==}
'@types/istanbul-lib-coverage@2.0.6':
- resolution:
- {
- integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==,
- }
+ resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==}
'@types/istanbul-lib-report@3.0.3':
- resolution:
- {
- integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==,
- }
+ resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==}
'@types/istanbul-reports@3.0.4':
- resolution:
- {
- integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==,
- }
+ resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==}
'@types/jest-in-case@1.0.9':
- resolution:
- {
- integrity: sha512-tapHpzWGjCC/hxYJyzbJ/5ZV6rA2153Sve5lGJUAIA1Jzrphfp27TznAWfGeXf+d8TLN7zMujaC0UwNQwSJaQg==,
- }
+ resolution: {integrity: sha512-tapHpzWGjCC/hxYJyzbJ/5ZV6rA2153Sve5lGJUAIA1Jzrphfp27TznAWfGeXf+d8TLN7zMujaC0UwNQwSJaQg==}
'@types/jest@30.0.0':
- resolution:
- {
- integrity: sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==,
- }
+ resolution: {integrity: sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==}
'@types/js-yaml@4.0.9':
- resolution:
- {
- integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==,
- }
+ resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==}
'@types/json-schema@7.0.15':
- resolution:
- {
- integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==,
- }
+ resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
'@types/keygrip@1.0.6':
- resolution:
- {
- integrity: sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ==,
- }
+ resolution: {integrity: sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ==}
'@types/koa-compose@3.2.9':
- resolution:
- {
- integrity: sha512-BroAZ9FTvPiCy0Pi8tjD1OfJ7bgU1gQf0eR6e1Vm+JJATy9eKOG3hQMFtMciMawiSOVnLMdmUOC46s7HBhSTsA==,
- }
+ resolution: {integrity: sha512-BroAZ9FTvPiCy0Pi8tjD1OfJ7bgU1gQf0eR6e1Vm+JJATy9eKOG3hQMFtMciMawiSOVnLMdmUOC46s7HBhSTsA==}
'@types/koa@3.0.1':
- resolution:
- {
- integrity: sha512-VkB6WJUQSe0zBpR+Q7/YIUESGp5wPHcaXr0xueU5W0EOUWtlSbblsl+Kl31lyRQ63nIILh0e/7gXjQ09JXJIHw==,
- }
+ resolution: {integrity: sha512-VkB6WJUQSe0zBpR+Q7/YIUESGp5wPHcaXr0xueU5W0EOUWtlSbblsl+Kl31lyRQ63nIILh0e/7gXjQ09JXJIHw==}
'@types/methods@1.1.4':
- resolution:
- {
- integrity: sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==,
- }
+ resolution: {integrity: sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==}
'@types/minimatch@3.0.5':
- resolution:
- {
- integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==,
- }
+ resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==}
'@types/minimist@1.2.5':
- resolution:
- {
- integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==,
- }
+ resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==}
'@types/multer@2.1.0':
- resolution:
- {
- integrity: sha512-zYZb0+nJhOHtPpGDb3vqPjwpdeGlGC157VpkqNQL+UU2qwoacoQ7MpsAmUptI/0Oa127X32JzWDqQVEXp2RcIA==,
- }
+ resolution: {integrity: sha512-zYZb0+nJhOHtPpGDb3vqPjwpdeGlGC157VpkqNQL+UU2qwoacoQ7MpsAmUptI/0Oa127X32JzWDqQVEXp2RcIA==}
'@types/node@22.19.11':
- resolution:
- {
- integrity: sha512-BH7YwL6rA93ReqeQS1c4bsPpcfOmJasG+Fkr6Y59q83f9M1WcBRHR2vM+P9eOisYRcN3ujQoiZY8uk5W+1WL8w==,
- }
+ resolution: {integrity: sha512-BH7YwL6rA93ReqeQS1c4bsPpcfOmJasG+Fkr6Y59q83f9M1WcBRHR2vM+P9eOisYRcN3ujQoiZY8uk5W+1WL8w==}
'@types/node@22.19.15':
- resolution:
- {
- integrity: sha512-F0R/h2+dsy5wJAUe3tAU6oqa2qbWY5TpNfL/RGmo1y38hiyO1w3x2jPtt76wmuaJI4DQnOBu21cNXQ2STIUUWg==,
- }
+ resolution: {integrity: sha512-F0R/h2+dsy5wJAUe3tAU6oqa2qbWY5TpNfL/RGmo1y38hiyO1w3x2jPtt76wmuaJI4DQnOBu21cNXQ2STIUUWg==}
'@types/node@25.5.0':
- resolution:
- {
- integrity: sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==,
- }
+ resolution: {integrity: sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==}
'@types/nodemailer@7.0.11':
- resolution:
- {
- integrity: sha512-E+U4RzR2dKrx+u3N4DlsmLaDC6mMZOM/TPROxA0UAPiTgI0y4CEFBmZE+coGWTjakDriRsXG368lNk1u9Q0a2g==,
- }
+ resolution: {integrity: sha512-E+U4RzR2dKrx+u3N4DlsmLaDC6mMZOM/TPROxA0UAPiTgI0y4CEFBmZE+coGWTjakDriRsXG368lNk1u9Q0a2g==}
'@types/normalize-package-data@2.4.4':
- resolution:
- {
- integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==,
- }
+ resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==}
'@types/pg-copy-streams@1.2.5':
- resolution:
- {
- integrity: sha512-7D6/GYW2uHIaVU6S/5omI+6RZnwlZBpLQDZAH83xX1rjxAOK0f6/deKyyUTewxqts145VIGn6XWYz1YGf50G5g==,
- }
+ resolution: {integrity: sha512-7D6/GYW2uHIaVU6S/5omI+6RZnwlZBpLQDZAH83xX1rjxAOK0f6/deKyyUTewxqts145VIGn6XWYz1YGf50G5g==}
'@types/pg@8.18.0':
- resolution:
- {
- integrity: sha512-gT+oueVQkqnj6ajGJXblFR4iavIXWsGAFCk3dP4Kki5+a9R4NMt0JARdk6s8cUKcfUoqP5dAtDSLU8xYUTFV+Q==,
- }
+ resolution: {integrity: sha512-gT+oueVQkqnj6ajGJXblFR4iavIXWsGAFCk3dP4Kki5+a9R4NMt0JARdk6s8cUKcfUoqP5dAtDSLU8xYUTFV+Q==}
'@types/pluralize@0.0.33':
- resolution:
- {
- integrity: sha512-JOqsl+ZoCpP4e8TDke9W79FDcSgPAR0l6pixx2JHkhnRjvShyYiAYw2LVsnA7K08Y6DeOnaU6ujmENO4os/cYg==,
- }
+ resolution: {integrity: sha512-JOqsl+ZoCpP4e8TDke9W79FDcSgPAR0l6pixx2JHkhnRjvShyYiAYw2LVsnA7K08Y6DeOnaU6ujmENO4os/cYg==}
'@types/qs@6.14.0':
- resolution:
- {
- integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==,
- }
+ resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==}
'@types/range-parser@1.2.7':
- resolution:
- {
- integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==,
- }
+ resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==}
'@types/react-dom@19.2.3':
- resolution:
- {
- integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==,
- }
+ resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==}
peerDependencies:
'@types/react': ^19.2.0
'@types/react@19.2.14':
- resolution:
- {
- integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==,
- }
+ resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==}
'@types/request-ip@0.0.41':
- resolution:
- {
- integrity: sha512-Qzz0PM2nSZej4lsLzzNfADIORZhhxO7PED0fXpg4FjXiHuJ/lMyUg+YFF5q8x9HPZH3Gl6N+NOM8QZjItNgGKg==,
- }
+ resolution: {integrity: sha512-Qzz0PM2nSZej4lsLzzNfADIORZhhxO7PED0fXpg4FjXiHuJ/lMyUg+YFF5q8x9HPZH3Gl6N+NOM8QZjItNgGKg==}
'@types/semver@7.7.1':
- resolution:
- {
- integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==,
- }
+ resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==}
'@types/send@1.2.1':
- resolution:
- {
- integrity: sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==,
- }
+ resolution: {integrity: sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==}
'@types/serve-static@2.2.0':
- resolution:
- {
- integrity: sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==,
- }
+ resolution: {integrity: sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==}
'@types/shelljs@0.10.0':
- resolution:
- {
- integrity: sha512-OEfyhE5Ox+FeoHbhrEDwm0kXxntO6nsyMRCFvNsIBHPZu5rV1w2OjPcLclaC/IZ1TlzZPgbeMfwAZEi5N238yQ==,
- }
+ resolution: {integrity: sha512-OEfyhE5Ox+FeoHbhrEDwm0kXxntO6nsyMRCFvNsIBHPZu5rV1w2OjPcLclaC/IZ1TlzZPgbeMfwAZEi5N238yQ==}
'@types/smtp-server@3.5.12':
- resolution:
- {
- integrity: sha512-IBemrqI6nzvbgwE41Lnd4v4Yf1Kc7F1UHjk1GFBLNhLcI/Zop1ggHQ8g7Y8QYc6jGVgzWQcsa0MBNcGnDY9UGw==,
- }
+ resolution: {integrity: sha512-IBemrqI6nzvbgwE41Lnd4v4Yf1Kc7F1UHjk1GFBLNhLcI/Zop1ggHQ8g7Y8QYc6jGVgzWQcsa0MBNcGnDY9UGw==}
'@types/stack-utils@2.0.3':
- resolution:
- {
- integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==,
- }
+ resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==}
'@types/superagent@8.1.9':
- resolution:
- {
- integrity: sha512-pTVjI73witn+9ILmoJdajHGW2jkSaOzhiFYF1Rd3EQ94kymLqB9PjD9ISg7WaALC7+dCHT0FGe9T2LktLq/3GQ==,
- }
+ resolution: {integrity: sha512-pTVjI73witn+9ILmoJdajHGW2jkSaOzhiFYF1Rd3EQ94kymLqB9PjD9ISg7WaALC7+dCHT0FGe9T2LktLq/3GQ==}
'@types/supertest@7.2.0':
- resolution:
- {
- integrity: sha512-uh2Lv57xvggst6lCqNdFAmDSvoMG7M/HDtX4iUCquxQ5EGPtaPM5PL5Hmi7LCvOG8db7YaCPNJEeoI8s/WzIQw==,
- }
+ resolution: {integrity: sha512-uh2Lv57xvggst6lCqNdFAmDSvoMG7M/HDtX4iUCquxQ5EGPtaPM5PL5Hmi7LCvOG8db7YaCPNJEeoI8s/WzIQw==}
'@types/testing-library__jest-dom@5.14.9':
- resolution:
- {
- integrity: sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==,
- }
+ resolution: {integrity: sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==}
'@types/yargs-parser@21.0.3':
- resolution:
- {
- integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==,
- }
+ resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==}
'@types/yargs@15.0.20':
- resolution:
- {
- integrity: sha512-KIkX+/GgfFitlASYCGoSF+T4XRXhOubJLhkLVtSfsRTe9jWMmuM2g28zQ41BtPTG7TRBb2xHW+LCNVE9QR/vsg==,
- }
+ resolution: {integrity: sha512-KIkX+/GgfFitlASYCGoSF+T4XRXhOubJLhkLVtSfsRTe9jWMmuM2g28zQ41BtPTG7TRBb2xHW+LCNVE9QR/vsg==}
'@types/yargs@17.0.35':
- resolution:
- {
- integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==,
- }
+ resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==}
'@typescript-eslint/eslint-plugin@8.57.0':
- resolution:
- {
- integrity: sha512-qeu4rTHR3/IaFORbD16gmjq9+rEs9fGKdX0kF6BKSfi+gCuG3RCKLlSBYzn/bGsY9Tj7KE/DAQStbp8AHJGHEQ==,
- }
- engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ resolution: {integrity: sha512-qeu4rTHR3/IaFORbD16gmjq9+rEs9fGKdX0kF6BKSfi+gCuG3RCKLlSBYzn/bGsY9Tj7KE/DAQStbp8AHJGHEQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
'@typescript-eslint/parser': ^8.57.0
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.0.0'
'@typescript-eslint/parser@8.57.0':
- resolution:
- {
- integrity: sha512-XZzOmihLIr8AD1b9hL9ccNMzEMWt/dE2u7NyTY9jJG6YNiNthaD5XtUHVF2uCXZ15ng+z2hT3MVuxnUYhq6k1g==,
- }
- engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ resolution: {integrity: sha512-XZzOmihLIr8AD1b9hL9ccNMzEMWt/dE2u7NyTY9jJG6YNiNthaD5XtUHVF2uCXZ15ng+z2hT3MVuxnUYhq6k1g==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.0.0'
'@typescript-eslint/project-service@8.57.0':
- resolution:
- {
- integrity: sha512-pR+dK0BlxCLxtWfaKQWtYr7MhKmzqZxuii+ZjuFlZlIGRZm22HnXFqa2eY+90MUz8/i80YJmzFGDUsi8dMOV5w==,
- }
- engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ resolution: {integrity: sha512-pR+dK0BlxCLxtWfaKQWtYr7MhKmzqZxuii+ZjuFlZlIGRZm22HnXFqa2eY+90MUz8/i80YJmzFGDUsi8dMOV5w==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
'@typescript-eslint/scope-manager@8.57.0':
- resolution:
- {
- integrity: sha512-nvExQqAHF01lUM66MskSaZulpPL5pgy5hI5RfrxviLgzZVffB5yYzw27uK/ft8QnKXI2X0LBrHJFr1TaZtAibw==,
- }
- engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ resolution: {integrity: sha512-nvExQqAHF01lUM66MskSaZulpPL5pgy5hI5RfrxviLgzZVffB5yYzw27uK/ft8QnKXI2X0LBrHJFr1TaZtAibw==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript-eslint/tsconfig-utils@8.57.0':
- resolution:
- {
- integrity: sha512-LtXRihc5ytjJIQEH+xqjB0+YgsV4/tW35XKX3GTZHpWtcC8SPkT/d4tqdf1cKtesryHm2bgp6l555NYcT2NLvA==,
- }
- engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ resolution: {integrity: sha512-LtXRihc5ytjJIQEH+xqjB0+YgsV4/tW35XKX3GTZHpWtcC8SPkT/d4tqdf1cKtesryHm2bgp6l555NYcT2NLvA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
'@typescript-eslint/type-utils@8.57.0':
- resolution:
- {
- integrity: sha512-yjgh7gmDcJ1+TcEg8x3uWQmn8ifvSupnPfjP21twPKrDP/pTHlEQgmKcitzF/rzPSmv7QjJ90vRpN4U+zoUjwQ==,
- }
- engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ resolution: {integrity: sha512-yjgh7gmDcJ1+TcEg8x3uWQmn8ifvSupnPfjP21twPKrDP/pTHlEQgmKcitzF/rzPSmv7QjJ90vRpN4U+zoUjwQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.0.0'
'@typescript-eslint/types@8.57.0':
- resolution:
- {
- integrity: sha512-dTLI8PEXhjUC7B9Kre+u0XznO696BhXcTlOn0/6kf1fHaQW8+VjJAVHJ3eTI14ZapTxdkOmc80HblPQLaEeJdg==,
- }
- engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ resolution: {integrity: sha512-dTLI8PEXhjUC7B9Kre+u0XznO696BhXcTlOn0/6kf1fHaQW8+VjJAVHJ3eTI14ZapTxdkOmc80HblPQLaEeJdg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript-eslint/typescript-estree@8.57.0':
- resolution:
- {
- integrity: sha512-m7faHcyVg0BT3VdYTlX8GdJEM7COexXxS6KqGopxdtkQRvBanK377QDHr4W/vIPAR+ah9+B/RclSW5ldVniO1Q==,
- }
- engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ resolution: {integrity: sha512-m7faHcyVg0BT3VdYTlX8GdJEM7COexXxS6KqGopxdtkQRvBanK377QDHr4W/vIPAR+ah9+B/RclSW5ldVniO1Q==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
'@typescript-eslint/utils@8.57.0':
- resolution:
- {
- integrity: sha512-5iIHvpD3CZe06riAsbNxxreP+MuYgVUsV0n4bwLH//VJmgtt54sQeY2GszntJ4BjYCpMzrfVh2SBnUQTtys2lQ==,
- }
- engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ resolution: {integrity: sha512-5iIHvpD3CZe06riAsbNxxreP+MuYgVUsV0n4bwLH//VJmgtt54sQeY2GszntJ4BjYCpMzrfVh2SBnUQTtys2lQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.0.0'
'@typescript-eslint/visitor-keys@8.57.0':
- resolution:
- {
- integrity: sha512-zm6xx8UT/Xy2oSr2ZXD0pZo7Jx2XsCoID2IUh9YSTFRu7z+WdwYTRk6LhUftm1crwqbuoF6I8zAFeCMw0YjwDg==,
- }
- engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ resolution: {integrity: sha512-zm6xx8UT/Xy2oSr2ZXD0pZo7Jx2XsCoID2IUh9YSTFRu7z+WdwYTRk6LhUftm1crwqbuoF6I8zAFeCMw0YjwDg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@ungap/structured-clone@1.3.0':
- resolution:
- {
- integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==,
- }
+ resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==}
'@unrs/resolver-binding-android-arm-eabi@1.11.1':
- resolution:
- {
- integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==,
- }
+ resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==}
cpu: [arm]
os: [android]
'@unrs/resolver-binding-android-arm64@1.11.1':
- resolution:
- {
- integrity: sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==,
- }
+ resolution: {integrity: sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==}
cpu: [arm64]
os: [android]
'@unrs/resolver-binding-darwin-arm64@1.11.1':
- resolution:
- {
- integrity: sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==,
- }
+ resolution: {integrity: sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==}
cpu: [arm64]
os: [darwin]
'@unrs/resolver-binding-darwin-x64@1.11.1':
- resolution:
- {
- integrity: sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==,
- }
+ resolution: {integrity: sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==}
cpu: [x64]
os: [darwin]
'@unrs/resolver-binding-freebsd-x64@1.11.1':
- resolution:
- {
- integrity: sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==,
- }
+ resolution: {integrity: sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==}
cpu: [x64]
os: [freebsd]
'@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1':
- resolution:
- {
- integrity: sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==,
- }
+ resolution: {integrity: sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==}
cpu: [arm]
os: [linux]
'@unrs/resolver-binding-linux-arm-musleabihf@1.11.1':
- resolution:
- {
- integrity: sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==,
- }
+ resolution: {integrity: sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==}
cpu: [arm]
os: [linux]
'@unrs/resolver-binding-linux-arm64-gnu@1.11.1':
- resolution:
- {
- integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==,
- }
+ resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
'@unrs/resolver-binding-linux-arm64-musl@1.11.1':
- resolution:
- {
- integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==,
- }
+ resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==}
cpu: [arm64]
os: [linux]
+ libc: [musl]
'@unrs/resolver-binding-linux-ppc64-gnu@1.11.1':
- resolution:
- {
- integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==,
- }
+ resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==}
cpu: [ppc64]
os: [linux]
+ libc: [glibc]
'@unrs/resolver-binding-linux-riscv64-gnu@1.11.1':
- resolution:
- {
- integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==,
- }
+ resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==}
cpu: [riscv64]
os: [linux]
+ libc: [glibc]
'@unrs/resolver-binding-linux-riscv64-musl@1.11.1':
- resolution:
- {
- integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==,
- }
+ resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==}
cpu: [riscv64]
os: [linux]
+ libc: [musl]
'@unrs/resolver-binding-linux-s390x-gnu@1.11.1':
- resolution:
- {
- integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==,
- }
+ resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==}
cpu: [s390x]
os: [linux]
+ libc: [glibc]
'@unrs/resolver-binding-linux-x64-gnu@1.11.1':
- resolution:
- {
- integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==,
- }
+ resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==}
cpu: [x64]
os: [linux]
+ libc: [glibc]
'@unrs/resolver-binding-linux-x64-musl@1.11.1':
- resolution:
- {
- integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==,
- }
+ resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==}
cpu: [x64]
os: [linux]
+ libc: [musl]
'@unrs/resolver-binding-wasm32-wasi@1.11.1':
- resolution:
- {
- integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==,
- }
- engines: { node: '>=14.0.0' }
+ resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==}
+ engines: {node: '>=14.0.0'}
cpu: [wasm32]
'@unrs/resolver-binding-win32-arm64-msvc@1.11.1':
- resolution:
- {
- integrity: sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==,
- }
+ resolution: {integrity: sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==}
cpu: [arm64]
os: [win32]
'@unrs/resolver-binding-win32-ia32-msvc@1.11.1':
- resolution:
- {
- integrity: sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==,
- }
+ resolution: {integrity: sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==}
cpu: [ia32]
os: [win32]
'@unrs/resolver-binding-win32-x64-msvc@1.11.1':
- resolution:
- {
- integrity: sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==,
- }
+ resolution: {integrity: sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==}
cpu: [x64]
os: [win32]
'@vitejs/plugin-react@4.7.0':
- resolution:
- {
- integrity: sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==,
- }
- engines: { node: ^14.18.0 || >=16.0.0 }
+ resolution: {integrity: sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==}
+ engines: {node: ^14.18.0 || >=16.0.0}
peerDependencies:
vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0
'@yarnpkg/lockfile@1.1.0':
- resolution:
- {
- integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==,
- }
+ resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==}
'@yarnpkg/parsers@3.0.2':
- resolution:
- {
- integrity: sha512-/HcYgtUSiJiot/XWGLOlGxPYUG65+/31V8oqk17vZLW1xlCoR4PampyePljOxY2n8/3jz9+tIFzICsyGujJZoA==,
- }
- engines: { node: '>=18.12.0' }
+ resolution: {integrity: sha512-/HcYgtUSiJiot/XWGLOlGxPYUG65+/31V8oqk17vZLW1xlCoR4PampyePljOxY2n8/3jz9+tIFzICsyGujJZoA==}
+ engines: {node: '>=18.12.0'}
'@zkochan/js-yaml@0.0.7':
- resolution:
- {
- integrity: sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==,
- }
+ resolution: {integrity: sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==}
hasBin: true
JSONStream@1.3.5:
- resolution:
- {
- integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==,
- }
+ resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==}
hasBin: true
abbrev@2.0.0:
- resolution:
- {
- integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==,
- }
- engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+ resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
accepts@2.0.0:
- resolution:
- {
- integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==,
- }
- engines: { node: '>= 0.6' }
+ resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==}
+ engines: {node: '>= 0.6'}
acorn-jsx@5.3.2:
- resolution:
- {
- integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==,
- }
+ resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
peerDependencies:
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
acorn-walk@8.3.4:
- resolution:
- {
- integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==,
- }
- engines: { node: '>=0.4.0' }
+ resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==}
+ engines: {node: '>=0.4.0'}
acorn@8.15.0:
- resolution:
- {
- integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==,
- }
- engines: { node: '>=0.4.0' }
+ resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==}
+ engines: {node: '>=0.4.0'}
hasBin: true
add-stream@1.0.0:
- resolution:
- {
- integrity: sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==,
- }
+ resolution: {integrity: sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==}
agent-base@7.1.4:
- resolution:
- {
- integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==,
- }
- engines: { node: '>= 14' }
+ resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==}
+ engines: {node: '>= 14'}
aggregate-error@3.1.0:
- resolution:
- {
- integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==}
+ engines: {node: '>=8'}
ajv@6.12.6:
- resolution:
- {
- integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==,
- }
+ resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
ajv@8.18.0:
- resolution:
- {
- integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==,
- }
+ resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==}
ansi-colors@4.1.3:
- resolution:
- {
- integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==}
+ engines: {node: '>=6'}
ansi-escapes@4.3.2:
- resolution:
- {
- integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==}
+ engines: {node: '>=8'}
ansi-regex@5.0.1:
- resolution:
- {
- integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
+ engines: {node: '>=8'}
ansi-regex@6.2.2:
- resolution:
- {
- integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==,
- }
- engines: { node: '>=12' }
+ resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==}
+ engines: {node: '>=12'}
ansi-styles@4.3.0:
- resolution:
- {
- integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
+ engines: {node: '>=8'}
ansi-styles@5.2.0:
- resolution:
- {
- integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==}
+ engines: {node: '>=10'}
ansi-styles@6.2.3:
- resolution:
- {
- integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==,
- }
- engines: { node: '>=12' }
+ resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==}
+ engines: {node: '>=12'}
anymatch@3.1.3:
- resolution:
- {
- integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==,
- }
- engines: { node: '>= 8' }
+ resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
+ engines: {node: '>= 8'}
append-field@1.0.0:
- resolution:
- {
- integrity: sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==,
- }
+ resolution: {integrity: sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==}
appstash@0.7.0:
- resolution:
- {
- integrity: sha512-UExc8kEseReJRbllAkQ/qeW+jHb4iVFR8bLfggSLvSO7LwiVjQWfnQxN+ToLkVBKqMbIENrLUTvynMSEC73xUg==,
- }
+ resolution: {integrity: sha512-UExc8kEseReJRbllAkQ/qeW+jHb4iVFR8bLfggSLvSO7LwiVjQWfnQxN+ToLkVBKqMbIENrLUTvynMSEC73xUg==}
aproba@2.0.0:
- resolution:
- {
- integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==,
- }
+ resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==}
arg@4.1.3:
- resolution:
- {
- integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==,
- }
+ resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==}
argparse@1.0.10:
- resolution:
- {
- integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==,
- }
+ resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
argparse@2.0.1:
- resolution:
- {
- integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==,
- }
+ resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
aria-hidden@1.2.6:
- resolution:
- {
- integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==}
+ engines: {node: '>=10'}
aria-query@4.2.2:
- resolution:
- {
- integrity: sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==,
- }
- engines: { node: '>=6.0' }
+ resolution: {integrity: sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==}
+ engines: {node: '>=6.0'}
array-differ@3.0.0:
- resolution:
- {
- integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==}
+ engines: {node: '>=8'}
array-ify@1.0.0:
- resolution:
- {
- integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==,
- }
+ resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==}
array-union@2.1.0:
- resolution:
- {
- integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
+ engines: {node: '>=8'}
arrify@1.0.1:
- resolution:
- {
- integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==}
+ engines: {node: '>=0.10.0'}
arrify@2.0.1:
- resolution:
- {
- integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==}
+ engines: {node: '>=8'}
asap@2.0.6:
- resolution:
- {
- integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==,
- }
+ resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==}
async-retry@1.3.3:
- resolution:
- {
- integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==,
- }
+ resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==}
async@3.2.6:
- resolution:
- {
- integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==,
- }
+ resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==}
asynckit@0.4.0:
- resolution:
- {
- integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==,
- }
+ resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
atob@2.1.2:
- resolution:
- {
- integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==,
- }
- engines: { node: '>= 4.5.0' }
+ resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==}
+ engines: {node: '>= 4.5.0'}
hasBin: true
axios@1.13.2:
- resolution:
- {
- integrity: sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==,
- }
+ resolution: {integrity: sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==}
babel-jest@30.3.0:
- resolution:
- {
- integrity: sha512-gRpauEU2KRrCox5Z296aeVHR4jQ98BCnu0IO332D/xpHNOsIH/bgSRk9k6GbKIbBw8vFeN6ctuu6tV8WOyVfYQ==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-gRpauEU2KRrCox5Z296aeVHR4jQ98BCnu0IO332D/xpHNOsIH/bgSRk9k6GbKIbBw8vFeN6ctuu6tV8WOyVfYQ==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
peerDependencies:
'@babel/core': ^7.11.0 || ^8.0.0-0
babel-plugin-istanbul@7.0.1:
- resolution:
- {
- integrity: sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==,
- }
- engines: { node: '>=12' }
+ resolution: {integrity: sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==}
+ engines: {node: '>=12'}
babel-plugin-jest-hoist@30.3.0:
- resolution:
- {
- integrity: sha512-+TRkByhsws6sfPjVaitzadk1I0F5sPvOVUH5tyTSzhePpsGIVrdeunHSw/C36QeocS95OOk8lunc4rlu5Anwsg==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-+TRkByhsws6sfPjVaitzadk1I0F5sPvOVUH5tyTSzhePpsGIVrdeunHSw/C36QeocS95OOk8lunc4rlu5Anwsg==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
babel-plugin-styled-components@2.1.4:
- resolution:
- {
- integrity: sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g==,
- }
+ resolution: {integrity: sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g==}
peerDependencies:
styled-components: '>= 2'
babel-preset-current-node-syntax@1.2.0:
- resolution:
- {
- integrity: sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==,
- }
+ resolution: {integrity: sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==}
peerDependencies:
'@babel/core': ^7.0.0 || ^8.0.0-0
babel-preset-jest@30.3.0:
- resolution:
- {
- integrity: sha512-6ZcUbWHC+dMz2vfzdNwi87Z1gQsLNK2uLuK1Q89R11xdvejcivlYYwDlEv0FHX3VwEXpbBQ9uufB/MUNpZGfhQ==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-6ZcUbWHC+dMz2vfzdNwi87Z1gQsLNK2uLuK1Q89R11xdvejcivlYYwDlEv0FHX3VwEXpbBQ9uufB/MUNpZGfhQ==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
peerDependencies:
'@babel/core': ^7.11.0 || ^8.0.0-beta.1
babel-runtime@6.25.0:
- resolution:
- {
- integrity: sha512-zeCYxDePWYAT/DfmQWIHsMSFW2vv45UIwIAMjGvQVsTd47RwsiRH0uK1yzyWZ7LDBKdhnGDPM6NYEO5CZyhPrg==,
- }
+ resolution: {integrity: sha512-zeCYxDePWYAT/DfmQWIHsMSFW2vv45UIwIAMjGvQVsTd47RwsiRH0uK1yzyWZ7LDBKdhnGDPM6NYEO5CZyhPrg==}
balanced-match@1.0.2:
- resolution:
- {
- integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==,
- }
+ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
balanced-match@4.0.4:
- resolution:
- {
- integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==,
- }
- engines: { node: 18 || 20 || >=22 }
+ resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==}
+ engines: {node: 18 || 20 || >=22}
base-64@1.0.0:
- resolution:
- {
- integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==,
- }
+ resolution: {integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==}
base64-js@1.5.1:
- resolution:
- {
- integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==,
- }
+ resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
baseline-browser-mapping@2.9.15:
- resolution:
- {
- integrity: sha512-kX8h7K2srmDyYnXRIppo4AH/wYgzWVCs+eKr3RusRSQ5PvRYoEFmR/I0PbdTjKFAoKqp5+kbxnNTFO9jOfSVJg==,
- }
+ resolution: {integrity: sha512-kX8h7K2srmDyYnXRIppo4AH/wYgzWVCs+eKr3RusRSQ5PvRYoEFmR/I0PbdTjKFAoKqp5+kbxnNTFO9jOfSVJg==}
hasBin: true
before-after-hook@2.2.3:
- resolution:
- {
- integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==,
- }
+ resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==}
big-integer@1.6.52:
- resolution:
- {
- integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==,
- }
- engines: { node: '>=0.6' }
+ resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==}
+ engines: {node: '>=0.6'}
bin-links@4.0.4:
- resolution:
- {
- integrity: sha512-cMtq4W5ZsEwcutJrVId+a/tjt8GSbS+h0oNkdl6+6rBuEv8Ot33Bevj5KPm40t309zuhVic8NjpuL42QCiJWWA==,
- }
- engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+ resolution: {integrity: sha512-cMtq4W5ZsEwcutJrVId+a/tjt8GSbS+h0oNkdl6+6rBuEv8Ot33Bevj5KPm40t309zuhVic8NjpuL42QCiJWWA==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
binary-extensions@2.3.0:
- resolution:
- {
- integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
+ engines: {node: '>=8'}
bl@4.1.0:
- resolution:
- {
- integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==,
- }
+ resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
body-parser@2.2.1:
- resolution:
- {
- integrity: sha512-nfDwkulwiZYQIGwxdy0RUmowMhKcFVcYXUU7m4QlKYim1rUtg83xm2yjZ40QjDuc291AJjjeSc9b++AWHSgSHw==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-nfDwkulwiZYQIGwxdy0RUmowMhKcFVcYXUU7m4QlKYim1rUtg83xm2yjZ40QjDuc291AJjjeSc9b++AWHSgSHw==}
+ engines: {node: '>=18'}
boolbase@1.0.0:
- resolution:
- {
- integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==,
- }
+ resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
bowser@2.14.1:
- resolution:
- {
- integrity: sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==,
- }
+ resolution: {integrity: sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==}
brace-expansion@1.1.12:
- resolution:
- {
- integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==,
- }
+ resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==}
brace-expansion@2.0.2:
- resolution:
- {
- integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==,
- }
+ resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==}
brace-expansion@5.0.4:
- resolution:
- {
- integrity: sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==,
- }
- engines: { node: 18 || 20 || >=22 }
+ resolution: {integrity: sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==}
+ engines: {node: 18 || 20 || >=22}
braces@3.0.3:
- resolution:
- {
- integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
+ engines: {node: '>=8'}
broadcast-channel@3.7.0:
- resolution:
- {
- integrity: sha512-cIAKJXAxGJceNZGTZSBzMxzyOn72cVgPnKx4dc6LRjQgbaJUQqhy5rzL3zbMxkMWsGKkv2hSFkPRMEXfoMZ2Mg==,
- }
+ resolution: {integrity: sha512-cIAKJXAxGJceNZGTZSBzMxzyOn72cVgPnKx4dc6LRjQgbaJUQqhy5rzL3zbMxkMWsGKkv2hSFkPRMEXfoMZ2Mg==}
browserslist@4.28.1:
- resolution:
- {
- integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==,
- }
- engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 }
+ resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==}
+ engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
bs-logger@0.2.6:
- resolution:
- {
- integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==,
- }
- engines: { node: '>= 6' }
+ resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==}
+ engines: {node: '>= 6'}
bser@2.1.1:
- resolution:
- {
- integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==,
- }
+ resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==}
buffer-equal-constant-time@1.0.1:
- resolution:
- {
- integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==,
- }
+ resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==}
buffer-from@1.1.2:
- resolution:
- {
- integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==,
- }
+ resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
buffer@5.6.0:
- resolution:
- {
- integrity: sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==,
- }
+ resolution: {integrity: sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==}
buffer@5.7.1:
- resolution:
- {
- integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==,
- }
+ resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
busboy@0.3.1:
- resolution:
- {
- integrity: sha512-y7tTxhGKXcyBxRKAni+awqx8uqaJKrSFSNFSeRG5CsWNdmy2BIK+6VGWEW7TZnIO/533mtMEA4rOevQV815YJw==,
- }
- engines: { node: '>=4.5.0' }
+ resolution: {integrity: sha512-y7tTxhGKXcyBxRKAni+awqx8uqaJKrSFSNFSeRG5CsWNdmy2BIK+6VGWEW7TZnIO/533mtMEA4rOevQV815YJw==}
+ engines: {node: '>=4.5.0'}
busboy@1.6.0:
- resolution:
- {
- integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==,
- }
- engines: { node: '>=10.16.0' }
+ resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==}
+ engines: {node: '>=10.16.0'}
byte-size@8.1.1:
- resolution:
- {
- integrity: sha512-tUkzZWK0M/qdoLEqikxBWe4kumyuwjl3HO6zHTr4yEI23EojPtLYXdG1+AQY7MN0cGyNDvEaJ8wiYQm6P2bPxg==,
- }
- engines: { node: '>=12.17' }
+ resolution: {integrity: sha512-tUkzZWK0M/qdoLEqikxBWe4kumyuwjl3HO6zHTr4yEI23EojPtLYXdG1+AQY7MN0cGyNDvEaJ8wiYQm6P2bPxg==}
+ engines: {node: '>=12.17'}
bytes@3.1.2:
- resolution:
- {
- integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==,
- }
- engines: { node: '>= 0.8' }
+ resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
+ engines: {node: '>= 0.8'}
cacache@18.0.4:
- resolution:
- {
- integrity: sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==,
- }
- engines: { node: ^16.14.0 || >=18.0.0 }
+ resolution: {integrity: sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==}
+ engines: {node: ^16.14.0 || >=18.0.0}
call-bind-apply-helpers@1.0.2:
- resolution:
- {
- integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
+ engines: {node: '>= 0.4'}
call-bound@1.0.4:
- resolution:
- {
- integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}
+ engines: {node: '>= 0.4'}
callsites@3.1.0:
- resolution:
- {
- integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
+ engines: {node: '>=6'}
camel-case@3.0.0:
- resolution:
- {
- integrity: sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==,
- }
+ resolution: {integrity: sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==}
camelcase-keys@6.2.2:
- resolution:
- {
- integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==}
+ engines: {node: '>=8'}
camelcase@5.3.1:
- resolution:
- {
- integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
+ engines: {node: '>=6'}
camelcase@6.3.0:
- resolution:
- {
- integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
+ engines: {node: '>=10'}
camelize@1.0.1:
- resolution:
- {
- integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==,
- }
+ resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==}
caniuse-lite@1.0.30001765:
- resolution:
- {
- integrity: sha512-LWcNtSyZrakjECqmpP4qdg0MMGdN368D7X8XvvAqOcqMv0RxnlqVKZl2V6/mBR68oYMxOZPLw/gO7DuisMHUvQ==,
- }
+ resolution: {integrity: sha512-LWcNtSyZrakjECqmpP4qdg0MMGdN368D7X8XvvAqOcqMv0RxnlqVKZl2V6/mBR68oYMxOZPLw/gO7DuisMHUvQ==}
case@1.6.3:
- resolution:
- {
- integrity: sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==,
- }
- engines: { node: '>= 0.8.0' }
+ resolution: {integrity: sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==}
+ engines: {node: '>= 0.8.0'}
chalk@3.0.0:
- resolution:
- {
- integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==}
+ engines: {node: '>=8'}
chalk@4.1.0:
- resolution:
- {
- integrity: sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==}
+ engines: {node: '>=10'}
chalk@4.1.2:
- resolution:
- {
- integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
+ engines: {node: '>=10'}
char-regex@1.0.2:
- resolution:
- {
- integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==}
+ engines: {node: '>=10'}
chardet@2.1.1:
- resolution:
- {
- integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==,
- }
+ resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==}
cheerio-select@2.1.0:
- resolution:
- {
- integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==,
- }
+ resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==}
cheerio@1.0.0-rc.3:
- resolution:
- {
- integrity: sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA==,
- }
- engines: { node: '>= 0.6' }
+ resolution: {integrity: sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA==}
+ engines: {node: '>= 0.6'}
cheerio@1.1.2:
- resolution:
- {
- integrity: sha512-IkxPpb5rS/d1IiLbHMgfPuS0FgiWTtFIm/Nj+2woXDLTZ7fOT2eqzgYbdMlLweqlHbsZjxEChoVK+7iph7jyQg==,
- }
- engines: { node: '>=20.18.1' }
+ resolution: {integrity: sha512-IkxPpb5rS/d1IiLbHMgfPuS0FgiWTtFIm/Nj+2woXDLTZ7fOT2eqzgYbdMlLweqlHbsZjxEChoVK+7iph7jyQg==}
+ engines: {node: '>=20.18.1'}
chokidar@3.6.0:
- resolution:
- {
- integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==,
- }
- engines: { node: '>= 8.10.0' }
+ resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
+ engines: {node: '>= 8.10.0'}
chownr@2.0.0:
- resolution:
- {
- integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==}
+ engines: {node: '>=10'}
ci-info@3.9.0:
- resolution:
- {
- integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
+ engines: {node: '>=8'}
ci-info@4.3.1:
- resolution:
- {
- integrity: sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==}
+ engines: {node: '>=8'}
ci-info@4.4.0:
- resolution:
- {
- integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==}
+ engines: {node: '>=8'}
cjs-module-lexer@2.2.0:
- resolution:
- {
- integrity: sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==,
- }
+ resolution: {integrity: sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==}
clean-ansi@0.2.1:
- resolution:
- {
- integrity: sha512-V9IOKBKHv0Sqay4efImuCVWwO8kVmaKU66cvbDBa99F21j2G3ye3mrKkPSfZ7RTR7yP4CNDjtESkNY5dFq+8Sg==,
- }
+ resolution: {integrity: sha512-V9IOKBKHv0Sqay4efImuCVWwO8kVmaKU66cvbDBa99F21j2G3ye3mrKkPSfZ7RTR7yP4CNDjtESkNY5dFq+8Sg==}
clean-css@4.2.4:
- resolution:
- {
- integrity: sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==,
- }
- engines: { node: '>= 4.0' }
+ resolution: {integrity: sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==}
+ engines: {node: '>= 4.0'}
clean-stack@2.2.0:
- resolution:
- {
- integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==}
+ engines: {node: '>=6'}
cli-cursor@3.1.0:
- resolution:
- {
- integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==}
+ engines: {node: '>=8'}
cli-spinners@2.6.1:
- resolution:
- {
- integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==}
+ engines: {node: '>=6'}
cli-spinners@2.9.2:
- resolution:
- {
- integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==}
+ engines: {node: '>=6'}
cli-width@3.0.0:
- resolution:
- {
- integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==,
- }
- engines: { node: '>= 10' }
+ resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==}
+ engines: {node: '>= 10'}
cliui@6.0.0:
- resolution:
- {
- integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==,
- }
+ resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==}
cliui@7.0.4:
- resolution:
- {
- integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==,
- }
+ resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==}
cliui@8.0.1:
- resolution:
- {
- integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==,
- }
- engines: { node: '>=12' }
+ resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
+ engines: {node: '>=12'}
clone-deep@4.0.1:
- resolution:
- {
- integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==}
+ engines: {node: '>=6'}
clone@1.0.4:
- resolution:
- {
- integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==,
- }
- engines: { node: '>=0.8' }
+ resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==}
+ engines: {node: '>=0.8'}
clsx@1.2.1:
- resolution:
- {
- integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==}
+ engines: {node: '>=6'}
clsx@2.1.1:
- resolution:
- {
- integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
+ engines: {node: '>=6'}
cmd-shim@6.0.3:
- resolution:
- {
- integrity: sha512-FMabTRlc5t5zjdenF6mS0MBeFZm0XqHqeOkcskKFb/LYCcRQ5fVgLOHVc4Lq9CqABd9zhjwPjMBCJvMCziSVtA==,
- }
- engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+ resolution: {integrity: sha512-FMabTRlc5t5zjdenF6mS0MBeFZm0XqHqeOkcskKFb/LYCcRQ5fVgLOHVc4Lq9CqABd9zhjwPjMBCJvMCziSVtA==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
co@4.6.0:
- resolution:
- {
- integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==,
- }
- engines: { iojs: '>= 1.0.0', node: '>= 0.12.0' }
+ resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==}
+ engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'}
collect-v8-coverage@1.0.3:
- resolution:
- {
- integrity: sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==,
- }
+ resolution: {integrity: sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==}
color-convert@2.0.1:
- resolution:
- {
- integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==,
- }
- engines: { node: '>=7.0.0' }
+ resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
+ engines: {node: '>=7.0.0'}
color-name@1.1.4:
- resolution:
- {
- integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==,
- }
+ resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
color-support@1.1.3:
- resolution:
- {
- integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==,
- }
+ resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==}
hasBin: true
columnify@1.6.0:
- resolution:
- {
- integrity: sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==,
- }
- engines: { node: '>=8.0.0' }
+ resolution: {integrity: sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==}
+ engines: {node: '>=8.0.0'}
combined-stream@1.0.8:
- resolution:
- {
- integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==,
- }
- engines: { node: '>= 0.8' }
+ resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
+ engines: {node: '>= 0.8'}
commander@10.0.1:
- resolution:
- {
- integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==,
- }
- engines: { node: '>=14' }
+ resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==}
+ engines: {node: '>=14'}
commander@2.17.1:
- resolution:
- {
- integrity: sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==,
- }
+ resolution: {integrity: sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==}
commander@2.19.0:
- resolution:
- {
- integrity: sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==,
- }
+ resolution: {integrity: sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==}
commander@5.1.0:
- resolution:
- {
- integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==,
- }
- engines: { node: '>= 6' }
+ resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==}
+ engines: {node: '>= 6'}
common-ancestor-path@1.0.1:
- resolution:
- {
- integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==,
- }
+ resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==}
compare-func@2.0.0:
- resolution:
- {
- integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==,
- }
+ resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==}
component-emitter@1.3.1:
- resolution:
- {
- integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==,
- }
+ resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==}
concat-map@0.0.1:
- resolution:
- {
- integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==,
- }
+ resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
concat-stream@2.0.0:
- resolution:
- {
- integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==,
- }
- engines: { '0': node >= 6.0 }
+ resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==}
+ engines: {'0': node >= 6.0}
config-chain@1.1.13:
- resolution:
- {
- integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==,
- }
+ resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==}
console-control-strings@1.1.0:
- resolution:
- {
- integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==,
- }
+ resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==}
content-disposition@1.0.1:
- resolution:
- {
- integrity: sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==}
+ engines: {node: '>=18'}
content-type@1.0.5:
- resolution:
- {
- integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==,
- }
- engines: { node: '>= 0.6' }
+ resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==}
+ engines: {node: '>= 0.6'}
conventional-changelog-angular@7.0.0:
- resolution:
- {
- integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==,
- }
- engines: { node: '>=16' }
+ resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==}
+ engines: {node: '>=16'}
conventional-changelog-core@5.0.1:
- resolution:
- {
- integrity: sha512-Rvi5pH+LvgsqGwZPZ3Cq/tz4ty7mjijhr3qR4m9IBXNbxGGYgTVVO+duXzz9aArmHxFtwZ+LRkrNIMDQzgoY4A==,
- }
- engines: { node: '>=14' }
+ resolution: {integrity: sha512-Rvi5pH+LvgsqGwZPZ3Cq/tz4ty7mjijhr3qR4m9IBXNbxGGYgTVVO+duXzz9aArmHxFtwZ+LRkrNIMDQzgoY4A==}
+ engines: {node: '>=14'}
conventional-changelog-preset-loader@3.0.0:
- resolution:
- {
- integrity: sha512-qy9XbdSLmVnwnvzEisjxdDiLA4OmV3o8db+Zdg4WiFw14fP3B6XNz98X0swPPpkTd/pc1K7+adKgEDM1JCUMiA==,
- }
- engines: { node: '>=14' }
+ resolution: {integrity: sha512-qy9XbdSLmVnwnvzEisjxdDiLA4OmV3o8db+Zdg4WiFw14fP3B6XNz98X0swPPpkTd/pc1K7+adKgEDM1JCUMiA==}
+ engines: {node: '>=14'}
conventional-changelog-writer@6.0.1:
- resolution:
- {
- integrity: sha512-359t9aHorPw+U+nHzUXHS5ZnPBOizRxfQsWT5ZDHBfvfxQOAik+yfuhKXG66CN5LEWPpMNnIMHUTCKeYNprvHQ==,
- }
- engines: { node: '>=14' }
+ resolution: {integrity: sha512-359t9aHorPw+U+nHzUXHS5ZnPBOizRxfQsWT5ZDHBfvfxQOAik+yfuhKXG66CN5LEWPpMNnIMHUTCKeYNprvHQ==}
+ engines: {node: '>=14'}
hasBin: true
conventional-commits-filter@3.0.0:
- resolution:
- {
- integrity: sha512-1ymej8b5LouPx9Ox0Dw/qAO2dVdfpRFq28e5Y0jJEU8ZrLdy0vOSkkIInwmxErFGhg6SALro60ZrwYFVTUDo4Q==,
- }
- engines: { node: '>=14' }
+ resolution: {integrity: sha512-1ymej8b5LouPx9Ox0Dw/qAO2dVdfpRFq28e5Y0jJEU8ZrLdy0vOSkkIInwmxErFGhg6SALro60ZrwYFVTUDo4Q==}
+ engines: {node: '>=14'}
conventional-commits-parser@4.0.0:
- resolution:
- {
- integrity: sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg==,
- }
- engines: { node: '>=14' }
+ resolution: {integrity: sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg==}
+ engines: {node: '>=14'}
hasBin: true
conventional-recommended-bump@7.0.1:
- resolution:
- {
- integrity: sha512-Ft79FF4SlOFvX4PkwFDRnaNiIVX7YbmqGU0RwccUaiGvgp3S0a8ipR2/Qxk31vclDNM+GSdJOVs2KrsUCjblVA==,
- }
- engines: { node: '>=14' }
+ resolution: {integrity: sha512-Ft79FF4SlOFvX4PkwFDRnaNiIVX7YbmqGU0RwccUaiGvgp3S0a8ipR2/Qxk31vclDNM+GSdJOVs2KrsUCjblVA==}
+ engines: {node: '>=14'}
hasBin: true
convert-source-map@2.0.0:
- resolution:
- {
- integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==,
- }
+ resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
cookie-signature@1.2.2:
- resolution:
- {
- integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==,
- }
- engines: { node: '>=6.6.0' }
+ resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==}
+ engines: {node: '>=6.6.0'}
cookie@0.7.2:
- resolution:
- {
- integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==,
- }
- engines: { node: '>= 0.6' }
+ resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==}
+ engines: {node: '>= 0.6'}
cookiejar@2.1.4:
- resolution:
- {
- integrity: sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==,
- }
+ resolution: {integrity: sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==}
copyfiles@2.4.1:
- resolution:
- {
- integrity: sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==,
- }
+ resolution: {integrity: sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==}
hasBin: true
core-js-pure@3.47.0:
- resolution:
- {
- integrity: sha512-BcxeDbzUrRnXGYIVAGFtcGQVNpFcUhVjr6W7F8XktvQW2iJP9e66GP6xdKotCRFlrxBvNIBrhwKteRXqMV86Nw==,
- }
+ resolution: {integrity: sha512-BcxeDbzUrRnXGYIVAGFtcGQVNpFcUhVjr6W7F8XktvQW2iJP9e66GP6xdKotCRFlrxBvNIBrhwKteRXqMV86Nw==}
core-js@2.6.12:
- resolution:
- {
- integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==,
- }
+ resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==}
deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.
core-util-is@1.0.3:
- resolution:
- {
- integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==,
- }
+ resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
cors@2.8.6:
- resolution:
- {
- integrity: sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==,
- }
- engines: { node: '>= 0.10' }
+ resolution: {integrity: sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==}
+ engines: {node: '>= 0.10'}
cosmiconfig@9.0.0:
- resolution:
- {
- integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==,
- }
- engines: { node: '>=14' }
+ resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==}
+ engines: {node: '>=14'}
peerDependencies:
typescript: '>=4.9.5'
peerDependenciesMeta:
@@ -8407,134 +6296,74 @@ packages:
optional: true
create-require@1.1.1:
- resolution:
- {
- integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==,
- }
+ resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
cron-parser@4.9.0:
- resolution:
- {
- integrity: sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==,
- }
- engines: { node: '>=12.0.0' }
+ resolution: {integrity: sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==}
+ engines: {node: '>=12.0.0'}
cross-fetch@4.1.0:
- resolution:
- {
- integrity: sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==,
- }
+ resolution: {integrity: sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==}
cross-spawn@7.0.6:
- resolution:
- {
- integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==,
- }
- engines: { node: '>= 8' }
+ resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
+ engines: {node: '>= 8'}
css-color-keywords@1.0.0:
- resolution:
- {
- integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==}
+ engines: {node: '>=4'}
css-select@1.2.0:
- resolution:
- {
- integrity: sha512-dUQOBoqdR7QwV90WysXPLXG5LO7nhYBgiWVfxF80DKPF8zx1t/pUd2FYy73emg3zrjtM6dzmYgbHKfV2rxiHQA==,
- }
+ resolution: {integrity: sha512-dUQOBoqdR7QwV90WysXPLXG5LO7nhYBgiWVfxF80DKPF8zx1t/pUd2FYy73emg3zrjtM6dzmYgbHKfV2rxiHQA==}
css-select@5.2.2:
- resolution:
- {
- integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==,
- }
+ resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==}
css-to-react-native@3.2.0:
- resolution:
- {
- integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==,
- }
+ resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==}
css-what@2.1.3:
- resolution:
- {
- integrity: sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==,
- }
+ resolution: {integrity: sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==}
css-what@6.2.2:
- resolution:
- {
- integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==,
- }
- engines: { node: '>= 6' }
+ resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==}
+ engines: {node: '>= 6'}
css.escape@1.5.1:
- resolution:
- {
- integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==,
- }
+ resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==}
css@3.0.0:
- resolution:
- {
- integrity: sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==,
- }
+ resolution: {integrity: sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==}
cssesc@3.0.0:
- resolution:
- {
- integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
+ engines: {node: '>=4'}
hasBin: true
csstype@3.2.3:
- resolution:
- {
- integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==,
- }
+ resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==}
csv-parse@6.2.1:
- resolution:
- {
- integrity: sha512-LRLMV+UCyfMokp8Wb411duBf1gaBKJfOfBWU9eHMJ+b+cJYZsNu3AFmjJf3+yPGd59Exz1TsMjaSFyxnYB9+IQ==,
- }
+ resolution: {integrity: sha512-LRLMV+UCyfMokp8Wb411duBf1gaBKJfOfBWU9eHMJ+b+cJYZsNu3AFmjJf3+yPGd59Exz1TsMjaSFyxnYB9+IQ==}
csv-parser@3.2.0:
- resolution:
- {
- integrity: sha512-fgKbp+AJbn1h2dcAHKIdKNSSjfp43BZZykXsCjzALjKy80VXQNHPFJ6T9Afwdzoj24aMkq8GwDS7KGcDPpejrA==,
- }
- engines: { node: '>= 10' }
+ resolution: {integrity: sha512-fgKbp+AJbn1h2dcAHKIdKNSSjfp43BZZykXsCjzALjKy80VXQNHPFJ6T9Afwdzoj24aMkq8GwDS7KGcDPpejrA==}
+ engines: {node: '>= 10'}
hasBin: true
dargs@7.0.0:
- resolution:
- {
- integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==}
+ engines: {node: '>=8'}
dateformat@3.0.3:
- resolution:
- {
- integrity: sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==,
- }
+ resolution: {integrity: sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==}
debounce-promise@3.1.2:
- resolution:
- {
- integrity: sha512-rZHcgBkbYavBeD9ej6sP56XfG53d51CD4dnaw989YX/nZ/ZJfgRx/9ePKmTNiUiyQvh4mtrMoS3OAWW+yoYtpg==,
- }
+ resolution: {integrity: sha512-rZHcgBkbYavBeD9ej6sP56XfG53d51CD4dnaw989YX/nZ/ZJfgRx/9ePKmTNiUiyQvh4mtrMoS3OAWW+yoYtpg==}
debug@4.4.3:
- resolution:
- {
- integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==,
- }
- engines: { node: '>=6.0' }
+ resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
+ engines: {node: '>=6.0'}
peerDependencies:
supports-color: '*'
peerDependenciesMeta:
@@ -8542,31 +6371,19 @@ packages:
optional: true
decamelize-keys@1.1.1:
- resolution:
- {
- integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==,
- }
- engines: { node: '>=0.10.0' }
+ 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' }
+ resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==}
+ engines: {node: '>=0.10.0'}
decode-uri-component@0.2.2:
- resolution:
- {
- integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==,
- }
- engines: { node: '>=0.10' }
+ resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==}
+ engines: {node: '>=0.10'}
dedent@1.5.3:
- resolution:
- {
- integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==,
- }
+ resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==}
peerDependencies:
babel-plugin-macros: ^3.1.0
peerDependenciesMeta:
@@ -8574,10 +6391,7 @@ packages:
optional: true
dedent@1.7.2:
- resolution:
- {
- integrity: sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==,
- }
+ resolution: {integrity: sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==}
peerDependencies:
babel-plugin-macros: ^3.1.0
peerDependenciesMeta:
@@ -8585,230 +6399,125 @@ packages:
optional: true
deep-is@0.1.4:
- resolution:
- {
- integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==,
- }
+ resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
deepmerge@4.3.1:
- resolution:
- {
- integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
+ engines: {node: '>=0.10.0'}
defaults@1.0.4:
- resolution:
- {
- integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==,
- }
+ resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==}
define-lazy-prop@2.0.0:
- resolution:
- {
- integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==}
+ engines: {node: '>=8'}
delayed-stream@1.0.0:
- resolution:
- {
- integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==,
- }
- engines: { node: '>=0.4.0' }
+ resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
+ engines: {node: '>=0.4.0'}
depd@1.1.2:
- resolution:
- {
- integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==,
- }
- engines: { node: '>= 0.6' }
+ resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==}
+ engines: {node: '>= 0.6'}
depd@2.0.0:
- resolution:
- {
- integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==,
- }
- engines: { node: '>= 0.8' }
+ resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
+ engines: {node: '>= 0.8'}
deprecation@2.3.1:
- resolution:
- {
- integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==,
- }
+ resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==}
detect-indent@5.0.0:
- resolution:
- {
- integrity: sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==}
+ engines: {node: '>=4'}
detect-newline@3.1.0:
- resolution:
- {
- integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==}
+ engines: {node: '>=8'}
detect-node-es@1.1.0:
- resolution:
- {
- integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==,
- }
+ resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==}
detect-node@2.1.0:
- resolution:
- {
- integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==,
- }
+ resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==}
dezalgo@1.0.4:
- resolution:
- {
- integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==,
- }
+ resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==}
dicer@0.3.0:
- resolution:
- {
- integrity: sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA==,
- }
- engines: { node: '>=4.5.0' }
+ resolution: {integrity: sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA==}
+ engines: {node: '>=4.5.0'}
diff-sequences@29.6.3:
- resolution:
- {
- integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==,
- }
- engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 }
+ resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
diff@4.0.2:
- resolution:
- {
- integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==,
- }
- engines: { node: '>=0.3.1' }
+ resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==}
+ engines: {node: '>=0.3.1'}
dom-accessibility-api@0.5.16:
- resolution:
- {
- integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==,
- }
+ resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==}
dom-serializer@0.1.1:
- resolution:
- {
- integrity: sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==,
- }
+ resolution: {integrity: sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==}
dom-serializer@0.2.2:
- resolution:
- {
- integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==,
- }
+ resolution: {integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==}
dom-serializer@1.4.1:
- resolution:
- {
- integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==,
- }
+ resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==}
dom-serializer@2.0.0:
- resolution:
- {
- integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==,
- }
+ resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==}
domelementtype@1.3.1:
- resolution:
- {
- integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==,
- }
+ resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==}
domelementtype@2.3.0:
- resolution:
- {
- integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==,
- }
+ resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==}
domhandler@2.4.2:
- resolution:
- {
- integrity: sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==,
- }
+ resolution: {integrity: sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==}
domhandler@3.3.0:
- resolution:
- {
- integrity: sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==,
- }
- engines: { node: '>= 4' }
+ resolution: {integrity: sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==}
+ engines: {node: '>= 4'}
domhandler@4.3.1:
- resolution:
- {
- integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==,
- }
- engines: { node: '>= 4' }
+ resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==}
+ engines: {node: '>= 4'}
domhandler@5.0.3:
- resolution:
- {
- integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==,
- }
- engines: { node: '>= 4' }
+ resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==}
+ engines: {node: '>= 4'}
domutils@1.5.1:
- resolution:
- {
- integrity: sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw==,
- }
+ resolution: {integrity: sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw==}
domutils@1.7.0:
- resolution:
- {
- integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==,
- }
+ resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==}
domutils@2.8.0:
- resolution:
- {
- integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==,
- }
+ resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==}
domutils@3.2.2:
- resolution:
- {
- integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==,
- }
+ resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==}
dot-prop@5.3.0:
- resolution:
- {
- integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==}
+ engines: {node: '>=8'}
dotenv-expand@11.0.7:
- resolution:
- {
- integrity: sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==,
- }
- engines: { node: '>=12' }
+ resolution: {integrity: sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==}
+ engines: {node: '>=12'}
dotenv@16.4.7:
- resolution:
- {
- integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==,
- }
- engines: { node: '>=12' }
+ resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==}
+ engines: {node: '>=12'}
drizzle-orm@0.45.1:
- resolution:
- {
- integrity: sha512-Te0FOdKIistGNPMq2jscdqngBRfBpC8uMFVwqjf6gtTVJHIQ/dosgV/CLBU2N4ZJBsXL5savCba9b0YJskKdcA==,
- }
+ resolution: {integrity: sha512-Te0FOdKIistGNPMq2jscdqngBRfBpC8uMFVwqjf6gtTVJHIQ/dosgV/CLBU2N4ZJBsXL5savCba9b0YJskKdcA==}
peerDependencies:
'@aws-sdk/client-rds-data': '>=3'
'@cloudflare/workers-types': '>=4'
@@ -8900,270 +6609,153 @@ packages:
optional: true
dunder-proto@1.0.1:
- resolution:
- {
- integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
+ engines: {node: '>= 0.4'}
eastasianwidth@0.2.0:
- resolution:
- {
- integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==,
- }
+ resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
ecdsa-sig-formatter@1.0.11:
- resolution:
- {
- integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==,
- }
+ resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==}
editorconfig@1.0.4:
- resolution:
- {
- integrity: sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==,
- }
- engines: { node: '>=14' }
+ resolution: {integrity: sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==}
+ engines: {node: '>=14'}
hasBin: true
ee-first@1.1.1:
- resolution:
- {
- integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==,
- }
+ resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
ejs@3.1.10:
- resolution:
- {
- integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==}
+ engines: {node: '>=0.10.0'}
hasBin: true
electron-to-chromium@1.5.267:
- resolution:
- {
- integrity: sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==,
- }
+ resolution: {integrity: sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==}
emittery@0.13.1:
- resolution:
- {
- integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==,
- }
- engines: { node: '>=12' }
+ resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==}
+ engines: {node: '>=12'}
emoji-regex@8.0.0:
- resolution:
- {
- integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==,
- }
+ resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
emoji-regex@9.2.2:
- resolution:
- {
- integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==,
- }
+ resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
encodeurl@2.0.0:
- resolution:
- {
- integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==,
- }
- engines: { node: '>= 0.8' }
+ resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==}
+ engines: {node: '>= 0.8'}
encoding-sniffer@0.2.1:
- resolution:
- {
- integrity: sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==,
- }
+ resolution: {integrity: sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==}
encoding@0.1.13:
- resolution:
- {
- integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==,
- }
+ resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==}
end-of-stream@1.4.5:
- resolution:
- {
- integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==,
- }
+ resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==}
enquirer@2.3.6:
- resolution:
- {
- integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==,
- }
- engines: { node: '>=8.6' }
+ resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==}
+ engines: {node: '>=8.6'}
entities@1.1.2:
- resolution:
- {
- integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==,
- }
+ resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==}
entities@2.2.0:
- resolution:
- {
- integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==,
- }
+ resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==}
entities@4.5.0:
- resolution:
- {
- integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==,
- }
- engines: { node: '>=0.12' }
+ resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
+ engines: {node: '>=0.12'}
entities@6.0.1:
- resolution:
- {
- integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==,
- }
- engines: { node: '>=0.12' }
+ resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==}
+ engines: {node: '>=0.12'}
env-paths@2.2.1:
- resolution:
- {
- integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==}
+ engines: {node: '>=6'}
envalid@8.1.1:
- resolution:
- {
- integrity: sha512-vOUfHxAFFvkBjbVQbBfgnCO9d3GcNfMMTtVfgqSU2rQGMFEVqWy9GBuoSfHnwGu7EqR0/GeukQcL3KjFBaga9w==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-vOUfHxAFFvkBjbVQbBfgnCO9d3GcNfMMTtVfgqSU2rQGMFEVqWy9GBuoSfHnwGu7EqR0/GeukQcL3KjFBaga9w==}
+ engines: {node: '>=18'}
envinfo@7.13.0:
- resolution:
- {
- integrity: sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==}
+ engines: {node: '>=4'}
hasBin: true
err-code@2.0.3:
- resolution:
- {
- integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==,
- }
+ resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==}
error-ex@1.3.4:
- resolution:
- {
- integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==,
- }
+ resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==}
es-define-property@1.0.1:
- resolution:
- {
- integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
+ engines: {node: '>= 0.4'}
es-errors@1.3.0:
- resolution:
- {
- integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
+ engines: {node: '>= 0.4'}
es-object-atoms@1.1.1:
- resolution:
- {
- integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
+ engines: {node: '>= 0.4'}
es-set-tostringtag@2.1.0:
- resolution:
- {
- integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==}
+ engines: {node: '>= 0.4'}
esbuild@0.25.12:
- resolution:
- {
- integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==}
+ engines: {node: '>=18'}
hasBin: true
esbuild@0.27.2:
- resolution:
- {
- integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==}
+ engines: {node: '>=18'}
hasBin: true
escalade@3.2.0:
- resolution:
- {
- integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
+ engines: {node: '>=6'}
escape-goat@3.0.0:
- resolution:
- {
- integrity: sha512-w3PwNZJwRxlp47QGzhuEBldEqVHHhh8/tIPcl6ecf2Bou99cdAt0knihBV0Ecc7CGxYduXVBDheH1K2oADRlvw==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-w3PwNZJwRxlp47QGzhuEBldEqVHHhh8/tIPcl6ecf2Bou99cdAt0knihBV0Ecc7CGxYduXVBDheH1K2oADRlvw==}
+ engines: {node: '>=10'}
escape-html@1.0.3:
- resolution:
- {
- integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==,
- }
+ resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
escape-string-regexp@1.0.5:
- resolution:
- {
- integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==,
- }
- engines: { node: '>=0.8.0' }
+ resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
+ engines: {node: '>=0.8.0'}
escape-string-regexp@2.0.0:
- resolution:
- {
- integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==}
+ engines: {node: '>=8'}
escape-string-regexp@4.0.0:
- resolution:
- {
- integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
+ engines: {node: '>=10'}
eslint-config-prettier@10.1.8:
- resolution:
- {
- integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==,
- }
+ resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==}
hasBin: true
peerDependencies:
eslint: '>=7.0.0'
eslint-plugin-simple-import-sort@12.1.1:
- resolution:
- {
- integrity: sha512-6nuzu4xwQtE3332Uz0to+TxDQYRLTKRESSc2hefVT48Zc8JthmN23Gx9lnYhu0FtkRSL1oxny3kJ2aveVhmOVA==,
- }
+ resolution: {integrity: sha512-6nuzu4xwQtE3332Uz0to+TxDQYRLTKRESSc2hefVT48Zc8JthmN23Gx9lnYhu0FtkRSL1oxny3kJ2aveVhmOVA==}
peerDependencies:
eslint: '>=5.0.0'
eslint-plugin-unused-imports@4.4.1:
- resolution:
- {
- integrity: sha512-oZGYUz1X3sRMGUB+0cZyK2VcvRX5lm/vB56PgNNcU+7ficUCKm66oZWKUubXWnOuPjQ8PvmXtCViXBMONPe7tQ==,
- }
+ resolution: {integrity: sha512-oZGYUz1X3sRMGUB+0cZyK2VcvRX5lm/vB56PgNNcU+7ficUCKm66oZWKUubXWnOuPjQ8PvmXtCViXBMONPe7tQ==}
peerDependencies:
'@typescript-eslint/eslint-plugin': ^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0
eslint: ^10.0.0 || ^9.0.0 || ^8.0.0
@@ -9172,39 +6764,24 @@ packages:
optional: true
eslint-scope@8.4.0:
- resolution:
- {
- integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==,
- }
- engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
eslint-visitor-keys@3.4.3:
- resolution:
- {
- integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==,
- }
- engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
+ resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
eslint-visitor-keys@4.2.1:
- resolution:
- {
- integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==,
- }
- engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
eslint-visitor-keys@5.0.1:
- resolution:
- {
- integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==,
- }
- engines: { node: ^20.19.0 || ^22.13.0 || >=24 }
+ resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=24}
eslint@9.39.2:
- resolution:
- {
- integrity: sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==,
- }
- engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ resolution: {integrity: sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
hasBin: true
peerDependencies:
jiti: '*'
@@ -9213,190 +6790,106 @@ packages:
optional: true
espree@10.4.0:
- resolution:
- {
- integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==,
- }
- engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
esprima@4.0.1:
- resolution:
- {
- integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
+ engines: {node: '>=4'}
hasBin: true
esquery@1.6.0:
- resolution:
- {
- integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==,
- }
- engines: { node: '>=0.10' }
+ resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==}
+ engines: {node: '>=0.10'}
esrecurse@4.3.0:
- resolution:
- {
- integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==,
- }
- engines: { node: '>=4.0' }
+ resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
+ engines: {node: '>=4.0'}
estraverse@5.3.0:
- resolution:
- {
- integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==,
- }
- engines: { node: '>=4.0' }
+ resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
+ engines: {node: '>=4.0'}
esutils@2.0.3:
- resolution:
- {
- integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
+ engines: {node: '>=0.10.0'}
etag@1.8.1:
- resolution:
- {
- integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==,
- }
- engines: { node: '>= 0.6' }
+ resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
+ engines: {node: '>= 0.6'}
eventemitter3@4.0.7:
- resolution:
- {
- integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==,
- }
+ resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==}
eventemitter3@5.0.4:
- resolution:
- {
- integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==,
- }
+ resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==}
events@3.3.0:
- resolution:
- {
- integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==,
- }
- engines: { node: '>=0.8.x' }
+ resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
+ engines: {node: '>=0.8.x'}
execa@5.0.0:
- resolution:
- {
- integrity: sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==}
+ engines: {node: '>=10'}
execa@5.1.1:
- resolution:
- {
- integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
+ engines: {node: '>=10'}
exit-x@0.2.2:
- resolution:
- {
- integrity: sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==,
- }
- engines: { node: '>= 0.8.0' }
+ resolution: {integrity: sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==}
+ engines: {node: '>= 0.8.0'}
expect@30.2.0:
- resolution:
- {
- integrity: sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
expect@30.3.0:
- resolution:
- {
- integrity: sha512-1zQrciTiQfRdo7qJM1uG4navm8DayFa2TgCSRlzUyNkhcJ6XUZF3hjnpkyr3VhAqPH7i/9GkG7Tv5abz6fqz0Q==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-1zQrciTiQfRdo7qJM1uG4navm8DayFa2TgCSRlzUyNkhcJ6XUZF3hjnpkyr3VhAqPH7i/9GkG7Tv5abz6fqz0Q==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
exponential-backoff@3.1.3:
- resolution:
- {
- integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==,
- }
+ resolution: {integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==}
express@5.2.1:
- resolution:
- {
- integrity: sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==,
- }
- engines: { node: '>= 18' }
+ resolution: {integrity: sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==}
+ engines: {node: '>= 18'}
fast-deep-equal@3.1.3:
- resolution:
- {
- integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==,
- }
+ resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
fast-glob@3.3.3:
- resolution:
- {
- integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==,
- }
- engines: { node: '>=8.6.0' }
+ resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
+ engines: {node: '>=8.6.0'}
fast-json-stable-stringify@2.1.0:
- resolution:
- {
- integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==,
- }
+ resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
fast-levenshtein@2.0.6:
- resolution:
- {
- integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==,
- }
+ resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
fast-safe-stringify@2.1.1:
- resolution:
- {
- integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==,
- }
+ resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==}
fast-uri@3.1.0:
- resolution:
- {
- integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==,
- }
+ resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==}
fast-xml-builder@1.1.4:
- resolution:
- {
- integrity: sha512-f2jhpN4Eccy0/Uz9csxh3Nu6q4ErKxf0XIsasomfOihuSUa3/xw6w8dnOtCDgEItQFJG8KyXPzQXzcODDrrbOg==,
- }
+ resolution: {integrity: sha512-f2jhpN4Eccy0/Uz9csxh3Nu6q4ErKxf0XIsasomfOihuSUa3/xw6w8dnOtCDgEItQFJG8KyXPzQXzcODDrrbOg==}
fast-xml-parser@5.5.8:
- resolution:
- {
- integrity: sha512-Z7Fh2nVQSb2d+poDViM063ix2ZGt9jmY1nWhPfHBOK2Hgnb/OW3P4Et3P/81SEej0J7QbWtJqxO05h8QYfK7LQ==,
- }
+ resolution: {integrity: sha512-Z7Fh2nVQSb2d+poDViM063ix2ZGt9jmY1nWhPfHBOK2Hgnb/OW3P4Et3P/81SEej0J7QbWtJqxO05h8QYfK7LQ==}
hasBin: true
fastq@1.20.1:
- resolution:
- {
- integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==,
- }
+ resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==}
fb-watchman@2.0.2:
- resolution:
- {
- integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==,
- }
+ resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==}
fdir@6.5.0:
- resolution:
- {
- integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==,
- }
- engines: { node: '>=12.0.0' }
+ resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
+ engines: {node: '>=12.0.0'}
peerDependencies:
picomatch: ^3 || ^4
peerDependenciesMeta:
@@ -9404,92 +6897,53 @@ packages:
optional: true
figures@3.2.0:
- resolution:
- {
- integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==}
+ engines: {node: '>=8'}
file-entry-cache@8.0.0:
- resolution:
- {
- integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==,
- }
- engines: { node: '>=16.0.0' }
+ resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
+ engines: {node: '>=16.0.0'}
filelist@1.0.4:
- resolution:
- {
- integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==,
- }
+ resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==}
fill-range@7.1.1:
- resolution:
- {
- integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
+ engines: {node: '>=8'}
finalhandler@2.1.1:
- resolution:
- {
- integrity: sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==,
- }
- engines: { node: '>= 18.0.0' }
+ resolution: {integrity: sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==}
+ engines: {node: '>= 18.0.0'}
find-and-require-package-json@0.9.1:
- resolution:
- {
- integrity: sha512-jFpCL0XgjipSk109viUtfp+NyR/oW6a4Xus4tV3UYkmCbsjisEeZD1x5QnD1NDDK/hXas1WFs4yO13L4TPXWlQ==,
- }
+ resolution: {integrity: sha512-jFpCL0XgjipSk109viUtfp+NyR/oW6a4Xus4tV3UYkmCbsjisEeZD1x5QnD1NDDK/hXas1WFs4yO13L4TPXWlQ==}
find-up@2.1.0:
- resolution:
- {
- integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==}
+ engines: {node: '>=4'}
find-up@4.1.0:
- resolution:
- {
- integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
+ engines: {node: '>=8'}
find-up@5.0.0:
- resolution:
- {
- integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
+ engines: {node: '>=10'}
flat-cache@4.0.1:
- resolution:
- {
- integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==,
- }
- engines: { node: '>=16' }
+ resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
+ engines: {node: '>=16'}
flat@5.0.2:
- resolution:
- {
- integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==,
- }
+ resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==}
hasBin: true
flatted@3.3.3:
- resolution:
- {
- integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==,
- }
+ resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}
follow-redirects@1.15.11:
- resolution:
- {
- integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==,
- }
- engines: { node: '>=4.0' }
+ resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==}
+ engines: {node: '>=4.0'}
peerDependencies:
debug: '*'
peerDependenciesMeta:
@@ -9497,38 +6951,23 @@ packages:
optional: true
foreground-child@3.3.1:
- resolution:
- {
- integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==,
- }
- engines: { node: '>=14' }
+ resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==}
+ engines: {node: '>=14'}
form-data@4.0.5:
- resolution:
- {
- integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==,
- }
- engines: { node: '>= 6' }
+ resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==}
+ engines: {node: '>= 6'}
formidable@3.5.4:
- resolution:
- {
- integrity: sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug==,
- }
- engines: { node: '>=14.0.0' }
+ resolution: {integrity: sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug==}
+ engines: {node: '>=14.0.0'}
forwarded@0.2.0:
- resolution:
- {
- integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==,
- }
- engines: { node: '>= 0.6' }
+ resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}
+ engines: {node: '>= 0.6'}
framer-motion@12.36.0:
- resolution:
- {
- integrity: sha512-4PqYHAT7gev0ke0wos+PyrcFxI0HScjm3asgU8nSYa8YzJFuwgIvdj3/s3ZaxLq0bUSboIn19A2WS/MHwLCvfw==,
- }
+ resolution: {integrity: sha512-4PqYHAT7gev0ke0wos+PyrcFxI0HScjm3asgU8nSYa8YzJFuwgIvdj3/s3ZaxLq0bUSboIn19A2WS/MHwLCvfw==}
peerDependencies:
'@emotion/is-prop-valid': '*'
react: ^18.0.0 || ^19.0.0
@@ -9542,299 +6981,173 @@ packages:
optional: true
fresh@2.0.0:
- resolution:
- {
- integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==,
- }
- engines: { node: '>= 0.8' }
+ resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==}
+ engines: {node: '>= 0.8'}
front-matter@4.0.2:
- resolution:
- {
- integrity: sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==,
- }
+ resolution: {integrity: sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==}
fs-capacitor@6.2.0:
- resolution:
- {
- integrity: sha512-nKcE1UduoSKX27NSZlg879LdQc94OtbOsEmKMN2MBNudXREvijRKx2GEBsTMTfws+BrbkJoEuynbGSVRSpauvw==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-nKcE1UduoSKX27NSZlg879LdQc94OtbOsEmKMN2MBNudXREvijRKx2GEBsTMTfws+BrbkJoEuynbGSVRSpauvw==}
+ engines: {node: '>=10'}
fs-capacitor@8.0.0:
- resolution:
- {
- integrity: sha512-+Lk6iSKajdGw+7XYxUkwIzreJ2G1JFlYOdnKJv5PzwFLVsoJYBpCuS7WPIUSNT1IbQaEWT1nhYU63Ud03DyzLA==,
- }
- engines: { node: ^14.17.0 || >=16.0.0 }
+ resolution: {integrity: sha512-+Lk6iSKajdGw+7XYxUkwIzreJ2G1JFlYOdnKJv5PzwFLVsoJYBpCuS7WPIUSNT1IbQaEWT1nhYU63Ud03DyzLA==}
+ engines: {node: ^14.17.0 || >=16.0.0}
fs-constants@1.0.0:
- resolution:
- {
- integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==,
- }
+ resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==}
fs-extra@11.3.3:
- resolution:
- {
- integrity: sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==,
- }
- engines: { node: '>=14.14' }
+ resolution: {integrity: sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==}
+ engines: {node: '>=14.14'}
fs-minipass@2.1.0:
- resolution:
- {
- integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==,
- }
- engines: { node: '>= 8' }
+ resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==}
+ engines: {node: '>= 8'}
fs-minipass@3.0.3:
- resolution:
- {
- integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==,
- }
- engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+ resolution: {integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
fs.realpath@1.0.0:
- resolution:
- {
- integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==,
- }
+ resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
fsevents@2.3.2:
- resolution:
- {
- integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==,
- }
- engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 }
+ resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
os: [darwin]
fsevents@2.3.3:
- resolution:
- {
- integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==,
- }
- engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 }
+ 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==,
- }
+ resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
genomic@5.3.9:
- resolution:
- {
- integrity: sha512-zPJ+qH993GtbtsQSCd283ErOLF7/4cg5+DGVYHK9laiX8lITF4x0DJMktxAHqgmMdI3QjLuMOcGnTGOH950sFg==,
- }
+ resolution: {integrity: sha512-zPJ+qH993GtbtsQSCd283ErOLF7/4cg5+DGVYHK9laiX8lITF4x0DJMktxAHqgmMdI3QjLuMOcGnTGOH950sFg==}
gensync@1.0.0-beta.2:
- resolution:
- {
- integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
+ engines: {node: '>=6.9.0'}
get-caller-file@2.0.5:
- resolution:
- {
- integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==,
- }
- engines: { node: 6.* || 8.* || >= 10.* }
+ resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
+ engines: {node: 6.* || 8.* || >= 10.*}
get-intrinsic@1.3.0:
- resolution:
- {
- integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
+ engines: {node: '>= 0.4'}
get-nonce@1.0.1:
- resolution:
- {
- integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==}
+ engines: {node: '>=6'}
get-package-type@0.1.0:
- resolution:
- {
- integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==,
- }
- engines: { node: '>=8.0.0' }
+ resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==}
+ engines: {node: '>=8.0.0'}
get-pkg-repo@4.2.1:
- resolution:
- {
- integrity: sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==}
+ engines: {node: '>=6.9.0'}
hasBin: true
get-port@5.1.1:
- resolution:
- {
- integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==}
+ engines: {node: '>=8'}
get-proto@1.0.1:
- resolution:
- {
- integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
+ engines: {node: '>= 0.4'}
get-stream@6.0.0:
- resolution:
- {
- integrity: sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==}
+ engines: {node: '>=10'}
get-stream@6.0.1:
- resolution:
- {
- integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
+ engines: {node: '>=10'}
get-tsconfig@4.13.0:
- resolution:
- {
- integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==,
- }
+ resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==}
get-value@3.0.1:
- resolution:
- {
- integrity: sha512-mKZj9JLQrwMBtj5wxi6MH8Z5eSKaERpAwjg43dPtlGI1ZVEgH/qC7T8/6R2OBSUA+zzHBZgICsVJaEIV2tKTDA==,
- }
- engines: { node: '>=6.0' }
+ resolution: {integrity: sha512-mKZj9JLQrwMBtj5wxi6MH8Z5eSKaERpAwjg43dPtlGI1ZVEgH/qC7T8/6R2OBSUA+zzHBZgICsVJaEIV2tKTDA==}
+ engines: {node: '>=6.0'}
git-raw-commits@3.0.0:
- resolution:
- {
- integrity: sha512-b5OHmZ3vAgGrDn/X0kS+9qCfNKWe4K/jFnhwzVWWg0/k5eLa3060tZShrRg8Dja5kPc+YjS0Gc6y7cRr44Lpjw==,
- }
- engines: { node: '>=14' }
+ resolution: {integrity: sha512-b5OHmZ3vAgGrDn/X0kS+9qCfNKWe4K/jFnhwzVWWg0/k5eLa3060tZShrRg8Dja5kPc+YjS0Gc6y7cRr44Lpjw==}
+ engines: {node: '>=14'}
deprecated: This package is no longer maintained. For the JavaScript API, please use @conventional-changelog/git-client instead.
hasBin: true
git-remote-origin-url@2.0.0:
- resolution:
- {
- integrity: sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==}
+ engines: {node: '>=4'}
git-semver-tags@5.0.1:
- resolution:
- {
- integrity: sha512-hIvOeZwRbQ+7YEUmCkHqo8FOLQZCEn18yevLHADlFPZY02KJGsu5FZt9YW/lybfK2uhWFI7Qg/07LekJiTv7iA==,
- }
- engines: { node: '>=14' }
+ resolution: {integrity: sha512-hIvOeZwRbQ+7YEUmCkHqo8FOLQZCEn18yevLHADlFPZY02KJGsu5FZt9YW/lybfK2uhWFI7Qg/07LekJiTv7iA==}
+ engines: {node: '>=14'}
deprecated: This package is no longer maintained. For the JavaScript API, please use @conventional-changelog/git-client instead.
hasBin: true
git-up@7.0.0:
- resolution:
- {
- integrity: sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==,
- }
+ resolution: {integrity: sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==}
git-url-parse@14.0.0:
- resolution:
- {
- integrity: sha512-NnLweV+2A4nCvn4U/m2AoYu0pPKlsmhK9cknG7IMwsjFY1S2jxM+mAhsDxyxfCIGfGaD+dozsyX4b6vkYc83yQ==,
- }
+ resolution: {integrity: sha512-NnLweV+2A4nCvn4U/m2AoYu0pPKlsmhK9cknG7IMwsjFY1S2jxM+mAhsDxyxfCIGfGaD+dozsyX4b6vkYc83yQ==}
gitconfiglocal@1.0.0:
- resolution:
- {
- integrity: sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==,
- }
+ resolution: {integrity: sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==}
glob-parent@5.1.2:
- resolution:
- {
- integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==,
- }
- engines: { node: '>= 6' }
+ resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
+ engines: {node: '>= 6'}
glob-parent@6.0.2:
- resolution:
- {
- integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==,
- }
- engines: { node: '>=10.13.0' }
+ resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
+ engines: {node: '>=10.13.0'}
glob@10.5.0:
- resolution:
- {
- integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==,
- }
+ resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==}
deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
hasBin: true
glob@11.1.0:
- resolution:
- {
- integrity: sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==,
- }
- engines: { node: 20 || >=22 }
+ resolution: {integrity: sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==}
+ engines: {node: 20 || >=22}
deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
hasBin: true
glob@13.0.6:
- resolution:
- {
- integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==,
- }
- engines: { node: 18 || 20 || >=22 }
+ resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==}
+ engines: {node: 18 || 20 || >=22}
glob@7.2.3:
- resolution:
- {
- integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==,
- }
+ resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
glob@9.3.5:
- resolution:
- {
- integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==,
- }
- engines: { node: '>=16 || 14 >=14.17' }
+ resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==}
+ engines: {node: '>=16 || 14 >=14.17'}
deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
globals@14.0.0:
- resolution:
- {
- integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
+ engines: {node: '>=18'}
gopd@1.2.0:
- resolution:
- {
- integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
+ engines: {node: '>= 0.4'}
graceful-fs@4.2.11:
- resolution:
- {
- integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==,
- }
+ resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
grafast@1.0.0:
- resolution:
- {
- integrity: sha512-V4AhdcQhgDDqKZS708WWu8iC6Jd80gVca6zC1M8YUb8gZOOS4r0f/V89KbGFWh0nuLaZQeFj+LZ9Ps9B8F2LEA==,
- }
- engines: { node: '>=22' }
+ resolution: {integrity: sha512-V4AhdcQhgDDqKZS708WWu8iC6Jd80gVca6zC1M8YUb8gZOOS4r0f/V89KbGFWh0nuLaZQeFj+LZ9Ps9B8F2LEA==}
+ engines: {node: '>=22'}
peerDependencies:
'@envelop/core': ^5.0.0
graphql: 16.13.0
@@ -9843,11 +7156,8 @@ packages:
optional: true
grafserv@1.0.0:
- resolution:
- {
- integrity: sha512-9w0zwYSHS10DfHOAQhaCVvJnOFuk+YY+nZZqG0ZOqFbner3Zf4GvqfWlNETdmUQdB6dnISfGZCkIaSZt5R7wCQ==,
- }
- engines: { node: '>=22' }
+ resolution: {integrity: sha512-9w0zwYSHS10DfHOAQhaCVvJnOFuk+YY+nZZqG0ZOqFbner3Zf4GvqfWlNETdmUQdB6dnISfGZCkIaSZt5R7wCQ==}
+ engines: {node: '>=22'}
peerDependencies:
'@envelop/core': ^5.0.0
'@whatwg-node/server': ^0.9.64
@@ -9870,11 +7180,8 @@ packages:
optional: true
graphile-build-pg@5.0.0:
- resolution:
- {
- integrity: sha512-a0FAR5n8UIYMAI1URIuWAAb+dZUDNrP09rYdg7veBUhJQyBtfkUHGNwZ+gDEhRBOvr/eRrw5Jkqc+Moi+XwW8A==,
- }
- engines: { node: '>=22' }
+ resolution: {integrity: sha512-a0FAR5n8UIYMAI1URIuWAAb+dZUDNrP09rYdg7veBUhJQyBtfkUHGNwZ+gDEhRBOvr/eRrw5Jkqc+Moi+XwW8A==}
+ engines: {node: '>=22'}
peerDependencies:
'@dataplan/pg': ^1.0.0-rc.7
grafast: ^1.0.0-rc.8
@@ -9889,29 +7196,20 @@ packages:
optional: true
graphile-build@5.0.0:
- resolution:
- {
- integrity: sha512-hGieff6/UaikT7ywWv2XTFa1mGJ1Zdytqbfw0bmVlXWMOeJGpvCdx9+k5Kpw7aIZ92twPa5yb2HUo0Q8j2Kwzw==,
- }
- engines: { node: '>=22' }
+ resolution: {integrity: sha512-hGieff6/UaikT7ywWv2XTFa1mGJ1Zdytqbfw0bmVlXWMOeJGpvCdx9+k5Kpw7aIZ92twPa5yb2HUo0Q8j2Kwzw==}
+ engines: {node: '>=22'}
peerDependencies:
grafast: ^1.0.0-rc.8
graphile-config: ^1.0.0-rc.5
graphql: 16.13.0
graphile-config@1.0.0:
- resolution:
- {
- integrity: sha512-nPKrrpmYT/cMibqHnNL+zLIRrC/SQhop7yV4tZiyrC/C0mckdlghRWR9oPV7UppkeFIdgTt5/7UQCrwhX82faQ==,
- }
- engines: { node: '>=22' }
+ resolution: {integrity: sha512-nPKrrpmYT/cMibqHnNL+zLIRrC/SQhop7yV4tZiyrC/C0mckdlghRWR9oPV7UppkeFIdgTt5/7UQCrwhX82faQ==}
+ engines: {node: '>=22'}
graphile-utils@5.0.0:
- resolution:
- {
- integrity: sha512-W/qzi7o6w4cakNqapeGNSGmYq0QowsiT0okPdmdUmZe117XiGPACzL+H0vqG0ZqkLUjZ5vNTIOGYQVqJ4Tg6KA==,
- }
- engines: { node: '>=22' }
+ resolution: {integrity: sha512-W/qzi7o6w4cakNqapeGNSGmYq0QowsiT0okPdmdUmZe117XiGPACzL+H0vqG0ZqkLUjZ5vNTIOGYQVqJ4Tg6KA==}
+ engines: {node: '>=22'}
peerDependencies:
'@dataplan/pg': ^1.0.0-rc.7
grafast: ^1.0.0-rc.8
@@ -9925,56 +7223,38 @@ packages:
optional: true
graphiql@5.2.2:
- resolution:
- {
- integrity: sha512-qYhw7e2QPLPEIdJXqlLa/XkZtEu2SVYyD71abOpPnrzmJzTdB+QsEswFIMg9u1WGkEtp/wi8epCsuKeA/chRcg==,
- }
+ resolution: {integrity: sha512-qYhw7e2QPLPEIdJXqlLa/XkZtEu2SVYyD71abOpPnrzmJzTdB+QsEswFIMg9u1WGkEtp/wi8epCsuKeA/chRcg==}
peerDependencies:
graphql: 16.13.0
react: ^18 || ^19
react-dom: ^18 || ^19
graphql-language-service@5.5.0:
- resolution:
- {
- integrity: sha512-9EvWrLLkF6Y5e29/2cmFoAO6hBPPAZlCyjznmpR11iFtRydfkss+9m6x+htA8h7YznGam+TtJwS6JuwoWWgb2Q==,
- }
+ resolution: {integrity: sha512-9EvWrLLkF6Y5e29/2cmFoAO6hBPPAZlCyjznmpR11iFtRydfkss+9m6x+htA8h7YznGam+TtJwS6JuwoWWgb2Q==}
hasBin: true
peerDependencies:
graphql: 16.13.0
graphql-request@7.4.0:
- resolution:
- {
- integrity: sha512-xfr+zFb/QYbs4l4ty0dltqiXIp07U6sl+tOKAb0t50/EnQek6CVVBLjETXi+FghElytvgaAWtIOt3EV7zLzIAQ==,
- }
+ resolution: {integrity: sha512-xfr+zFb/QYbs4l4ty0dltqiXIp07U6sl+tOKAb0t50/EnQek6CVVBLjETXi+FghElytvgaAWtIOt3EV7zLzIAQ==}
peerDependencies:
graphql: 16.13.0
graphql-tag@2.12.6:
- resolution:
- {
- integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==}
+ engines: {node: '>=10'}
peerDependencies:
graphql: 16.13.0
graphql-upload@13.0.0:
- resolution:
- {
- integrity: sha512-YKhx8m/uOtKu4Y1UzBFJhbBGJTlk7k4CydlUUiNrtxnwZv0WigbRHP+DVhRNKt7u7DXOtcKZeYJlGtnMXvreXA==,
- }
- engines: { node: ^12.22.0 || ^14.17.0 || >= 16.0.0 }
+ resolution: {integrity: sha512-YKhx8m/uOtKu4Y1UzBFJhbBGJTlk7k4CydlUUiNrtxnwZv0WigbRHP+DVhRNKt7u7DXOtcKZeYJlGtnMXvreXA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >= 16.0.0}
peerDependencies:
graphql: 16.13.0
graphql-ws@6.0.7:
- resolution:
- {
- integrity: sha512-yoLRW+KRlDmnnROdAu7sX77VNLC0bsFoZyGQJLy1cF+X/SkLg/fWkRGrEEYQK8o2cafJ2wmEaMqMEZB3U3DYDg==,
- }
- engines: { node: '>=20' }
+ resolution: {integrity: sha512-yoLRW+KRlDmnnROdAu7sX77VNLC0bsFoZyGQJLy1cF+X/SkLg/fWkRGrEEYQK8o2cafJ2wmEaMqMEZB3U3DYDg==}
+ engines: {node: '>=20'}
peerDependencies:
'@fastify/websocket': ^10 || ^11
crossws: ~0.3
@@ -9989,623 +7269,350 @@ packages:
optional: true
graphql@16.13.0:
- resolution:
- {
- integrity: sha512-uSisMYERbaB9bkA9M4/4dnqyktaEkf1kMHNKq/7DHyxVeWqHQ2mBmVqm5u6/FVHwF3iCNalKcg82Zfl+tffWoA==,
- }
- engines: { node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0 }
+ resolution: {integrity: sha512-uSisMYERbaB9bkA9M4/4dnqyktaEkf1kMHNKq/7DHyxVeWqHQ2mBmVqm5u6/FVHwF3iCNalKcg82Zfl+tffWoA==}
+ engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0}
handlebars@4.7.8:
- resolution:
- {
- integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==,
- }
- engines: { node: '>=0.4.7' }
+ resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==}
+ engines: {node: '>=0.4.7'}
hasBin: true
hard-rejection@2.1.0:
- resolution:
- {
- integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==}
+ engines: {node: '>=6'}
has-flag@3.0.0:
- resolution:
- {
- integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==,
- }
- engines: { node: '>=4' }
+ 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' }
+ resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
+ engines: {node: '>=8'}
has-symbols@1.1.0:
- resolution:
- {
- integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
+ engines: {node: '>= 0.4'}
has-tostringtag@1.0.2:
- resolution:
- {
- integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
+ engines: {node: '>= 0.4'}
has-unicode@2.0.1:
- resolution:
- {
- integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==,
- }
+ resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==}
hasown@2.0.2:
- resolution:
- {
- integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
+ engines: {node: '>= 0.4'}
he@1.2.0:
- resolution:
- {
- integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==,
- }
+ resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
hasBin: true
hoist-non-react-statics@3.3.2:
- resolution:
- {
- integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==,
- }
+ resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==}
hosted-git-info@2.8.9:
- resolution:
- {
- integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==,
- }
+ resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
hosted-git-info@4.1.0:
- resolution:
- {
- integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==}
+ engines: {node: '>=10'}
hosted-git-info@7.0.2:
- resolution:
- {
- integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==,
- }
- engines: { node: ^16.14.0 || >=18.0.0 }
+ resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==}
+ engines: {node: ^16.14.0 || >=18.0.0}
html-escaper@2.0.2:
- resolution:
- {
- integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==,
- }
+ resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==}
html-minifier@3.5.21:
- resolution:
- {
- integrity: sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==}
+ engines: {node: '>=4'}
hasBin: true
htmlparser2@10.0.0:
- resolution:
- {
- integrity: sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==,
- }
+ resolution: {integrity: sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==}
htmlparser2@3.10.1:
- resolution:
- {
- integrity: sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==,
- }
+ resolution: {integrity: sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==}
htmlparser2@4.1.0:
- resolution:
- {
- integrity: sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==,
- }
+ resolution: {integrity: sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==}
http-cache-semantics@4.2.0:
- resolution:
- {
- integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==,
- }
+ resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==}
http-errors@1.8.1:
- resolution:
- {
- integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==,
- }
- engines: { node: '>= 0.6' }
+ resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==}
+ engines: {node: '>= 0.6'}
http-errors@2.0.1:
- resolution:
- {
- integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==,
- }
- engines: { node: '>= 0.8' }
+ resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==}
+ engines: {node: '>= 0.8'}
http-proxy-agent@7.0.2:
- resolution:
- {
- integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==,
- }
- engines: { node: '>= 14' }
+ resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==}
+ engines: {node: '>= 14'}
http-proxy@1.18.1:
- resolution:
- {
- integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==,
- }
- engines: { node: '>=8.0.0' }
+ resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==}
+ engines: {node: '>=8.0.0'}
https-proxy-agent@7.0.6:
- resolution:
- {
- integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==,
- }
- engines: { node: '>= 14' }
+ resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==}
+ engines: {node: '>= 14'}
human-signals@2.1.0:
- resolution:
- {
- integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==,
- }
- engines: { node: '>=10.17.0' }
+ resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
+ engines: {node: '>=10.17.0'}
iconv-lite@0.6.3:
- resolution:
- {
- integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
+ engines: {node: '>=0.10.0'}
iconv-lite@0.7.1:
- resolution:
- {
- integrity: sha512-2Tth85cXwGFHfvRgZWszZSvdo+0Xsqmw8k8ZwxScfcBneNUraK+dxRxRm24nszx80Y0TVio8kKLt5sLE7ZCLlw==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-2Tth85cXwGFHfvRgZWszZSvdo+0Xsqmw8k8ZwxScfcBneNUraK+dxRxRm24nszx80Y0TVio8kKLt5sLE7ZCLlw==}
+ engines: {node: '>=0.10.0'}
ieee754@1.2.1:
- resolution:
- {
- integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==,
- }
+ resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
ignore-by-default@1.0.1:
- resolution:
- {
- integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==,
- }
+ resolution: {integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==}
ignore-walk@6.0.5:
- resolution:
- {
- integrity: sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==,
- }
- engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+ resolution: {integrity: sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
ignore@5.3.2:
- resolution:
- {
- integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==,
- }
- engines: { node: '>= 4' }
+ resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
+ engines: {node: '>= 4'}
ignore@7.0.5:
- resolution:
- {
- integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==,
- }
- engines: { node: '>= 4' }
+ resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==}
+ engines: {node: '>= 4'}
import-fresh@3.3.1:
- resolution:
- {
- integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
+ engines: {node: '>=6'}
import-local@3.1.0:
- resolution:
- {
- integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==}
+ engines: {node: '>=8'}
hasBin: true
import-local@3.2.0:
- resolution:
- {
- integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==}
+ engines: {node: '>=8'}
hasBin: true
imurmurhash@0.1.4:
- resolution:
- {
- integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==,
- }
- engines: { node: '>=0.8.19' }
+ resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
+ engines: {node: '>=0.8.19'}
indent-string@4.0.0:
- resolution:
- {
- integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
+ engines: {node: '>=8'}
inflection@3.0.2:
- resolution:
- {
- integrity: sha512-+Bg3+kg+J6JUWn8J6bzFmOWkTQ6L/NHfDRSYU+EVvuKHDxUDHAXgqixHfVlzuBQaPOTac8hn43aPhMNk6rMe3g==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-+Bg3+kg+J6JUWn8J6bzFmOWkTQ6L/NHfDRSYU+EVvuKHDxUDHAXgqixHfVlzuBQaPOTac8hn43aPhMNk6rMe3g==}
+ engines: {node: '>=18.0.0'}
inflekt@0.7.1:
- resolution:
- {
- integrity: sha512-iNsb7kpQeo7HUHayGI8Wbe9PC1TIJu15VfJU/Q6MADuhZh6skVifGrDsJp8t45xXg84ywvqnZwh4B6lN34nVTw==,
- }
+ resolution: {integrity: sha512-iNsb7kpQeo7HUHayGI8Wbe9PC1TIJu15VfJU/Q6MADuhZh6skVifGrDsJp8t45xXg84ywvqnZwh4B6lN34nVTw==}
inflight@1.0.6:
- resolution:
- {
- integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==,
- }
+ 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==,
- }
+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
ini@1.3.8:
- resolution:
- {
- integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==,
- }
+ resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
ini@4.1.3:
- resolution:
- {
- integrity: sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==,
- }
- engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+ resolution: {integrity: sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
init-package-json@6.0.3:
- resolution:
- {
- integrity: sha512-Zfeb5ol+H+eqJWHTaGca9BovufyGeIfr4zaaBorPmJBMrJ+KBnN+kQx2ZtXdsotUTgldHmHQV44xvUWOUA7E2w==,
- }
- engines: { node: ^16.14.0 || >=18.0.0 }
+ resolution: {integrity: sha512-Zfeb5ol+H+eqJWHTaGca9BovufyGeIfr4zaaBorPmJBMrJ+KBnN+kQx2ZtXdsotUTgldHmHQV44xvUWOUA7E2w==}
+ engines: {node: ^16.14.0 || >=18.0.0}
inquirer@8.2.7:
- resolution:
- {
- integrity: sha512-UjOaSel/iddGZJ5xP/Eixh6dY1XghiBw4XK13rCCIJcJfyhhoul/7KhLLUGtebEj6GDYM6Vnx/mVsjx2L/mFIA==,
- }
- engines: { node: '>=12.0.0' }
+ resolution: {integrity: sha512-UjOaSel/iddGZJ5xP/Eixh6dY1XghiBw4XK13rCCIJcJfyhhoul/7KhLLUGtebEj6GDYM6Vnx/mVsjx2L/mFIA==}
+ engines: {node: '>=12.0.0'}
inquirerer@4.7.0:
- resolution:
- {
- integrity: sha512-Gp6Bd7NGeA1y/vV+q0Dl7KqakMHvHiTXyRIMYXCH4L6tQ3AWJBWd6BRmxikOp9t1C8eoJIGrHs7iJt34hx573Q==,
- }
+ resolution: {integrity: sha512-Gp6Bd7NGeA1y/vV+q0Dl7KqakMHvHiTXyRIMYXCH4L6tQ3AWJBWd6BRmxikOp9t1C8eoJIGrHs7iJt34hx573Q==}
interpret@3.1.1:
- resolution:
- {
- integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==,
- }
- engines: { node: '>=10.13.0' }
+ resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==}
+ engines: {node: '>=10.13.0'}
ip-address@10.1.0:
- resolution:
- {
- integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==,
- }
- engines: { node: '>= 12' }
+ resolution: {integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==}
+ engines: {node: '>= 12'}
ipaddr.js@1.9.1:
- resolution:
- {
- integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==,
- }
- engines: { node: '>= 0.10' }
+ resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
+ engines: {node: '>= 0.10'}
ipv6-normalize@1.0.1:
- resolution:
- {
- integrity: sha512-Bm6H79i01DjgGTCWjUuCjJ6QDo1HB96PT/xCYuyJUP9WFbVDrLSbG4EZCvOCun2rNswZb0c3e4Jt/ws795esHA==,
- }
+ resolution: {integrity: sha512-Bm6H79i01DjgGTCWjUuCjJ6QDo1HB96PT/xCYuyJUP9WFbVDrLSbG4EZCvOCun2rNswZb0c3e4Jt/ws795esHA==}
is-arrayish@0.2.1:
- resolution:
- {
- integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==,
- }
+ resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
is-binary-path@2.1.0:
- resolution:
- {
- integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
+ engines: {node: '>=8'}
is-ci@3.0.1:
- resolution:
- {
- integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==,
- }
+ resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==}
hasBin: true
is-core-module@2.16.1:
- resolution:
- {
- integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==}
+ engines: {node: '>= 0.4'}
is-docker@2.2.1:
- resolution:
- {
- integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
+ engines: {node: '>=8'}
hasBin: true
is-extglob@2.1.1:
- resolution:
- {
- integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==,
- }
- engines: { node: '>=0.10.0' }
+ 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' }
+ resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
+ engines: {node: '>=8'}
is-generator-fn@2.1.0:
- resolution:
- {
- integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==}
+ engines: {node: '>=6'}
is-glob@4.0.3:
- resolution:
- {
- integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+ engines: {node: '>=0.10.0'}
is-interactive@1.0.0:
- resolution:
- {
- integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==}
+ engines: {node: '>=8'}
is-lambda@1.0.1:
- resolution:
- {
- integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==,
- }
+ resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==}
is-number@7.0.0:
- resolution:
- {
- integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==,
- }
- engines: { node: '>=0.12.0' }
+ resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
+ engines: {node: '>=0.12.0'}
is-obj@2.0.0:
- resolution:
- {
- integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==}
+ engines: {node: '>=8'}
is-plain-obj@1.1.0:
- resolution:
- {
- integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==}
+ engines: {node: '>=0.10.0'}
is-plain-object@2.0.4:
- resolution:
- {
- integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==}
+ engines: {node: '>=0.10.0'}
is-primitive@3.0.1:
- resolution:
- {
- integrity: sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w==}
+ engines: {node: '>=0.10.0'}
is-promise@4.0.0:
- resolution:
- {
- integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==,
- }
+ resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==}
is-ssh@1.4.1:
- resolution:
- {
- integrity: sha512-JNeu1wQsHjyHgn9NcWTaXq6zWSR6hqE0++zhfZlkFBbScNkyvxCdeV8sRkSBaeLKxmbpR21brail63ACNxJ0Tg==,
- }
+ resolution: {integrity: sha512-JNeu1wQsHjyHgn9NcWTaXq6zWSR6hqE0++zhfZlkFBbScNkyvxCdeV8sRkSBaeLKxmbpR21brail63ACNxJ0Tg==}
is-stream@2.0.0:
- resolution:
- {
- integrity: sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==}
+ engines: {node: '>=8'}
is-stream@2.0.1:
- resolution:
- {
- integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
+ engines: {node: '>=8'}
is-text-path@1.0.1:
- resolution:
- {
- integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==}
+ engines: {node: '>=0.10.0'}
is-unicode-supported@0.1.0:
- resolution:
- {
- integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==}
+ engines: {node: '>=10'}
is-wsl@2.2.0:
- resolution:
- {
- integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}
+ engines: {node: '>=8'}
isarray@0.0.1:
- resolution:
- {
- integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==,
- }
+ resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==}
isarray@1.0.0:
- resolution:
- {
- integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==,
- }
+ resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
isexe@2.0.0:
- resolution:
- {
- integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==,
- }
+ resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
isexe@3.1.1:
- resolution:
- {
- integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==,
- }
- engines: { node: '>=16' }
+ resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==}
+ engines: {node: '>=16'}
isobject@3.0.1:
- resolution:
- {
- integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==}
+ engines: {node: '>=0.10.0'}
istanbul-lib-coverage@3.2.2:
- resolution:
- {
- integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==}
+ engines: {node: '>=8'}
istanbul-lib-instrument@6.0.3:
- resolution:
- {
- integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==}
+ engines: {node: '>=10'}
istanbul-lib-report@3.0.1:
- resolution:
- {
- integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==}
+ engines: {node: '>=10'}
istanbul-lib-source-maps@5.0.6:
- resolution:
- {
- integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==}
+ engines: {node: '>=10'}
istanbul-reports@3.2.0:
- resolution:
- {
- integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==}
+ engines: {node: '>=8'}
iterall@1.3.0:
- resolution:
- {
- integrity: sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==,
- }
+ resolution: {integrity: sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==}
jackspeak@3.4.3:
- resolution:
- {
- integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==,
- }
+ resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
jackspeak@4.2.3:
- resolution:
- {
- integrity: sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==,
- }
- engines: { node: 20 || >=22 }
+ resolution: {integrity: sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==}
+ engines: {node: 20 || >=22}
jake@10.9.4:
- resolution:
- {
- integrity: sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==}
+ engines: {node: '>=10'}
hasBin: true
jest-changed-files@30.3.0:
- resolution:
- {
- integrity: sha512-B/7Cny6cV5At6M25EWDgf9S617lHivamL8vl6KEpJqkStauzcG4e+WPfDgMMF+H4FVH4A2PLRyvgDJan4441QA==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-B/7Cny6cV5At6M25EWDgf9S617lHivamL8vl6KEpJqkStauzcG4e+WPfDgMMF+H4FVH4A2PLRyvgDJan4441QA==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
jest-circus@30.3.0:
- resolution:
- {
- integrity: sha512-PyXq5szeSfR/4f1lYqCmmQjh0vqDkURUYi9N6whnHjlRz4IUQfMcXkGLeEoiJtxtyPqgUaUUfyQlApXWBSN1RA==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-PyXq5szeSfR/4f1lYqCmmQjh0vqDkURUYi9N6whnHjlRz4IUQfMcXkGLeEoiJtxtyPqgUaUUfyQlApXWBSN1RA==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
jest-cli@30.3.0:
- resolution:
- {
- integrity: sha512-l6Tqx+j1fDXJEW5bqYykDQQ7mQg+9mhWXtnj+tQZrTWYHyHoi6Be8HPumDSA+UiX2/2buEgjA58iJzdj146uCw==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-l6Tqx+j1fDXJEW5bqYykDQQ7mQg+9mhWXtnj+tQZrTWYHyHoi6Be8HPumDSA+UiX2/2buEgjA58iJzdj146uCw==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
hasBin: true
peerDependencies:
node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
@@ -10614,11 +7621,8 @@ packages:
optional: true
jest-config@30.3.0:
- resolution:
- {
- integrity: sha512-WPMAkMAtNDY9P/oKObtsRG/6KTrhtgPJoBTmk20uDn4Uy6/3EJnnaZJre/FMT1KVRx8cve1r7/FlMIOfRVWL4w==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-WPMAkMAtNDY9P/oKObtsRG/6KTrhtgPJoBTmk20uDn4Uy6/3EJnnaZJre/FMT1KVRx8cve1r7/FlMIOfRVWL4w==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
peerDependencies:
'@types/node': '*'
esbuild-register: '>=3.4.0'
@@ -10632,123 +7636,72 @@ packages:
optional: true
jest-diff@29.7.0:
- resolution:
- {
- integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==,
- }
- engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 }
+ resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
jest-diff@30.2.0:
- resolution:
- {
- integrity: sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
jest-diff@30.3.0:
- resolution:
- {
- integrity: sha512-n3q4PDQjS4LrKxfWB3Z5KNk1XjXtZTBwQp71OP0Jo03Z6V60x++K5L8k6ZrW8MY8pOFylZvHM0zsjS1RqlHJZQ==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-n3q4PDQjS4LrKxfWB3Z5KNk1XjXtZTBwQp71OP0Jo03Z6V60x++K5L8k6ZrW8MY8pOFylZvHM0zsjS1RqlHJZQ==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
jest-docblock@30.2.0:
- resolution:
- {
- integrity: sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
jest-each@30.3.0:
- resolution:
- {
- integrity: sha512-V8eMndg/aZ+3LnCJgSm13IxS5XSBM22QSZc9BtPK8Dek6pm+hfUNfwBdvsB3d342bo1q7wnSkC38zjX259qZNA==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-V8eMndg/aZ+3LnCJgSm13IxS5XSBM22QSZc9BtPK8Dek6pm+hfUNfwBdvsB3d342bo1q7wnSkC38zjX259qZNA==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
jest-environment-node@30.3.0:
- resolution:
- {
- integrity: sha512-4i6HItw/JSiJVsC5q0hnKIe/hbYfZLVG9YJ/0pU9Hz2n/9qZe3Rhn5s5CUZA5ORZlcdT/vmAXRMyONXJwPrmYQ==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-4i6HItw/JSiJVsC5q0hnKIe/hbYfZLVG9YJ/0pU9Hz2n/9qZe3Rhn5s5CUZA5ORZlcdT/vmAXRMyONXJwPrmYQ==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
jest-get-type@29.6.3:
- resolution:
- {
- integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==,
- }
- engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 }
+ resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
jest-haste-map@30.3.0:
- resolution:
- {
- integrity: sha512-mMi2oqG4KRU0R9QEtscl87JzMXfUhbKaFqOxmjb2CKcbHcUGFrJCBWHmnTiUqi6JcnzoBlO4rWfpdl2k/RfLCA==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-mMi2oqG4KRU0R9QEtscl87JzMXfUhbKaFqOxmjb2CKcbHcUGFrJCBWHmnTiUqi6JcnzoBlO4rWfpdl2k/RfLCA==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
jest-in-case@1.0.2:
- resolution:
- {
- integrity: sha512-2DE6Gdwnh5jkCYTePWoQinF+zne3lCADibXoYJEt8PS84JaRug0CyAOrEgzMxbzln3YcSY2PBeru7ct4tbflYA==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-2DE6Gdwnh5jkCYTePWoQinF+zne3lCADibXoYJEt8PS84JaRug0CyAOrEgzMxbzln3YcSY2PBeru7ct4tbflYA==}
+ engines: {node: '>=4'}
jest-leak-detector@30.3.0:
- resolution:
- {
- integrity: sha512-cuKmUUGIjfXZAiGJ7TbEMx0bcqNdPPI6P1V+7aF+m/FUJqFDxkFR4JqkTu8ZOiU5AaX/x0hZ20KaaIPXQzbMGQ==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-cuKmUUGIjfXZAiGJ7TbEMx0bcqNdPPI6P1V+7aF+m/FUJqFDxkFR4JqkTu8ZOiU5AaX/x0hZ20KaaIPXQzbMGQ==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
jest-matcher-utils@30.2.0:
- resolution:
- {
- integrity: sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
jest-matcher-utils@30.3.0:
- resolution:
- {
- integrity: sha512-HEtc9uFQgaUHkC7nLSlQL3Tph4Pjxt/yiPvkIrrDCt9jhoLIgxaubo1G+CFOnmHYMxHwwdaSN7mkIFs6ZK8OhA==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-HEtc9uFQgaUHkC7nLSlQL3Tph4Pjxt/yiPvkIrrDCt9jhoLIgxaubo1G+CFOnmHYMxHwwdaSN7mkIFs6ZK8OhA==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
jest-message-util@30.2.0:
- resolution:
- {
- integrity: sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
jest-message-util@30.3.0:
- resolution:
- {
- integrity: sha512-Z/j4Bo+4ySJ+JPJN3b2Qbl9hDq3VrXmnjjGEWD/x0BCXeOXPTV1iZYYzl2X8c1MaCOL+ewMyNBcm88sboE6YWw==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-Z/j4Bo+4ySJ+JPJN3b2Qbl9hDq3VrXmnjjGEWD/x0BCXeOXPTV1iZYYzl2X8c1MaCOL+ewMyNBcm88sboE6YWw==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
jest-mock@30.2.0:
- resolution:
- {
- integrity: sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
jest-mock@30.3.0:
- resolution:
- {
- integrity: sha512-OTzICK8CpE+t4ndhKrwlIdbM6Pn8j00lvmSmq5ejiO+KxukbLjgOflKWMn3KE34EZdQm5RqTuKj+5RIEniYhog==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-OTzICK8CpE+t4ndhKrwlIdbM6Pn8j00lvmSmq5ejiO+KxukbLjgOflKWMn3KE34EZdQm5RqTuKj+5RIEniYhog==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
jest-pnp-resolver@1.2.3:
- resolution:
- {
- integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==}
+ engines: {node: '>=6'}
peerDependencies:
jest-resolve: '*'
peerDependenciesMeta:
@@ -10756,88 +7709,52 @@ packages:
optional: true
jest-regex-util@30.0.1:
- resolution:
- {
- integrity: sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
jest-resolve-dependencies@30.3.0:
- resolution:
- {
- integrity: sha512-9ev8s3YN6Hsyz9LV75XUwkCVFlwPbaFn6Wp75qnI0wzAINYWY8Fb3+6y59Rwd3QaS3kKXffHXsZMziMavfz/nw==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-9ev8s3YN6Hsyz9LV75XUwkCVFlwPbaFn6Wp75qnI0wzAINYWY8Fb3+6y59Rwd3QaS3kKXffHXsZMziMavfz/nw==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
jest-resolve@30.3.0:
- resolution:
- {
- integrity: sha512-NRtTAHQlpd15F9rUR36jqwelbrDV/dY4vzNte3S2kxCKUJRYNd5/6nTSbYiak1VX5g8IoFF23Uj5TURkUW8O5g==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-NRtTAHQlpd15F9rUR36jqwelbrDV/dY4vzNte3S2kxCKUJRYNd5/6nTSbYiak1VX5g8IoFF23Uj5TURkUW8O5g==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
jest-runner@30.3.0:
- resolution:
- {
- integrity: sha512-gDv6C9LGKWDPLia9TSzZwf4h3kMQCqyTpq+95PODnTRDO0g9os48XIYYkS6D236vjpBir2fF63YmJFtqkS5Duw==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-gDv6C9LGKWDPLia9TSzZwf4h3kMQCqyTpq+95PODnTRDO0g9os48XIYYkS6D236vjpBir2fF63YmJFtqkS5Duw==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
jest-runtime@30.3.0:
- resolution:
- {
- integrity: sha512-CgC+hIBJbuh78HEffkhNKcbXAytQViplcl8xupqeIWyKQF50kCQA8J7GeJCkjisC6hpnC9Muf8jV5RdtdFbGng==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-CgC+hIBJbuh78HEffkhNKcbXAytQViplcl8xupqeIWyKQF50kCQA8J7GeJCkjisC6hpnC9Muf8jV5RdtdFbGng==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
jest-snapshot@30.3.0:
- resolution:
- {
- integrity: sha512-f14c7atpb4O2DeNhwcvS810Y63wEn8O1HqK/luJ4F6M4NjvxmAKQwBUWjbExUtMxWJQ0wVgmCKymeJK6NZMnfQ==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-f14c7atpb4O2DeNhwcvS810Y63wEn8O1HqK/luJ4F6M4NjvxmAKQwBUWjbExUtMxWJQ0wVgmCKymeJK6NZMnfQ==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
jest-util@30.2.0:
- resolution:
- {
- integrity: sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
jest-util@30.3.0:
- resolution:
- {
- integrity: sha512-/jZDa00a3Sz7rdyu55NLrQCIrbyIkbBxareejQI315f/i8HjYN+ZWsDLLpoQSiUIEIyZF/R8fDg3BmB8AtHttg==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-/jZDa00a3Sz7rdyu55NLrQCIrbyIkbBxareejQI315f/i8HjYN+ZWsDLLpoQSiUIEIyZF/R8fDg3BmB8AtHttg==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
jest-validate@30.3.0:
- resolution:
- {
- integrity: sha512-I/xzC8h5G+SHCb2P2gWkJYrNiTbeL47KvKeW5EzplkyxzBRBw1ssSHlI/jXec0ukH2q7x2zAWQm7015iusg62Q==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-I/xzC8h5G+SHCb2P2gWkJYrNiTbeL47KvKeW5EzplkyxzBRBw1ssSHlI/jXec0ukH2q7x2zAWQm7015iusg62Q==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
jest-watcher@30.3.0:
- resolution:
- {
- integrity: sha512-PJ1d9ThtTR8aMiBWUdcownq9mDdLXsQzJayTk4kmaBRHKvwNQn+ANveuhEBUyNI2hR1TVhvQ8D5kHubbzBHR/w==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-PJ1d9ThtTR8aMiBWUdcownq9mDdLXsQzJayTk4kmaBRHKvwNQn+ANveuhEBUyNI2hR1TVhvQ8D5kHubbzBHR/w==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
jest-worker@30.3.0:
- resolution:
- {
- integrity: sha512-DrCKkaQwHexjRUFTmPzs7sHQe0TSj9nvDALKGdwmK5mW9v7j90BudWirKAJHt3QQ9Dhrg1F7DogPzhChppkJpQ==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-DrCKkaQwHexjRUFTmPzs7sHQe0TSj9nvDALKGdwmK5mW9v7j90BudWirKAJHt3QQ9Dhrg1F7DogPzhChppkJpQ==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
jest@30.3.0:
- resolution:
- {
- integrity: sha512-AkXIIFcaazymvey2i/+F94XRnM6TsVLZDhBMLsd1Sf/W0wzsvvpjeyUrCZD6HGG4SDYPgDJDBKeiJTBb10WzMg==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-AkXIIFcaazymvey2i/+F94XRnM6TsVLZDhBMLsd1Sf/W0wzsvvpjeyUrCZD6HGG4SDYPgDJDBKeiJTBb10WzMg==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
hasBin: true
peerDependencies:
node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
@@ -10846,601 +7763,328 @@ packages:
optional: true
jiti@2.6.1:
- resolution:
- {
- integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==,
- }
+ resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==}
hasBin: true
js-beautify@1.15.4:
- resolution:
- {
- integrity: sha512-9/KXeZUKKJwqCXUdBxFJ3vPh467OCckSBmYDwSK/EtV090K+iMJ7zx2S3HLVDIWFQdqMIsZWbnaGiba18aWhaA==,
- }
- engines: { node: '>=14' }
+ resolution: {integrity: sha512-9/KXeZUKKJwqCXUdBxFJ3vPh467OCckSBmYDwSK/EtV090K+iMJ7zx2S3HLVDIWFQdqMIsZWbnaGiba18aWhaA==}
+ engines: {node: '>=14'}
hasBin: true
js-cookie@3.0.5:
- resolution:
- {
- integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==,
- }
- engines: { node: '>=14' }
+ resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==}
+ engines: {node: '>=14'}
js-sha3@0.8.0:
- resolution:
- {
- integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==,
- }
+ resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==}
js-tokens@4.0.0:
- resolution:
- {
- integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==,
- }
+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
js-yaml@3.14.2:
- resolution:
- {
- integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==,
- }
+ resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==}
hasBin: true
js-yaml@4.1.0:
- resolution:
- {
- integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==,
- }
+ resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
hasBin: true
js-yaml@4.1.1:
- resolution:
- {
- integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==,
- }
+ resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==}
hasBin: true
jsesc@3.1.0:
- resolution:
- {
- integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
+ engines: {node: '>=6'}
hasBin: true
json-buffer@3.0.1:
- resolution:
- {
- integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==,
- }
+ resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
json-parse-better-errors@1.0.2:
- resolution:
- {
- integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==,
- }
+ resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==}
json-parse-even-better-errors@2.3.1:
- resolution:
- {
- integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==,
- }
+ resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
json-parse-even-better-errors@3.0.2:
- resolution:
- {
- integrity: sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==,
- }
- engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+ resolution: {integrity: sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
json-schema-traverse@0.4.1:
- resolution:
- {
- integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==,
- }
+ resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
json-schema-traverse@1.0.0:
- resolution:
- {
- integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==,
- }
+ resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
json-stable-stringify-without-jsonify@1.0.1:
- resolution:
- {
- integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==,
- }
+ resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
json-stringify-nice@1.1.4:
- resolution:
- {
- integrity: sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==,
- }
+ resolution: {integrity: sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==}
json-stringify-safe@5.0.1:
- resolution:
- {
- integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==,
- }
+ resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==}
json5@2.2.3:
- resolution:
- {
- integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
+ engines: {node: '>=6'}
hasBin: true
jsonc-parser@3.2.0:
- resolution:
- {
- integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==,
- }
+ resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==}
jsonc-parser@3.3.1:
- resolution:
- {
- integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==,
- }
+ resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==}
jsonfile@6.2.0:
- resolution:
- {
- integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==,
- }
+ resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==}
jsonparse@1.3.1:
- resolution:
- {
- integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==,
- }
- engines: { '0': node >= 0.2.0 }
+ resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==}
+ engines: {'0': node >= 0.2.0}
jsonwebtoken@9.0.3:
- resolution:
- {
- integrity: sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==,
- }
- engines: { node: '>=12', npm: '>=6' }
+ resolution: {integrity: sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==}
+ engines: {node: '>=12', npm: '>=6'}
juice@7.0.0:
- resolution:
- {
- integrity: sha512-AjKQX31KKN+uJs+zaf+GW8mBO/f/0NqSh2moTMyvwBY+4/lXIYTU8D8I2h6BAV3Xnz6GGsbalUyFqbYMe+Vh+Q==,
- }
- engines: { node: '>=10.0.0' }
+ resolution: {integrity: sha512-AjKQX31KKN+uJs+zaf+GW8mBO/f/0NqSh2moTMyvwBY+4/lXIYTU8D8I2h6BAV3Xnz6GGsbalUyFqbYMe+Vh+Q==}
+ engines: {node: '>=10.0.0'}
hasBin: true
just-diff-apply@5.5.0:
- resolution:
- {
- integrity: sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw==,
- }
+ resolution: {integrity: sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw==}
just-diff@6.0.2:
- resolution:
- {
- integrity: sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA==,
- }
+ resolution: {integrity: sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA==}
jwa@2.0.1:
- resolution:
- {
- integrity: sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==,
- }
+ resolution: {integrity: sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==}
jws@4.0.1:
- resolution:
- {
- integrity: sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==,
- }
+ resolution: {integrity: sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==}
keyv@4.5.4:
- resolution:
- {
- integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==,
- }
+ resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
kind-of@6.0.3:
- resolution:
- {
- integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
+ engines: {node: '>=0.10.0'}
komoji@0.9.0:
- resolution:
- {
- integrity: sha512-mbAwXYrQgSE9r618CzW7BHvQfKmDyvPoJFPzaWimEVfcaTyE9aqCvf5RbOwzP16ranN/4rmAuAme1GMrWRZ/sQ==,
- }
+ resolution: {integrity: sha512-mbAwXYrQgSE9r618CzW7BHvQfKmDyvPoJFPzaWimEVfcaTyE9aqCvf5RbOwzP16ranN/4rmAuAme1GMrWRZ/sQ==}
lerna@8.2.4:
- resolution:
- {
- integrity: sha512-0gaVWDIVT7fLfprfwpYcQajb7dBJv3EGavjG7zvJ+TmGx3/wovl5GklnSwM2/WeE0Z2wrIz7ndWhBcDUHVjOcQ==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-0gaVWDIVT7fLfprfwpYcQajb7dBJv3EGavjG7zvJ+TmGx3/wovl5GklnSwM2/WeE0Z2wrIz7ndWhBcDUHVjOcQ==}
+ engines: {node: '>=18.0.0'}
hasBin: true
leven@3.1.0:
- resolution:
- {
- integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==}
+ engines: {node: '>=6'}
levn@0.4.1:
- resolution:
- {
- integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==,
- }
- engines: { node: '>= 0.8.0' }
+ resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
+ engines: {node: '>= 0.8.0'}
libnpmaccess@8.0.6:
- resolution:
- {
- integrity: sha512-uM8DHDEfYG6G5gVivVl+yQd4pH3uRclHC59lzIbSvy7b5FEwR+mU49Zq1jEyRtRFv7+M99mUW9S0wL/4laT4lw==,
- }
- engines: { node: ^16.14.0 || >=18.0.0 }
+ resolution: {integrity: sha512-uM8DHDEfYG6G5gVivVl+yQd4pH3uRclHC59lzIbSvy7b5FEwR+mU49Zq1jEyRtRFv7+M99mUW9S0wL/4laT4lw==}
+ engines: {node: ^16.14.0 || >=18.0.0}
libnpmpublish@9.0.9:
- resolution:
- {
- integrity: sha512-26zzwoBNAvX9AWOPiqqF6FG4HrSCPsHFkQm7nT+xU1ggAujL/eae81RnCv4CJ2In9q9fh10B88sYSzKCUh/Ghg==,
- }
- engines: { node: ^16.14.0 || >=18.0.0 }
+ resolution: {integrity: sha512-26zzwoBNAvX9AWOPiqqF6FG4HrSCPsHFkQm7nT+xU1ggAujL/eae81RnCv4CJ2In9q9fh10B88sYSzKCUh/Ghg==}
+ engines: {node: ^16.14.0 || >=18.0.0}
libpg-query@17.7.3:
- resolution:
- {
- integrity: sha512-lHKBvoWRsXt/9bJxpAeFxkLu0CA6tELusqy3o1z6/DwGXSETxhKJDaNlNdrNV8msvXDLBhpg/4RE/fKKs5rYFA==,
- }
+ resolution: {integrity: sha512-lHKBvoWRsXt/9bJxpAeFxkLu0CA6tELusqy3o1z6/DwGXSETxhKJDaNlNdrNV8msvXDLBhpg/4RE/fKKs5rYFA==}
lines-and-columns@1.2.4:
- resolution:
- {
- integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==,
- }
+ resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
lines-and-columns@2.0.3:
- resolution:
- {
- integrity: sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==,
- }
- engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 }
+ resolution: {integrity: sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
linkify-it@5.0.0:
- resolution:
- {
- integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==,
- }
+ resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==}
load-json-file@4.0.0:
- resolution:
- {
- integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==}
+ engines: {node: '>=4'}
load-json-file@6.2.0:
- resolution:
- {
- integrity: sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==}
+ engines: {node: '>=8'}
locate-path@2.0.0:
- resolution:
- {
- integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==}
+ engines: {node: '>=4'}
locate-path@5.0.0:
- resolution:
- {
- integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
+ engines: {node: '>=8'}
locate-path@6.0.0:
- resolution:
- {
- integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
+ engines: {node: '>=10'}
lodash.includes@4.3.0:
- resolution:
- {
- integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==,
- }
+ resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==}
lodash.isboolean@3.0.3:
- resolution:
- {
- integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==,
- }
+ resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==}
lodash.isinteger@4.0.4:
- resolution:
- {
- integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==,
- }
+ resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==}
lodash.ismatch@4.4.0:
- resolution:
- {
- integrity: sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==,
- }
+ resolution: {integrity: sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==}
lodash.isnumber@3.0.3:
- resolution:
- {
- integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==,
- }
+ resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==}
lodash.isplainobject@4.0.6:
- resolution:
- {
- integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==,
- }
+ resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==}
lodash.isstring@4.0.1:
- resolution:
- {
- integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==,
- }
+ resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==}
lodash.memoize@4.1.2:
- resolution:
- {
- integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==,
- }
+ resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==}
lodash.merge@4.6.2:
- resolution:
- {
- integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==,
- }
+ resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
lodash.once@4.1.1:
- resolution:
- {
- integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==,
- }
+ resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==}
lodash@4.17.21:
- resolution:
- {
- integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==,
- }
+ resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
lodash@4.17.23:
- resolution:
- {
- integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==,
- }
+ resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==}
log-symbols@4.1.0:
- resolution:
- {
- integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==}
+ engines: {node: '>=10'}
long-timeout@0.1.1:
- resolution:
- {
- integrity: sha512-BFRuQUqc7x2NWxfJBCyUrN8iYUYznzL9JROmRz1gZ6KlOIgmoD+njPVbb+VNn2nGMKggMsK79iUNErillsrx7w==,
- }
+ resolution: {integrity: sha512-BFRuQUqc7x2NWxfJBCyUrN8iYUYznzL9JROmRz1gZ6KlOIgmoD+njPVbb+VNn2nGMKggMsK79iUNErillsrx7w==}
long@5.3.2:
- resolution:
- {
- integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==,
- }
+ resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==}
loose-envify@1.4.0:
- resolution:
- {
- integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==,
- }
+ resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
hasBin: true
lower-case@1.1.4:
- resolution:
- {
- integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==,
- }
+ resolution: {integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==}
lru-cache@10.4.3:
- resolution:
- {
- integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==,
- }
+ resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
lru-cache@11.2.7:
- resolution:
- {
- integrity: sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==,
- }
- engines: { node: 20 || >=22 }
+ resolution: {integrity: sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==}
+ engines: {node: 20 || >=22}
lru-cache@5.1.1:
- resolution:
- {
- integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==,
- }
+ resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
lru-cache@6.0.0:
- resolution:
- {
- integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
+ engines: {node: '>=10'}
luxon@3.7.2:
- resolution:
- {
- integrity: sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==,
- }
- engines: { node: '>=12' }
+ resolution: {integrity: sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==}
+ engines: {node: '>=12'}
lz-string@1.5.0:
- resolution:
- {
- integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==,
- }
+ resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==}
hasBin: true
mailgun.js@10.4.0:
- resolution:
- {
- integrity: sha512-YrdaZEAJwwjXGBTfZTNQ1LM7tmkdUaz2NpZEu7+zULcG4Wrlhd7cWSNZW0bxT3bP48k5N0mZWz8C2f9gc2+Geg==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-YrdaZEAJwwjXGBTfZTNQ1LM7tmkdUaz2NpZEu7+zULcG4Wrlhd7cWSNZW0bxT3bP48k5N0mZWz8C2f9gc2+Geg==}
+ engines: {node: '>=18.0.0'}
makage@0.1.12:
- resolution:
- {
- integrity: sha512-R3bITl50Ts2GzoaErywe8n24Iu2qbvbNOqOyidjDjh6iqK0CAj2VzIk3xRS4z8Q4xDQzaJrcb2+dGDjqRj6ChA==,
- }
+ resolution: {integrity: sha512-R3bITl50Ts2GzoaErywe8n24Iu2qbvbNOqOyidjDjh6iqK0CAj2VzIk3xRS4z8Q4xDQzaJrcb2+dGDjqRj6ChA==}
hasBin: true
makage@0.3.0:
- resolution:
- {
- integrity: sha512-HiBTpSy6iLnI+apv91QTWgBlFiePOCAUXmdYwlVzqkfwtUc0aM1FNu70CLs8xvc2u/R43m3J1SuWprMcKpV+vw==,
- }
+ resolution: {integrity: sha512-HiBTpSy6iLnI+apv91QTWgBlFiePOCAUXmdYwlVzqkfwtUc0aM1FNu70CLs8xvc2u/R43m3J1SuWprMcKpV+vw==}
hasBin: true
make-dir@2.1.0:
- resolution:
- {
- integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==}
+ engines: {node: '>=6'}
make-dir@4.0.0:
- resolution:
- {
- integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==}
+ engines: {node: '>=10'}
make-error@1.3.6:
- resolution:
- {
- integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==,
- }
+ resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
make-fetch-happen@13.0.1:
- resolution:
- {
- integrity: sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==,
- }
- engines: { node: ^16.14.0 || >=18.0.0 }
+ resolution: {integrity: sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==}
+ engines: {node: ^16.14.0 || >=18.0.0}
makeerror@1.0.12:
- resolution:
- {
- integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==,
- }
+ resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==}
map-obj@1.0.1:
- resolution:
- {
- integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==,
- }
- engines: { node: '>=0.10.0' }
+ 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' }
+ resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==}
+ engines: {node: '>=8'}
markdown-it@14.1.1:
- resolution:
- {
- integrity: sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA==,
- }
+ resolution: {integrity: sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA==}
hasBin: true
match-sorter@6.3.4:
- resolution:
- {
- integrity: sha512-jfZW7cWS5y/1xswZo8VBOdudUiSd9nifYRWphc9M5D/ee4w4AoXLgBEdRbgVaxbMuagBPeUC5y2Hi8DO6o9aDg==,
- }
+ resolution: {integrity: sha512-jfZW7cWS5y/1xswZo8VBOdudUiSd9nifYRWphc9M5D/ee4w4AoXLgBEdRbgVaxbMuagBPeUC5y2Hi8DO6o9aDg==}
math-intrinsics@1.1.0:
- resolution:
- {
- integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
+ engines: {node: '>= 0.4'}
mdurl@2.0.0:
- resolution:
- {
- integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==,
- }
+ resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==}
media-typer@0.3.0:
- resolution:
- {
- integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==,
- }
- engines: { node: '>= 0.6' }
+ resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
+ engines: {node: '>= 0.6'}
media-typer@1.1.0:
- resolution:
- {
- integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==,
- }
- engines: { node: '>= 0.8' }
+ resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==}
+ engines: {node: '>= 0.8'}
mensch@0.3.4:
- resolution:
- {
- integrity: sha512-IAeFvcOnV9V0Yk+bFhYR07O3yNina9ANIN5MoXBKYJ/RLYPurd2d0yw14MDhpr9/momp0WofT1bPUh3hkzdi/g==,
- }
+ resolution: {integrity: sha512-IAeFvcOnV9V0Yk+bFhYR07O3yNina9ANIN5MoXBKYJ/RLYPurd2d0yw14MDhpr9/momp0WofT1bPUh3hkzdi/g==}
meow@8.1.2:
- resolution:
- {
- integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==}
+ engines: {node: '>=10'}
merge-descriptors@2.0.0:
- resolution:
- {
- integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==}
+ engines: {node: '>=18'}
merge-stream@2.0.0:
- resolution:
- {
- integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==,
- }
+ resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
merge2@1.4.1:
- resolution:
- {
- integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==,
- }
- engines: { node: '>= 8' }
+ resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
+ engines: {node: '>= 8'}
meros@1.3.2:
- resolution:
- {
- integrity: sha512-Q3mobPbvEx7XbwhnC1J1r60+5H6EZyNccdzSz0eGexJRwouUtTZxPVRGdqKtxlpD84ScK4+tIGldkqDtCKdI0A==,
- }
- engines: { node: '>=13' }
+ resolution: {integrity: sha512-Q3mobPbvEx7XbwhnC1J1r60+5H6EZyNccdzSz0eGexJRwouUtTZxPVRGdqKtxlpD84ScK4+tIGldkqDtCKdI0A==}
+ engines: {node: '>=13'}
peerDependencies:
'@types/node': '>=13'
peerDependenciesMeta:
@@ -11448,584 +8092,320 @@ packages:
optional: true
methods@1.1.2:
- resolution:
- {
- integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==,
- }
- engines: { node: '>= 0.6' }
+ resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==}
+ engines: {node: '>= 0.6'}
micromatch@4.0.8:
- resolution:
- {
- integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==,
- }
- engines: { node: '>=8.6' }
+ resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
+ engines: {node: '>=8.6'}
microseconds@0.2.0:
- resolution:
- {
- integrity: sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA==,
- }
+ resolution: {integrity: sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA==}
mime-db@1.52.0:
- resolution:
- {
- integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==,
- }
- engines: { node: '>= 0.6' }
+ resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
+ engines: {node: '>= 0.6'}
mime-db@1.54.0:
- resolution:
- {
- integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==,
- }
- engines: { node: '>= 0.6' }
+ resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==}
+ engines: {node: '>= 0.6'}
mime-types@2.1.35:
- resolution:
- {
- integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==,
- }
- engines: { node: '>= 0.6' }
+ resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
+ engines: {node: '>= 0.6'}
mime-types@3.0.2:
- resolution:
- {
- integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==}
+ engines: {node: '>=18'}
mime@2.6.0:
- resolution:
- {
- integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==,
- }
- engines: { node: '>=4.0.0' }
+ resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==}
+ engines: {node: '>=4.0.0'}
hasBin: true
mimic-fn@2.1.0:
- resolution:
- {
- integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
+ engines: {node: '>=6'}
min-indent@1.0.1:
- resolution:
- {
- integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
+ engines: {node: '>=4'}
minimatch@10.2.4:
- resolution:
- {
- integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==,
- }
- engines: { node: 18 || 20 || >=22 }
+ resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==}
+ engines: {node: 18 || 20 || >=22}
minimatch@3.0.5:
- resolution:
- {
- integrity: sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==,
- }
+ resolution: {integrity: sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==}
minimatch@3.1.2:
- resolution:
- {
- integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==,
- }
+ resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
minimatch@3.1.5:
- resolution:
- {
- integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==,
- }
+ resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==}
minimatch@5.1.9:
- resolution:
- {
- integrity: sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==}
+ engines: {node: '>=10'}
minimatch@8.0.7:
- resolution:
- {
- integrity: sha512-V+1uQNdzybxa14e/p00HZnQNNcTjnRJjDxg2V8wtkjFctq4M7hXFws4oekyTP0Jebeq7QYtpFyOeBAjc88zvYg==,
- }
- engines: { node: '>=16 || 14 >=14.17' }
+ resolution: {integrity: sha512-V+1uQNdzybxa14e/p00HZnQNNcTjnRJjDxg2V8wtkjFctq4M7hXFws4oekyTP0Jebeq7QYtpFyOeBAjc88zvYg==}
+ engines: {node: '>=16 || 14 >=14.17'}
minimatch@9.0.1:
- resolution:
- {
- integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==,
- }
- engines: { node: '>=16 || 14 >=14.17' }
+ resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==}
+ engines: {node: '>=16 || 14 >=14.17'}
minimatch@9.0.3:
- resolution:
- {
- integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==,
- }
- engines: { node: '>=16 || 14 >=14.17' }
+ resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==}
+ engines: {node: '>=16 || 14 >=14.17'}
minimatch@9.0.9:
- resolution:
- {
- integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==,
- }
- engines: { node: '>=16 || 14 >=14.17' }
+ resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==}
+ engines: {node: '>=16 || 14 >=14.17'}
minimist-options@4.1.0:
- resolution:
- {
- integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==,
- }
- engines: { node: '>= 6' }
+ resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==}
+ engines: {node: '>= 6'}
minimist@1.2.8:
- resolution:
- {
- integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==,
- }
+ resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
minipass-collect@2.0.1:
- resolution:
- {
- integrity: sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==,
- }
- engines: { node: '>=16 || 14 >=14.17' }
+ resolution: {integrity: sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==}
+ engines: {node: '>=16 || 14 >=14.17'}
minipass-fetch@3.0.5:
- resolution:
- {
- integrity: sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==,
- }
- engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+ resolution: {integrity: sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
minipass-flush@1.0.5:
- resolution:
- {
- integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==,
- }
- engines: { node: '>= 8' }
+ resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==}
+ engines: {node: '>= 8'}
minipass-pipeline@1.2.4:
- resolution:
- {
- integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==}
+ engines: {node: '>=8'}
minipass-sized@1.0.3:
- resolution:
- {
- integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==}
+ engines: {node: '>=8'}
minipass@3.3.6:
- resolution:
- {
- integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==}
+ engines: {node: '>=8'}
minipass@4.2.8:
- resolution:
- {
- integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==}
+ engines: {node: '>=8'}
minipass@5.0.0:
- resolution:
- {
- integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==}
+ engines: {node: '>=8'}
minipass@7.1.2:
- resolution:
- {
- integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==,
- }
- engines: { node: '>=16 || 14 >=14.17' }
+ resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
+ engines: {node: '>=16 || 14 >=14.17'}
minipass@7.1.3:
- resolution:
- {
- integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==,
- }
- engines: { node: '>=16 || 14 >=14.17' }
+ resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==}
+ engines: {node: '>=16 || 14 >=14.17'}
minizlib@2.1.2:
- resolution:
- {
- integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==,
- }
- engines: { node: '>= 8' }
+ resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==}
+ engines: {node: '>= 8'}
mjml-accordion@4.7.1:
- resolution:
- {
- integrity: sha512-oYwC/CLOUWJ6pRt2saDHj/HytGOHO5B5lKNqUAhKPye5HFNZykKEV5ChmZ2NfGsGU+9BhQ7H5DaCafp4fDmPAg==,
- }
+ resolution: {integrity: sha512-oYwC/CLOUWJ6pRt2saDHj/HytGOHO5B5lKNqUAhKPye5HFNZykKEV5ChmZ2NfGsGU+9BhQ7H5DaCafp4fDmPAg==}
mjml-body@4.7.1:
- resolution:
- {
- integrity: sha512-JCrkit+kjCfQyKuVyWSOonM2LGs/o3+63R9l2SleFeXf3+0CaKWaZr/Exzvaeo28c+1o3yRqXbJIpD22SEtJfQ==,
- }
+ resolution: {integrity: sha512-JCrkit+kjCfQyKuVyWSOonM2LGs/o3+63R9l2SleFeXf3+0CaKWaZr/Exzvaeo28c+1o3yRqXbJIpD22SEtJfQ==}
mjml-button@4.7.1:
- resolution:
- {
- integrity: sha512-N3WkTMPOvKw2y6sakt1YfYDbOB8apumm1OApPG6J18CHcrX03BwhHPrdfu1JwlRNGwx4kCDdb6zNCGPwuZxkCg==,
- }
+ resolution: {integrity: sha512-N3WkTMPOvKw2y6sakt1YfYDbOB8apumm1OApPG6J18CHcrX03BwhHPrdfu1JwlRNGwx4kCDdb6zNCGPwuZxkCg==}
mjml-carousel@4.7.1:
- resolution:
- {
- integrity: sha512-eH3rRyX23ES0BKOn+UUV39+yGNmZVApBVVV0A5znDaNWskCg6/g6ZhEHi4nkWpj+aP2lJKI0HX1nrMfJg0Mxhg==,
- }
+ resolution: {integrity: sha512-eH3rRyX23ES0BKOn+UUV39+yGNmZVApBVVV0A5znDaNWskCg6/g6ZhEHi4nkWpj+aP2lJKI0HX1nrMfJg0Mxhg==}
mjml-cli@4.7.1:
- resolution:
- {
- integrity: sha512-xzCtJVKYVhGorvTmnbcMUfZlmJdBnu1UBD9A1H8UUBGMNE/Hs9QpHs9PLCMp8JR/uhSu15IgVjhFN0oSVndMRQ==,
- }
+ resolution: {integrity: sha512-xzCtJVKYVhGorvTmnbcMUfZlmJdBnu1UBD9A1H8UUBGMNE/Hs9QpHs9PLCMp8JR/uhSu15IgVjhFN0oSVndMRQ==}
hasBin: true
mjml-column@4.7.1:
- resolution:
- {
- integrity: sha512-CGw81TnGiuPR1GblLOez8xeoeAz1SEFjMpqapazjgXUuF5xUxg3qH55Wt4frpXe3VypeZWVYeumr6CwoNaPbKg==,
- }
+ resolution: {integrity: sha512-CGw81TnGiuPR1GblLOez8xeoeAz1SEFjMpqapazjgXUuF5xUxg3qH55Wt4frpXe3VypeZWVYeumr6CwoNaPbKg==}
mjml-core@4.7.1:
- resolution:
- {
- integrity: sha512-AMACoq/h440m7SM86As8knW0bNQgjNIzsP/cMF6X9RO07GfszgbaWUq/XCaRNi+q8bWvBJSCXbngDJySVc5ALw==,
- }
+ resolution: {integrity: sha512-AMACoq/h440m7SM86As8knW0bNQgjNIzsP/cMF6X9RO07GfszgbaWUq/XCaRNi+q8bWvBJSCXbngDJySVc5ALw==}
mjml-divider@4.7.1:
- resolution:
- {
- integrity: sha512-7+uCUJdqEr6w8AzpF8lhRheelYEgOwiK0KJGlAQN3LF+h2S1rTPEzEB67qL2x5cU+80kPlxtxoQWImDBy0vXqg==,
- }
+ resolution: {integrity: sha512-7+uCUJdqEr6w8AzpF8lhRheelYEgOwiK0KJGlAQN3LF+h2S1rTPEzEB67qL2x5cU+80kPlxtxoQWImDBy0vXqg==}
mjml-group@4.7.1:
- resolution:
- {
- integrity: sha512-mAYdhocCzetdhPSws/9/sQ4hcz4kQPX2dNitQmbxNVwoMFYXjp/WcLEfGc5u13Ue7dPfcV6c9lB/Uu5o3NmRvw==,
- }
+ resolution: {integrity: sha512-mAYdhocCzetdhPSws/9/sQ4hcz4kQPX2dNitQmbxNVwoMFYXjp/WcLEfGc5u13Ue7dPfcV6c9lB/Uu5o3NmRvw==}
mjml-head-attributes@4.7.1:
- resolution:
- {
- integrity: sha512-nB/bQ3I98Dvy/IkI4nqxTCnLonULkIKc8KrieRTrtPkUV3wskBzngpCgnjKvFPbHWiGlwjHDzcFJc7G0uWeqog==,
- }
+ resolution: {integrity: sha512-nB/bQ3I98Dvy/IkI4nqxTCnLonULkIKc8KrieRTrtPkUV3wskBzngpCgnjKvFPbHWiGlwjHDzcFJc7G0uWeqog==}
mjml-head-breakpoint@4.7.1:
- resolution:
- {
- integrity: sha512-0KB5SweIWDvwHkn4VCUsEhCQgfY/0wkNUnSXNoftaRujv0NQFQfOOH4eINy0NZYfDfrE4WYe08z+olHprp+T2A==,
- }
+ resolution: {integrity: sha512-0KB5SweIWDvwHkn4VCUsEhCQgfY/0wkNUnSXNoftaRujv0NQFQfOOH4eINy0NZYfDfrE4WYe08z+olHprp+T2A==}
mjml-head-font@4.7.1:
- resolution:
- {
- integrity: sha512-9YGzBcQ2htZ6j266fiLLfzcxqDEDLTvfKtypTjaeRb1w3N8S5wL+/zJA5ZjRL6r39Ij5ZPQSlSDC32KPiwhGkA==,
- }
+ resolution: {integrity: sha512-9YGzBcQ2htZ6j266fiLLfzcxqDEDLTvfKtypTjaeRb1w3N8S5wL+/zJA5ZjRL6r39Ij5ZPQSlSDC32KPiwhGkA==}
mjml-head-html-attributes@4.7.1:
- resolution:
- {
- integrity: sha512-2TK2nGpq4rGaghbVx2UNm5TXeZ5BTGYEvtSPoYPNu02KRCj6tb+uedAgFXwJpX+ogRfIfPK50ih+9ZMoHwf2IQ==,
- }
+ resolution: {integrity: sha512-2TK2nGpq4rGaghbVx2UNm5TXeZ5BTGYEvtSPoYPNu02KRCj6tb+uedAgFXwJpX+ogRfIfPK50ih+9ZMoHwf2IQ==}
mjml-head-preview@4.7.1:
- resolution:
- {
- integrity: sha512-UHlvvgldiPDODq/5zKMsmXgRb/ZyKygKDUVQSM5bm3HvpKXeyYxJZazcIGmlGICEqv1ced1WGINhCg72dSfN+Q==,
- }
+ resolution: {integrity: sha512-UHlvvgldiPDODq/5zKMsmXgRb/ZyKygKDUVQSM5bm3HvpKXeyYxJZazcIGmlGICEqv1ced1WGINhCg72dSfN+Q==}
mjml-head-style@4.7.1:
- resolution:
- {
- integrity: sha512-8Gij99puN1SoOx5tGBjgkh4iCpI+zbwGBiB2Y8VwJrwXQxdJ1Qa902dQP5djoFFG39Bthii/48cS/d1bHigGPQ==,
- }
+ resolution: {integrity: sha512-8Gij99puN1SoOx5tGBjgkh4iCpI+zbwGBiB2Y8VwJrwXQxdJ1Qa902dQP5djoFFG39Bthii/48cS/d1bHigGPQ==}
mjml-head-title@4.7.1:
- resolution:
- {
- integrity: sha512-vK3r+DApTXw2EoK/fh8dQOsO438Z7Ksy6iBIb7h04x33d4Z41r6+jtgxGXoKFXnjgr8MyLX5HZyyie5obW+hZg==,
- }
+ resolution: {integrity: sha512-vK3r+DApTXw2EoK/fh8dQOsO438Z7Ksy6iBIb7h04x33d4Z41r6+jtgxGXoKFXnjgr8MyLX5HZyyie5obW+hZg==}
mjml-head@4.7.1:
- resolution:
- {
- integrity: sha512-jUcJ674CT1oT8NTQWTjQQBFZu4yklK0oppfGFJ1cq76ze3isMiyhSnGnOHw6FkjLnZtb3gXXaGKX7UZM+UMk/w==,
- }
+ resolution: {integrity: sha512-jUcJ674CT1oT8NTQWTjQQBFZu4yklK0oppfGFJ1cq76ze3isMiyhSnGnOHw6FkjLnZtb3gXXaGKX7UZM+UMk/w==}
mjml-hero@4.7.1:
- resolution:
- {
- integrity: sha512-x+29V8zJAs8EV/eTtGbR921pCpitMQOAkyvNANW/3JLDTL2Oio1OYvGPVC3z1wOT9LKuRTxVzNHVt/bBw02CSQ==,
- }
+ resolution: {integrity: sha512-x+29V8zJAs8EV/eTtGbR921pCpitMQOAkyvNANW/3JLDTL2Oio1OYvGPVC3z1wOT9LKuRTxVzNHVt/bBw02CSQ==}
mjml-image@4.7.1:
- resolution:
- {
- integrity: sha512-l3uRR2jaM0Bpz4ctdWuxQUFgg+ol6Nt+ODOrnHsGMwpmFOh4hTPTky6KaF0LCXxYmGbI0FoGBna+hVNnkBsQCA==,
- }
+ resolution: {integrity: sha512-l3uRR2jaM0Bpz4ctdWuxQUFgg+ol6Nt+ODOrnHsGMwpmFOh4hTPTky6KaF0LCXxYmGbI0FoGBna+hVNnkBsQCA==}
mjml-migrate@4.7.1:
- resolution:
- {
- integrity: sha512-RgrJ9fHg6iRHC2H4pjRDWilBQ1eTH2jRu1ayDplbnepGoql83vLZaYaWc5Q+J+NsaNI16x+bgNB3fQdBiK+mng==,
- }
+ resolution: {integrity: sha512-RgrJ9fHg6iRHC2H4pjRDWilBQ1eTH2jRu1ayDplbnepGoql83vLZaYaWc5Q+J+NsaNI16x+bgNB3fQdBiK+mng==}
hasBin: true
mjml-navbar@4.7.1:
- resolution:
- {
- integrity: sha512-awdu8zT7xhS+9aCVunqtocUs8KA2xb+UhJ8UGbxVBpYbTNj3rCL9aWUXqWVwMk1la+3ypCkFuDuTl6dIoWPWlA==,
- }
+ resolution: {integrity: sha512-awdu8zT7xhS+9aCVunqtocUs8KA2xb+UhJ8UGbxVBpYbTNj3rCL9aWUXqWVwMk1la+3ypCkFuDuTl6dIoWPWlA==}
mjml-parser-xml@4.7.1:
- resolution:
- {
- integrity: sha512-UWfuRpN45k3GUEv2yl8n5Uf98Tg6FyCsyRnqZGo83mgZzlJRDYTdKII9RjZM646/S8+Q8e9qxi3AsL00j6sZsQ==,
- }
+ resolution: {integrity: sha512-UWfuRpN45k3GUEv2yl8n5Uf98Tg6FyCsyRnqZGo83mgZzlJRDYTdKII9RjZM646/S8+Q8e9qxi3AsL00j6sZsQ==}
mjml-raw@4.7.1:
- resolution:
- {
- integrity: sha512-mCQFEXINTkC8i7ydP1Km99e0FaZTeu79AoYnTBAILd4QO+RuD3n/PimBGrcGrOUex0JIKa2jyVQOcSCBuG4WpA==,
- }
+ resolution: {integrity: sha512-mCQFEXINTkC8i7ydP1Km99e0FaZTeu79AoYnTBAILd4QO+RuD3n/PimBGrcGrOUex0JIKa2jyVQOcSCBuG4WpA==}
mjml-react@1.0.59:
- resolution:
- {
- integrity: sha512-W1ULnMlxJHE0kNpInu+u3CHr6+QcvhoLJ2ov93Pzt2A1wXAv4CJ9T/P5h/BhZn8vvCXgGizcwHv8sfANfQONVw==,
- }
+ resolution: {integrity: sha512-W1ULnMlxJHE0kNpInu+u3CHr6+QcvhoLJ2ov93Pzt2A1wXAv4CJ9T/P5h/BhZn8vvCXgGizcwHv8sfANfQONVw==}
peerDependencies:
mjml: ^4.1.2
react: ^16.4.0
react-dom: ^16.4.0
mjml-section@4.7.1:
- resolution:
- {
- integrity: sha512-PlhCMsl/bpFwwgQGUopi9OgOGWgRPpEJVKE8hk4He8GXzbfIuDj4DZ9QJSkwIoZ0fZtcgz11Wwb19i9BZcozVw==,
- }
+ resolution: {integrity: sha512-PlhCMsl/bpFwwgQGUopi9OgOGWgRPpEJVKE8hk4He8GXzbfIuDj4DZ9QJSkwIoZ0fZtcgz11Wwb19i9BZcozVw==}
mjml-social@4.7.1:
- resolution:
- {
- integrity: sha512-tN/6V3m59izO9rqWpUokHxhwkk2GHkltzIlhI936hAJHh8hFyEO6+ZwQBZm738G00qgfICmQvX5FNq4upkCYjw==,
- }
+ resolution: {integrity: sha512-tN/6V3m59izO9rqWpUokHxhwkk2GHkltzIlhI936hAJHh8hFyEO6+ZwQBZm738G00qgfICmQvX5FNq4upkCYjw==}
mjml-spacer@4.7.1:
- resolution:
- {
- integrity: sha512-gQu1+nA9YGnoolfNPvzfVe/RJ8WqS8ho0hthlhiLOC2RnEnmqH7HHSzCFXm4OeN0VgvDQsM7mfYQGl82O58Y+g==,
- }
+ resolution: {integrity: sha512-gQu1+nA9YGnoolfNPvzfVe/RJ8WqS8ho0hthlhiLOC2RnEnmqH7HHSzCFXm4OeN0VgvDQsM7mfYQGl82O58Y+g==}
mjml-table@4.7.1:
- resolution:
- {
- integrity: sha512-rPkOtufMiVreb7I7vXk6rDm9i1DXncODnM5JJNhA9Z1dAQwXiz6V5904gAi2cEYfe0M2m0XQ8P5ZCtvqxGkfGA==,
- }
+ resolution: {integrity: sha512-rPkOtufMiVreb7I7vXk6rDm9i1DXncODnM5JJNhA9Z1dAQwXiz6V5904gAi2cEYfe0M2m0XQ8P5ZCtvqxGkfGA==}
mjml-text@4.7.1:
- resolution:
- {
- integrity: sha512-hrjxbY59v6hu/Pn0NO+6TMlrdAlRa3M7GVALx/YWYV3hi59zjYfot8Au7Xq64XdcbcI4eiBVbP/AVr8w03HsOw==,
- }
+ resolution: {integrity: sha512-hrjxbY59v6hu/Pn0NO+6TMlrdAlRa3M7GVALx/YWYV3hi59zjYfot8Au7Xq64XdcbcI4eiBVbP/AVr8w03HsOw==}
mjml-validator@4.7.1:
- resolution:
- {
- integrity: sha512-Qxubbz5WE182iLSTd/XRuezMr6UE7/u73grDCw0bTIcQsaTAIkWQn2tBI3jj0chWOw+sxwK2C6zPm9B0Cv7BGA==,
- }
+ resolution: {integrity: sha512-Qxubbz5WE182iLSTd/XRuezMr6UE7/u73grDCw0bTIcQsaTAIkWQn2tBI3jj0chWOw+sxwK2C6zPm9B0Cv7BGA==}
mjml-wrapper@4.7.1:
- resolution:
- {
- integrity: sha512-6i+ZATUyqIO5YBnx+RFKZ3+6mg3iOCS/EdXGYZSonZ/EHqlt+RJa3fG2BB4dacXqAjghfl6Lk+bLoR47P3xYIQ==,
- }
+ resolution: {integrity: sha512-6i+ZATUyqIO5YBnx+RFKZ3+6mg3iOCS/EdXGYZSonZ/EHqlt+RJa3fG2BB4dacXqAjghfl6Lk+bLoR47P3xYIQ==}
mjml@4.7.1:
- resolution:
- {
- integrity: sha512-nwMrmhTI+Aeh9Gav9LHX/i8k8yDi/QpX5h535BlT5oP4NaAUmyxP/UeYUn9yxtPcIzDlM5ullFnRv/71jyHpkQ==,
- }
+ resolution: {integrity: sha512-nwMrmhTI+Aeh9Gav9LHX/i8k8yDi/QpX5h535BlT5oP4NaAUmyxP/UeYUn9yxtPcIzDlM5ullFnRv/71jyHpkQ==}
hasBin: true
mkdirp@1.0.4:
- resolution:
- {
- integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==}
+ engines: {node: '>=10'}
hasBin: true
mock-req@0.2.0:
- resolution:
- {
- integrity: sha512-IUuwS0W5GjoPyjhuXPQJXpaHfHW7UYFRia8Cchm/xRuyDDclpSQdEoakt3krOpSYvgVlQsbnf0ePDsTRDfp7Dg==,
- }
+ resolution: {integrity: sha512-IUuwS0W5GjoPyjhuXPQJXpaHfHW7UYFRia8Cchm/xRuyDDclpSQdEoakt3krOpSYvgVlQsbnf0ePDsTRDfp7Dg==}
modify-values@1.0.1:
- resolution:
- {
- integrity: sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==}
+ engines: {node: '>=0.10.0'}
monaco-editor@0.52.2:
- resolution:
- {
- integrity: sha512-GEQWEZmfkOGLdd3XK8ryrfWz3AIP8YymVXiPHEdewrUq7mh0qrKrfHLNCXcbB6sTnMLnOZ3ztSiKcciFUkIJwQ==,
- }
+ resolution: {integrity: sha512-GEQWEZmfkOGLdd3XK8ryrfWz3AIP8YymVXiPHEdewrUq7mh0qrKrfHLNCXcbB6sTnMLnOZ3ztSiKcciFUkIJwQ==}
monaco-graphql@1.7.3:
- resolution:
- {
- integrity: sha512-6LAIcg/vT2NGLjHnT+5iIZONsZCaCuz2orbg7qD/u4Ry9R7rDotLh0HAzIF/yKdzEA5fTZC+TofSx2O+Zi+0ow==,
- }
+ resolution: {integrity: sha512-6LAIcg/vT2NGLjHnT+5iIZONsZCaCuz2orbg7qD/u4Ry9R7rDotLh0HAzIF/yKdzEA5fTZC+TofSx2O+Zi+0ow==}
peerDependencies:
graphql: 16.13.0
monaco-editor: '>= 0.20.0 < 0.53'
prettier: ^2.8.0 || ^3.0.0
motion-dom@12.36.0:
- resolution:
- {
- integrity: sha512-Ep1pq8P88rGJ75om8lTCA13zqd7ywPGwCqwuWwin6BKc0hMLkVfcS6qKlRqEo2+t0DwoUcgGJfXwaiFn4AOcQA==,
- }
+ resolution: {integrity: sha512-Ep1pq8P88rGJ75om8lTCA13zqd7ywPGwCqwuWwin6BKc0hMLkVfcS6qKlRqEo2+t0DwoUcgGJfXwaiFn4AOcQA==}
motion-utils@12.36.0:
- resolution:
- {
- integrity: sha512-eHWisygbiwVvf6PZ1vhaHCLamvkSbPIeAYxWUuL3a2PD/TROgE7FvfHWTIH4vMl798QLfMw15nRqIaRDXTlYRg==,
- }
+ resolution: {integrity: sha512-eHWisygbiwVvf6PZ1vhaHCLamvkSbPIeAYxWUuL3a2PD/TROgE7FvfHWTIH4vMl798QLfMw15nRqIaRDXTlYRg==}
ms@2.1.3:
- resolution:
- {
- integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==,
- }
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
multer@2.1.1:
- resolution:
- {
- integrity: sha512-mo+QTzKlx8R7E5ylSXxWzGoXoZbOsRMpyitcht8By2KHvMbf3tjwosZ/Mu/XYU6UuJ3VZnODIrak5ZrPiPyB6A==,
- }
- engines: { node: '>= 10.16.0' }
+ resolution: {integrity: sha512-mo+QTzKlx8R7E5ylSXxWzGoXoZbOsRMpyitcht8By2KHvMbf3tjwosZ/Mu/XYU6UuJ3VZnODIrak5ZrPiPyB6A==}
+ engines: {node: '>= 10.16.0'}
multimatch@5.0.0:
- resolution:
- {
- integrity: sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==}
+ engines: {node: '>=10'}
mute-stream@0.0.8:
- resolution:
- {
- integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==,
- }
+ resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==}
mute-stream@1.0.0:
- resolution:
- {
- integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==,
- }
- engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+ resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
nano-time@1.0.0:
- resolution:
- {
- integrity: sha512-flnngywOoQ0lLQOTRNexn2gGSNuM9bKj9RZAWSzhQ+UJYaAFG9bac4DW9VHjUAzrOaIcajHybCTHe/bkvozQqA==,
- }
+ resolution: {integrity: sha512-flnngywOoQ0lLQOTRNexn2gGSNuM9bKj9RZAWSzhQ+UJYaAFG9bac4DW9VHjUAzrOaIcajHybCTHe/bkvozQqA==}
nanoid@3.3.11:
- resolution:
- {
- integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==,
- }
- engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 }
+ resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
napi-postinstall@0.3.4:
- resolution:
- {
- integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==,
- }
- engines: { node: ^12.20.0 || ^14.18.0 || >=16.0.0 }
+ resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==}
+ engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
hasBin: true
natural-compare@1.4.0:
- resolution:
- {
- integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==,
- }
+ resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
negotiator@0.6.4:
- resolution:
- {
- integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==,
- }
- engines: { node: '>= 0.6' }
+ resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==}
+ engines: {node: '>= 0.6'}
negotiator@1.0.0:
- resolution:
- {
- integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==,
- }
- engines: { node: '>= 0.6' }
+ resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==}
+ engines: {node: '>= 0.6'}
neo-async@2.6.2:
- resolution:
- {
- integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==,
- }
+ resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==}
nested-obj@0.1.10:
- resolution:
- {
- integrity: sha512-5V2kUPrBee/tmoS2p0IJ35BcaJuW1p1yXF5GP8JpXIkDoPbaYeYypAHizUeZkAUxcC7Rago7izWmEq7qa8+Mhw==,
- }
+ resolution: {integrity: sha512-5V2kUPrBee/tmoS2p0IJ35BcaJuW1p1yXF5GP8JpXIkDoPbaYeYypAHizUeZkAUxcC7Rago7izWmEq7qa8+Mhw==}
nested-obj@0.1.5:
- resolution:
- {
- integrity: sha512-04Y7qDMlI8RbYTn0cJAKaw/mLrO9UmLj3xbrjTZKDfOn9f3b/RXEQFIIpveJlwn8KfPwdVFWLZUaL5gNuQ7G0w==,
- }
+ resolution: {integrity: sha512-04Y7qDMlI8RbYTn0cJAKaw/mLrO9UmLj3xbrjTZKDfOn9f3b/RXEQFIIpveJlwn8KfPwdVFWLZUaL5gNuQ7G0w==}
nested-obj@0.2.1:
- resolution:
- {
- integrity: sha512-MQnXdT8qoxxu5/ONQ8tO70HsuvuUAhLmAvOr1RaAtWqpGda+JycVIhN1Pclq5Zny7sr4Jn4wKgIR8IpdnXU+EQ==,
- }
+ resolution: {integrity: sha512-MQnXdT8qoxxu5/ONQ8tO70HsuvuUAhLmAvOr1RaAtWqpGda+JycVIhN1Pclq5Zny7sr4Jn4wKgIR8IpdnXU+EQ==}
no-case@2.3.2:
- resolution:
- {
- integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==,
- }
+ resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==}
node-fetch@2.6.7:
- resolution:
- {
- integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==,
- }
- engines: { node: 4.x || >=6.0.0 }
+ resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==}
+ engines: {node: 4.x || >=6.0.0}
peerDependencies:
encoding: ^0.1.0
peerDependenciesMeta:
@@ -12033,11 +8413,8 @@ packages:
optional: true
node-fetch@2.7.0:
- resolution:
- {
- integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==,
- }
- engines: { node: 4.x || >=6.0.0 }
+ resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
+ engines: {node: 4.x || >=6.0.0}
peerDependencies:
encoding: ^0.1.0
peerDependenciesMeta:
@@ -12045,180 +8422,102 @@ packages:
optional: true
node-gyp@10.3.1:
- resolution:
- {
- integrity: sha512-Pp3nFHBThHzVtNY7U6JfPjvT/DTE8+o/4xKsLQtBoU+j2HLsGlhcfzflAoUreaJbNmYnX+LlLi0qjV8kpyO6xQ==,
- }
- engines: { node: ^16.14.0 || >=18.0.0 }
+ resolution: {integrity: sha512-Pp3nFHBThHzVtNY7U6JfPjvT/DTE8+o/4xKsLQtBoU+j2HLsGlhcfzflAoUreaJbNmYnX+LlLi0qjV8kpyO6xQ==}
+ engines: {node: ^16.14.0 || >=18.0.0}
hasBin: true
node-int64@0.4.0:
- resolution:
- {
- integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==,
- }
+ resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==}
node-machine-id@1.1.12:
- resolution:
- {
- integrity: sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==,
- }
+ resolution: {integrity: sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==}
node-releases@2.0.27:
- resolution:
- {
- integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==,
- }
+ resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==}
node-schedule@2.1.1:
- resolution:
- {
- integrity: sha512-OXdegQq03OmXEjt2hZP33W2YPs/E5BcFQks46+G2gAxs4gHOIVD1u7EqlYLYSKsaIpyKCK9Gbk0ta1/gjRSMRQ==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-OXdegQq03OmXEjt2hZP33W2YPs/E5BcFQks46+G2gAxs4gHOIVD1u7EqlYLYSKsaIpyKCK9Gbk0ta1/gjRSMRQ==}
+ engines: {node: '>=6'}
nodemailer@6.10.1:
- resolution:
- {
- integrity: sha512-Z+iLaBGVaSjbIzQ4pX6XV41HrooLsQ10ZWPUehGmuantvzWoDVBnmsdUcOIDM1t+yPor5pDhVlDESgOMEGxhHA==,
- }
- engines: { node: '>=6.0.0' }
+ resolution: {integrity: sha512-Z+iLaBGVaSjbIzQ4pX6XV41HrooLsQ10ZWPUehGmuantvzWoDVBnmsdUcOIDM1t+yPor5pDhVlDESgOMEGxhHA==}
+ engines: {node: '>=6.0.0'}
nodemailer@7.0.13:
- resolution:
- {
- integrity: sha512-PNDFSJdP+KFgdsG3ZzMXCgquO7I6McjY2vlqILjtJd0hy8wEvtugS9xKRF2NWlPNGxvLCXlTNIae4serI7dinw==,
- }
- engines: { node: '>=6.0.0' }
+ resolution: {integrity: sha512-PNDFSJdP+KFgdsG3ZzMXCgquO7I6McjY2vlqILjtJd0hy8wEvtugS9xKRF2NWlPNGxvLCXlTNIae4serI7dinw==}
+ engines: {node: '>=6.0.0'}
nodemon@3.1.14:
- resolution:
- {
- integrity: sha512-jakjZi93UtB3jHMWsXL68FXSAosbLfY0In5gtKq3niLSkrWznrVBzXFNOEMJUfc9+Ke7SHWoAZsiMkNP3vq6Jw==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-jakjZi93UtB3jHMWsXL68FXSAosbLfY0In5gtKq3niLSkrWznrVBzXFNOEMJUfc9+Ke7SHWoAZsiMkNP3vq6Jw==}
+ engines: {node: '>=10'}
hasBin: true
noms@0.0.0:
- resolution:
- {
- integrity: sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow==,
- }
+ resolution: {integrity: sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow==}
nopt@7.2.1:
- resolution:
- {
- integrity: sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==,
- }
- engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+ resolution: {integrity: sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
hasBin: true
normalize-package-data@2.5.0:
- resolution:
- {
- integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==,
- }
+ resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
normalize-package-data@3.0.3:
- resolution:
- {
- integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==}
+ engines: {node: '>=10'}
normalize-package-data@6.0.2:
- resolution:
- {
- integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==,
- }
- engines: { node: ^16.14.0 || >=18.0.0 }
+ resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==}
+ engines: {node: ^16.14.0 || >=18.0.0}
normalize-path@3.0.0:
- resolution:
- {
- integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
+ engines: {node: '>=0.10.0'}
npm-bundled@3.0.1:
- resolution:
- {
- integrity: sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ==,
- }
- engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+ resolution: {integrity: sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
npm-install-checks@6.3.0:
- resolution:
- {
- integrity: sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==,
- }
- engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+ resolution: {integrity: sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
npm-normalize-package-bin@3.0.1:
- resolution:
- {
- integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==,
- }
- engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+ resolution: {integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
npm-package-arg@11.0.2:
- resolution:
- {
- integrity: sha512-IGN0IAwmhDJwy13Wc8k+4PEbTPhpJnMtfR53ZbOyjkvmEcLS4nCwp6mvMWjS5sUjeiW3mpx6cHmuhKEu9XmcQw==,
- }
- engines: { node: ^16.14.0 || >=18.0.0 }
+ resolution: {integrity: sha512-IGN0IAwmhDJwy13Wc8k+4PEbTPhpJnMtfR53ZbOyjkvmEcLS4nCwp6mvMWjS5sUjeiW3mpx6cHmuhKEu9XmcQw==}
+ engines: {node: ^16.14.0 || >=18.0.0}
npm-packlist@8.0.2:
- resolution:
- {
- integrity: sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA==,
- }
- engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+ resolution: {integrity: sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
npm-pick-manifest@9.1.0:
- resolution:
- {
- integrity: sha512-nkc+3pIIhqHVQr085X9d2JzPzLyjzQS96zbruppqC9aZRm/x8xx6xhI98gHtsfELP2bE+loHq8ZaHFHhe+NauA==,
- }
- engines: { node: ^16.14.0 || >=18.0.0 }
+ resolution: {integrity: sha512-nkc+3pIIhqHVQr085X9d2JzPzLyjzQS96zbruppqC9aZRm/x8xx6xhI98gHtsfELP2bE+loHq8ZaHFHhe+NauA==}
+ engines: {node: ^16.14.0 || >=18.0.0}
npm-registry-fetch@17.1.0:
- resolution:
- {
- integrity: sha512-5+bKQRH0J1xG1uZ1zMNvxW0VEyoNWgJpY9UDuluPFLKDfJ9u2JmmjmTJV1srBGQOROfdBMiVvnH2Zvpbm+xkVA==,
- }
- engines: { node: ^16.14.0 || >=18.0.0 }
+ resolution: {integrity: sha512-5+bKQRH0J1xG1uZ1zMNvxW0VEyoNWgJpY9UDuluPFLKDfJ9u2JmmjmTJV1srBGQOROfdBMiVvnH2Zvpbm+xkVA==}
+ engines: {node: ^16.14.0 || >=18.0.0}
npm-run-path@4.0.1:
- resolution:
- {
- integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
+ engines: {node: '>=8'}
nth-check@1.0.2:
- resolution:
- {
- integrity: sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==,
- }
+ resolution: {integrity: sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==}
nth-check@2.1.1:
- resolution:
- {
- integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==,
- }
+ resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
nullthrows@1.1.1:
- resolution:
- {
- integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==,
- }
+ resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==}
nx@20.8.3:
- resolution:
- {
- integrity: sha512-8w815WSMWar3A/LFzwtmEY+E8cVW62lMiFuPDXje+C8O8hFndfvscP56QHNMn2Zdhz3q0+BZUe+se4Em1BKYdA==,
- }
+ resolution: {integrity: sha512-8w815WSMWar3A/LFzwtmEY+E8cVW62lMiFuPDXje+C8O8hFndfvscP56QHNMn2Zdhz3q0+BZUe+se4Em1BKYdA==}
hasBin: true
peerDependencies:
'@swc-node/register': ^1.8.0
@@ -12230,437 +8529,245 @@ packages:
optional: true
object-assign@4.1.1:
- resolution:
- {
- integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
+ engines: {node: '>=0.10.0'}
object-inspect@1.13.4:
- resolution:
- {
- integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
+ engines: {node: '>= 0.4'}
object-path@0.11.8:
- resolution:
- {
- integrity: sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA==,
- }
- engines: { node: '>= 10.12.0' }
+ resolution: {integrity: sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA==}
+ engines: {node: '>= 10.12.0'}
oblivious-set@1.0.0:
- resolution:
- {
- integrity: sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw==,
- }
+ resolution: {integrity: sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw==}
on-finished@2.4.1:
- resolution:
- {
- integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==,
- }
- engines: { node: '>= 0.8' }
+ resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
+ engines: {node: '>= 0.8'}
once@1.4.0:
- resolution:
- {
- integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==,
- }
+ resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
onetime@5.1.2:
- resolution:
- {
- integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
+ engines: {node: '>=6'}
open@8.4.2:
- resolution:
- {
- integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==,
- }
- engines: { node: '>=12' }
+ resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==}
+ engines: {node: '>=12'}
optionator@0.9.4:
- resolution:
- {
- integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==,
- }
- engines: { node: '>= 0.8.0' }
+ resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
+ engines: {node: '>= 0.8.0'}
ora@5.3.0:
- resolution:
- {
- integrity: sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==}
+ engines: {node: '>=10'}
ora@5.4.1:
- resolution:
- {
- integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==}
+ engines: {node: '>=10'}
oxfmt@0.42.0:
- resolution:
- {
- integrity: sha512-QhejGErLSMReNuZ6vxgFHDyGoPbjTRNi6uGHjy0cvIjOQFqD6xmr/T+3L41ixR3NIgzcNiJ6ylQKpvShTgDfqg==,
- }
- engines: { node: ^20.19.0 || >=22.12.0 }
+ resolution: {integrity: sha512-QhejGErLSMReNuZ6vxgFHDyGoPbjTRNi6uGHjy0cvIjOQFqD6xmr/T+3L41ixR3NIgzcNiJ6ylQKpvShTgDfqg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
p-finally@1.0.0:
- resolution:
- {
- integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==}
+ engines: {node: '>=4'}
p-limit@1.3.0:
- resolution:
- {
- integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==}
+ engines: {node: '>=4'}
p-limit@2.3.0:
- resolution:
- {
- integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
+ engines: {node: '>=6'}
p-limit@3.1.0:
- resolution:
- {
- integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
+ engines: {node: '>=10'}
p-locate@2.0.0:
- resolution:
- {
- integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==}
+ engines: {node: '>=4'}
p-locate@4.1.0:
- resolution:
- {
- integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==,
- }
- engines: { node: '>=8' }
+ 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' }
+ resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
+ engines: {node: '>=10'}
p-map-series@2.1.0:
- resolution:
- {
- integrity: sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q==}
+ engines: {node: '>=8'}
p-map@4.0.0:
- resolution:
- {
- integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==}
+ engines: {node: '>=10'}
p-pipe@3.1.0:
- resolution:
- {
- integrity: sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==}
+ engines: {node: '>=8'}
p-queue@6.6.2:
- resolution:
- {
- integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==}
+ engines: {node: '>=8'}
p-reduce@2.1.0:
- resolution:
- {
- integrity: sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==}
+ engines: {node: '>=8'}
p-timeout@3.2.0:
- resolution:
- {
- integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==}
+ engines: {node: '>=8'}
p-try@1.0.0:
- resolution:
- {
- integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==}
+ engines: {node: '>=4'}
p-try@2.2.0:
- resolution:
- {
- integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
+ engines: {node: '>=6'}
p-waterfall@2.1.1:
- resolution:
- {
- integrity: sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw==}
+ engines: {node: '>=8'}
package-json-from-dist@1.0.1:
- resolution:
- {
- integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==,
- }
+ resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
pacote@18.0.6:
- resolution:
- {
- integrity: sha512-+eK3G27SMwsB8kLIuj4h1FUhHtwiEUo21Tw8wNjmvdlpOEr613edv+8FUsTj/4F/VN5ywGE19X18N7CC2EJk6A==,
- }
- engines: { node: ^16.14.0 || >=18.0.0 }
+ resolution: {integrity: sha512-+eK3G27SMwsB8kLIuj4h1FUhHtwiEUo21Tw8wNjmvdlpOEr613edv+8FUsTj/4F/VN5ywGE19X18N7CC2EJk6A==}
+ engines: {node: ^16.14.0 || >=18.0.0}
hasBin: true
param-case@2.1.1:
- resolution:
- {
- integrity: sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==,
- }
+ resolution: {integrity: sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==}
parent-module@1.0.1:
- resolution:
- {
- integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
+ engines: {node: '>=6'}
parse-conflict-json@3.0.1:
- resolution:
- {
- integrity: sha512-01TvEktc68vwbJOtWZluyWeVGWjP+bZwXtPDMQVbBKzbJ/vZBif0L69KH1+cHv1SZ6e0FKLvjyHe8mqsIqYOmw==,
- }
- engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+ resolution: {integrity: sha512-01TvEktc68vwbJOtWZluyWeVGWjP+bZwXtPDMQVbBKzbJ/vZBif0L69KH1+cHv1SZ6e0FKLvjyHe8mqsIqYOmw==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
parse-json@4.0.0:
- resolution:
- {
- integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==}
+ engines: {node: '>=4'}
parse-json@5.2.0:
- resolution:
- {
- integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
+ engines: {node: '>=8'}
parse-package-name@1.0.0:
- resolution:
- {
- integrity: sha512-kBeTUtcj+SkyfaW4+KBe0HtsloBJ/mKTPoxpVdA57GZiPerREsUWJOhVj9anXweFiJkm5y8FG1sxFZkZ0SN6wg==,
- }
+ resolution: {integrity: sha512-kBeTUtcj+SkyfaW4+KBe0HtsloBJ/mKTPoxpVdA57GZiPerREsUWJOhVj9anXweFiJkm5y8FG1sxFZkZ0SN6wg==}
parse-path@7.1.0:
- resolution:
- {
- integrity: sha512-EuCycjZtfPcjWk7KTksnJ5xPMvWGA/6i4zrLYhRG0hGvC3GPU/jGUj3Cy+ZR0v30duV3e23R95T1lE2+lsndSw==,
- }
+ resolution: {integrity: sha512-EuCycjZtfPcjWk7KTksnJ5xPMvWGA/6i4zrLYhRG0hGvC3GPU/jGUj3Cy+ZR0v30duV3e23R95T1lE2+lsndSw==}
parse-url@8.1.0:
- resolution:
- {
- integrity: sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==,
- }
+ resolution: {integrity: sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==}
parse5-htmlparser2-tree-adapter@7.1.0:
- resolution:
- {
- integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==,
- }
+ resolution: {integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==}
parse5-parser-stream@7.1.2:
- resolution:
- {
- integrity: sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==,
- }
+ resolution: {integrity: sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==}
parse5@3.0.3:
- resolution:
- {
- integrity: sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==,
- }
+ resolution: {integrity: sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==}
parse5@7.3.0:
- resolution:
- {
- integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==,
- }
+ resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==}
parseurl@1.3.3:
- resolution:
- {
- integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==,
- }
- engines: { node: '>= 0.8' }
+ resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
+ engines: {node: '>= 0.8'}
path-exists@3.0.0:
- resolution:
- {
- integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==}
+ engines: {node: '>=4'}
path-exists@4.0.0:
- resolution:
- {
- integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
+ engines: {node: '>=8'}
path-expression-matcher@1.2.0:
- resolution:
- {
- integrity: sha512-DwmPWeFn+tq7TiyJ2CxezCAirXjFxvaiD03npak3cRjlP9+OjTmSy1EpIrEbh+l6JgUundniloMLDQ/6VTdhLQ==,
- }
- engines: { node: '>=14.0.0' }
+ resolution: {integrity: sha512-DwmPWeFn+tq7TiyJ2CxezCAirXjFxvaiD03npak3cRjlP9+OjTmSy1EpIrEbh+l6JgUundniloMLDQ/6VTdhLQ==}
+ engines: {node: '>=14.0.0'}
path-is-absolute@1.0.1:
- resolution:
- {
- integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
+ engines: {node: '>=0.10.0'}
path-key@3.1.1:
- resolution:
- {
- integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
+ engines: {node: '>=8'}
path-parse@1.0.7:
- resolution:
- {
- integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==,
- }
+ resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
path-scurry@1.11.1:
- resolution:
- {
- integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==,
- }
- engines: { node: '>=16 || 14 >=14.18' }
+ resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
+ engines: {node: '>=16 || 14 >=14.18'}
path-scurry@2.0.2:
- resolution:
- {
- integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==,
- }
- engines: { node: 18 || 20 || >=22 }
+ resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==}
+ engines: {node: 18 || 20 || >=22}
path-to-regexp@8.3.0:
- resolution:
- {
- integrity: sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==,
- }
+ resolution: {integrity: sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==}
path-type@3.0.0:
- resolution:
- {
- integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==}
+ engines: {node: '>=4'}
pg-cloudflare@1.3.0:
- resolution:
- {
- integrity: sha512-6lswVVSztmHiRtD6I8hw4qP/nDm1EJbKMRhf3HCYaqud7frGysPv7FYJ5noZQdhQtN2xJnimfMtvQq21pdbzyQ==,
- }
+ resolution: {integrity: sha512-6lswVVSztmHiRtD6I8hw4qP/nDm1EJbKMRhf3HCYaqud7frGysPv7FYJ5noZQdhQtN2xJnimfMtvQq21pdbzyQ==}
pg-connection-string@2.12.0:
- resolution:
- {
- integrity: sha512-U7qg+bpswf3Cs5xLzRqbXbQl85ng0mfSV/J0nnA31MCLgvEaAo7CIhmeyrmJpOr7o+zm0rXK+hNnT5l9RHkCkQ==,
- }
+ resolution: {integrity: sha512-U7qg+bpswf3Cs5xLzRqbXbQl85ng0mfSV/J0nnA31MCLgvEaAo7CIhmeyrmJpOr7o+zm0rXK+hNnT5l9RHkCkQ==}
pg-copy-streams@7.0.0:
- resolution:
- {
- integrity: sha512-zBvnY6wtaBRE2ae2xXWOOGMaNVPkXh1vhypAkNSKgMdciJeTyIQAHZaEeRAxUjs/p1El5jgzYmwG5u871Zj3dQ==,
- }
+ resolution: {integrity: sha512-zBvnY6wtaBRE2ae2xXWOOGMaNVPkXh1vhypAkNSKgMdciJeTyIQAHZaEeRAxUjs/p1El5jgzYmwG5u871Zj3dQ==}
pg-int8@1.0.1:
- resolution:
- {
- integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==,
- }
- engines: { node: '>=4.0.0' }
+ resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==}
+ engines: {node: '>=4.0.0'}
pg-introspection@1.0.0:
- resolution:
- {
- integrity: sha512-5Q+wTTbPO0+yVWwC8Qh58b12HOqXgE6Si+Xq17+QBngpJ2u6yZvhRxHlrSGimqAMWLIXkV6/FvCTqwcQ1IBvAw==,
- }
- engines: { node: '>=22' }
+ resolution: {integrity: sha512-5Q+wTTbPO0+yVWwC8Qh58b12HOqXgE6Si+Xq17+QBngpJ2u6yZvhRxHlrSGimqAMWLIXkV6/FvCTqwcQ1IBvAw==}
+ engines: {node: '>=22'}
pg-pool@3.13.0:
- resolution:
- {
- integrity: sha512-gB+R+Xud1gLFuRD/QgOIgGOBE2KCQPaPwkzBBGC9oG69pHTkhQeIuejVIk3/cnDyX39av2AxomQiyPT13WKHQA==,
- }
+ resolution: {integrity: sha512-gB+R+Xud1gLFuRD/QgOIgGOBE2KCQPaPwkzBBGC9oG69pHTkhQeIuejVIk3/cnDyX39av2AxomQiyPT13WKHQA==}
peerDependencies:
pg: '>=8.0'
pg-proto-parser@1.30.5:
- resolution:
- {
- integrity: sha512-DWXRF5u3hcAwJfrlfKjqOfSex2E6d4Lh9Y3NxFsaieQD1ZoQlsceAn1Xp6C5HRKnHxUB/F5N7R4aVeDBG/sk4Q==,
- }
+ resolution: {integrity: sha512-DWXRF5u3hcAwJfrlfKjqOfSex2E6d4Lh9Y3NxFsaieQD1ZoQlsceAn1Xp6C5HRKnHxUB/F5N7R4aVeDBG/sk4Q==}
pg-protocol@1.13.0:
- resolution:
- {
- integrity: sha512-zzdvXfS6v89r6v7OcFCHfHlyG/wvry1ALxZo4LqgUoy7W9xhBDMaqOuMiF3qEV45VqsN6rdlcehHrfDtlCPc8w==,
- }
+ resolution: {integrity: sha512-zzdvXfS6v89r6v7OcFCHfHlyG/wvry1ALxZo4LqgUoy7W9xhBDMaqOuMiF3qEV45VqsN6rdlcehHrfDtlCPc8w==}
pg-sql2@5.0.0:
- resolution:
- {
- integrity: sha512-gvmfl0XeOeFjd+1aH5uIp1eZxUM6LmaMP8yy1EWE16XaPeUP8dhKdHtdHc0MsX0ZgCy+1g67yS1HCYWns2TdmQ==,
- }
- engines: { node: '>=22' }
+ resolution: {integrity: sha512-gvmfl0XeOeFjd+1aH5uIp1eZxUM6LmaMP8yy1EWE16XaPeUP8dhKdHtdHc0MsX0ZgCy+1g67yS1HCYWns2TdmQ==}
+ engines: {node: '>=22'}
pg-types@2.2.0:
- resolution:
- {
- integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==}
+ engines: {node: '>=4'}
pg@8.20.0:
- resolution:
- {
- integrity: sha512-ldhMxz2r8fl/6QkXnBD3CR9/xg694oT6DZQ2s6c/RI28OjtSOpxnPrUCGOBJ46RCUxcWdx3p6kw/xnDHjKvaRA==,
- }
- engines: { node: '>= 16.0.0' }
+ resolution: {integrity: sha512-ldhMxz2r8fl/6QkXnBD3CR9/xg694oT6DZQ2s6c/RI28OjtSOpxnPrUCGOBJ46RCUxcWdx3p6kw/xnDHjKvaRA==}
+ engines: {node: '>= 16.0.0'}
peerDependencies:
pg-native: '>=3.0.1'
peerDependenciesMeta:
@@ -12668,141 +8775,81 @@ packages:
optional: true
pgpass@1.0.5:
- resolution:
- {
- integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==,
- }
+ resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==}
pgsql-deparser@17.18.2:
- resolution:
- {
- integrity: sha512-mnoT6ti7IFLwSUxe0UkxMjfUtyyWmwClf2sJyLbbRGbZ53SgiT493INFyxmeRvQxc99lmpz6aCxUnjj0ZhGlJA==,
- }
+ resolution: {integrity: sha512-mnoT6ti7IFLwSUxe0UkxMjfUtyyWmwClf2sJyLbbRGbZ53SgiT493INFyxmeRvQxc99lmpz6aCxUnjj0ZhGlJA==}
pgsql-parser@17.9.14:
- resolution:
- {
- integrity: sha512-2qhO2DXkIbqtRdXN4dj8dD/RmSRtNfWxK08dYQ630WwJe1AF6ExuDV0zYGN8BR2NhCHqWmU3qKqJJPBXdib5DQ==,
- }
+ resolution: {integrity: sha512-2qhO2DXkIbqtRdXN4dj8dD/RmSRtNfWxK08dYQ630WwJe1AF6ExuDV0zYGN8BR2NhCHqWmU3qKqJJPBXdib5DQ==}
picocolors@1.1.1:
- resolution:
- {
- integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==,
- }
+ resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
picomatch-browser@2.2.6:
- resolution:
- {
- integrity: sha512-0ypsOQt9D4e3hziV8O4elD9uN0z/jtUEfxVRtNaAAtXIyUx9m/SzlO020i8YNL2aL/E6blOvvHQcin6HZlFy/w==,
- }
- engines: { node: '>=8.6' }
+ resolution: {integrity: sha512-0ypsOQt9D4e3hziV8O4elD9uN0z/jtUEfxVRtNaAAtXIyUx9m/SzlO020i8YNL2aL/E6blOvvHQcin6HZlFy/w==}
+ engines: {node: '>=8.6'}
picomatch@2.3.1:
- resolution:
- {
- integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==,
- }
- engines: { node: '>=8.6' }
+ resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+ engines: {node: '>=8.6'}
picomatch@4.0.3:
- resolution:
- {
- integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==,
- }
- engines: { node: '>=12' }
+ resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
+ engines: {node: '>=12'}
pify@2.3.0:
- resolution:
- {
- integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
+ engines: {node: '>=0.10.0'}
pify@3.0.0:
- resolution:
- {
- integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==}
+ engines: {node: '>=4'}
pify@4.0.1:
- resolution:
- {
- integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
+ engines: {node: '>=6'}
pify@5.0.0:
- resolution:
- {
- integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==}
+ engines: {node: '>=10'}
pirates@4.0.7:
- resolution:
- {
- integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==,
- }
- engines: { node: '>= 6' }
+ resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==}
+ engines: {node: '>= 6'}
pkg-dir@4.2.0:
- resolution:
- {
- integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==}
+ engines: {node: '>=8'}
playwright-core@1.58.2:
- resolution:
- {
- integrity: sha512-yZkEtftgwS8CsfYo7nm0KE8jsvm6i/PTgVtB8DL726wNf6H2IMsDuxCpJj59KDaxCtSnrWan2AeDqM7JBaultg==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-yZkEtftgwS8CsfYo7nm0KE8jsvm6i/PTgVtB8DL726wNf6H2IMsDuxCpJj59KDaxCtSnrWan2AeDqM7JBaultg==}
+ engines: {node: '>=18'}
hasBin: true
playwright@1.58.2:
- resolution:
- {
- integrity: sha512-vA30H8Nvkq/cPBnNw4Q8TWz1EJyqgpuinBcHET0YVJVFldr8JDNiU9LaWAE1KqSkRYazuaBhTpB5ZzShOezQ6A==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-vA30H8Nvkq/cPBnNw4Q8TWz1EJyqgpuinBcHET0YVJVFldr8JDNiU9LaWAE1KqSkRYazuaBhTpB5ZzShOezQ6A==}
+ engines: {node: '>=18'}
hasBin: true
pluralize@7.0.0:
- resolution:
- {
- integrity: sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==}
+ engines: {node: '>=4'}
postcss-selector-parser@6.1.2:
- resolution:
- {
- integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==}
+ engines: {node: '>=4'}
postcss-value-parser@4.2.0:
- resolution:
- {
- integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==,
- }
+ resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
postcss@8.5.6:
- resolution:
- {
- integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==,
- }
- engines: { node: ^10 || ^12 || >=14 }
+ resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
+ engines: {node: ^10 || ^12 || >=14}
postgraphile@5.0.0:
- resolution:
- {
- integrity: sha512-BEv+qrOQBgMtzq3xWhHzwD9+cTdFz8XG/x7e4qWd/4+oqIDrKzOX+OXhFW8vx7jeRnvCMQ3Y8DYe/4tS4DJjqA==,
- }
- engines: { node: '>=22' }
+ resolution: {integrity: sha512-BEv+qrOQBgMtzq3xWhHzwD9+cTdFz8XG/x7e4qWd/4+oqIDrKzOX+OXhFW8vx7jeRnvCMQ3Y8DYe/4tS4DJjqA==}
+ engines: {node: '>=22'}
hasBin: true
peerDependencies:
'@dataplan/json': 1.0.0
@@ -12822,126 +8869,72 @@ packages:
optional: true
postgres-array@2.0.0:
- resolution:
- {
- integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==}
+ engines: {node: '>=4'}
postgres-array@3.0.4:
- resolution:
- {
- integrity: sha512-nAUSGfSDGOaOAEGwqsRY27GPOea7CNipJPOA7lPbdEpx5Kg3qzdP0AaWC5MlhTWV9s4hFX39nomVZ+C4tnGOJQ==,
- }
- engines: { node: '>=12' }
+ resolution: {integrity: sha512-nAUSGfSDGOaOAEGwqsRY27GPOea7CNipJPOA7lPbdEpx5Kg3qzdP0AaWC5MlhTWV9s4hFX39nomVZ+C4tnGOJQ==}
+ engines: {node: '>=12'}
postgres-bytea@1.0.1:
- resolution:
- {
- integrity: sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==}
+ 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' }
+ 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' }
+ resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==}
+ engines: {node: '>=0.10.0'}
postgres-range@1.1.4:
- resolution:
- {
- integrity: sha512-i/hbxIE9803Alj/6ytL7UHQxRvZkI9O4Sy+J3HGc4F4oo/2eQAjTSNJ0bfxyse3bH0nuVesCk+3IRLaMtG3H6w==,
- }
+ resolution: {integrity: sha512-i/hbxIE9803Alj/6ytL7UHQxRvZkI9O4Sy+J3HGc4F4oo/2eQAjTSNJ0bfxyse3bH0nuVesCk+3IRLaMtG3H6w==}
prelude-ls@1.2.1:
- resolution:
- {
- integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==,
- }
- engines: { node: '>= 0.8.0' }
+ resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
+ engines: {node: '>= 0.8.0'}
prettier@3.8.1:
- resolution:
- {
- integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==,
- }
- engines: { node: '>=14' }
+ resolution: {integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==}
+ engines: {node: '>=14'}
hasBin: true
pretty-format@26.6.2:
- resolution:
- {
- integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==,
- }
- engines: { node: '>= 10' }
+ resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==}
+ engines: {node: '>= 10'}
pretty-format@29.7.0:
- resolution:
- {
- integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==,
- }
- engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 }
+ resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
pretty-format@30.2.0:
- resolution:
- {
- integrity: sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
pretty-format@30.3.0:
- resolution:
- {
- integrity: sha512-oG4T3wCbfeuvljnyAzhBvpN45E8iOTXCU/TD3zXW80HA3dQ4ahdqMkWGiPWZvjpQwlbyHrPTWUAqUzGzv4l1JQ==,
- }
- engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ resolution: {integrity: sha512-oG4T3wCbfeuvljnyAzhBvpN45E8iOTXCU/TD3zXW80HA3dQ4ahdqMkWGiPWZvjpQwlbyHrPTWUAqUzGzv4l1JQ==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
proc-log@4.2.0:
- resolution:
- {
- integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==,
- }
- engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+ resolution: {integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
process-nextick-args@2.0.1:
- resolution:
- {
- integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==,
- }
+ resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
proggy@2.0.0:
- resolution:
- {
- integrity: sha512-69agxLtnI8xBs9gUGqEnK26UfiexpHy+KUpBQWabiytQjnn5wFY8rklAi7GRfABIuPNnQ/ik48+LGLkYYJcy4A==,
- }
- engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+ resolution: {integrity: sha512-69agxLtnI8xBs9gUGqEnK26UfiexpHy+KUpBQWabiytQjnn5wFY8rklAi7GRfABIuPNnQ/ik48+LGLkYYJcy4A==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
promise-all-reject-late@1.0.1:
- resolution:
- {
- integrity: sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==,
- }
+ resolution: {integrity: sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==}
promise-call-limit@3.0.2:
- resolution:
- {
- integrity: sha512-mRPQO2T1QQVw11E7+UdCJu7S61eJVWknzml9sC1heAdj1jxl0fWMBypIt9ZOcLFf8FkG995ZD7RnVk7HH72fZw==,
- }
+ resolution: {integrity: sha512-mRPQO2T1QQVw11E7+UdCJu7S61eJVWknzml9sC1heAdj1jxl0fWMBypIt9ZOcLFf8FkG995ZD7RnVk7HH72fZw==}
promise-inflight@1.0.1:
- resolution:
- {
- integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==,
- }
+ resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==}
peerDependencies:
bluebird: '*'
peerDependenciesMeta:
@@ -12949,156 +8942,87 @@ packages:
optional: true
promise-retry@2.0.1:
- resolution:
- {
- integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==}
+ engines: {node: '>=10'}
promzard@1.0.2:
- resolution:
- {
- integrity: sha512-2FPputGL+mP3jJ3UZg/Dl9YOkovB7DX0oOr+ck5QbZ5MtORtds8k/BZdn+02peDLI8/YWbmzx34k5fA+fHvCVQ==,
- }
- engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+ resolution: {integrity: sha512-2FPputGL+mP3jJ3UZg/Dl9YOkovB7DX0oOr+ck5QbZ5MtORtds8k/BZdn+02peDLI8/YWbmzx34k5fA+fHvCVQ==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
proto-list@1.2.4:
- resolution:
- {
- integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==,
- }
+ resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==}
protocols@2.0.2:
- resolution:
- {
- integrity: sha512-hHVTzba3wboROl0/aWRRG9dMytgH6ow//STBZh43l/wQgmMhYhOFi0EHWAPtoCz9IAUymsyP0TSBHkhgMEGNnQ==,
- }
+ resolution: {integrity: sha512-hHVTzba3wboROl0/aWRRG9dMytgH6ow//STBZh43l/wQgmMhYhOFi0EHWAPtoCz9IAUymsyP0TSBHkhgMEGNnQ==}
proxy-addr@2.0.7:
- resolution:
- {
- integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==,
- }
- engines: { node: '>= 0.10' }
+ resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
+ engines: {node: '>= 0.10'}
proxy-from-env@1.1.0:
- resolution:
- {
- integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==,
- }
+ resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
pstree.remy@1.1.8:
- resolution:
- {
- integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==,
- }
+ resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==}
punycode.js@2.3.1:
- resolution:
- {
- integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==}
+ engines: {node: '>=6'}
punycode@2.3.1:
- resolution:
- {
- integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
+ engines: {node: '>=6'}
pure-rand@7.0.1:
- resolution:
- {
- integrity: sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==,
- }
+ resolution: {integrity: sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==}
qs@6.14.0:
- resolution:
- {
- integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==,
- }
- engines: { node: '>=0.6' }
+ resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==}
+ engines: {node: '>=0.6'}
qs@6.14.1:
- resolution:
- {
- integrity: sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==,
- }
- engines: { node: '>=0.6' }
+ resolution: {integrity: sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==}
+ engines: {node: '>=0.6'}
queue-microtask@1.2.3:
- resolution:
- {
- integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==,
- }
+ resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
quick-lru@4.0.1:
- resolution:
- {
- integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==}
+ engines: {node: '>=8'}
range-parser@1.2.1:
- resolution:
- {
- integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==,
- }
- engines: { node: '>= 0.6' }
+ resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
+ engines: {node: '>= 0.6'}
raw-body@3.0.2:
- resolution:
- {
- integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==,
- }
- engines: { node: '>= 0.10' }
+ resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==}
+ engines: {node: '>= 0.10'}
react-compiler-runtime@19.1.0-rc.1:
- resolution:
- {
- integrity: sha512-wCt6g+cRh8g32QT18/9blfQHywGjYu+4FlEc3CW1mx3pPxYzZZl1y+VtqxRgnKKBCFLIGUYxog4j4rs5YS86hw==,
- }
+ resolution: {integrity: sha512-wCt6g+cRh8g32QT18/9blfQHywGjYu+4FlEc3CW1mx3pPxYzZZl1y+VtqxRgnKKBCFLIGUYxog4j4rs5YS86hw==}
peerDependencies:
react: ^17.0.0 || ^18.0.0 || ^19.0.0 || ^0.0.0-experimental
react-dom@19.2.4:
- resolution:
- {
- integrity: sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==,
- }
+ resolution: {integrity: sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==}
peerDependencies:
react: ^19.2.4
react-is@16.13.1:
- resolution:
- {
- integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==,
- }
+ resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
react-is@17.0.2:
- resolution:
- {
- integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==,
- }
+ resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==}
react-is@18.3.1:
- resolution:
- {
- integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==,
- }
+ resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==}
react-is@19.2.4:
- resolution:
- {
- integrity: sha512-W+EWGn2v0ApPKgKKCy/7s7WHXkboGcsrXE+2joLyVxkbyVQfO3MUEaUQDHoSmb8TFFrSKYa9mw64WZHNHSDzYA==,
- }
+ resolution: {integrity: sha512-W+EWGn2v0ApPKgKKCy/7s7WHXkboGcsrXE+2joLyVxkbyVQfO3MUEaUQDHoSmb8TFFrSKYa9mw64WZHNHSDzYA==}
react-query@3.39.3:
- resolution:
- {
- integrity: sha512-nLfLz7GiohKTJDuT4us4X3h/8unOh+00MLb2yJoGTPjxKs2bc1iDhkNx2bd5MKklXnOD3NrVZ+J2UXujA5In4g==,
- }
+ resolution: {integrity: sha512-nLfLz7GiohKTJDuT4us4X3h/8unOh+00MLb2yJoGTPjxKs2bc1iDhkNx2bd5MKklXnOD3NrVZ+J2UXujA5In4g==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0
react-dom: '*'
@@ -13110,18 +9034,12 @@ packages:
optional: true
react-refresh@0.17.0:
- resolution:
- {
- integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==}
+ engines: {node: '>=0.10.0'}
react-remove-scroll-bar@2.3.8:
- resolution:
- {
- integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==}
+ engines: {node: '>=10'}
peerDependencies:
'@types/react': '*'
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
@@ -13130,11 +9048,8 @@ packages:
optional: true
react-remove-scroll@2.7.2:
- resolution:
- {
- integrity: sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==}
+ engines: {node: '>=10'}
peerDependencies:
'@types/react': '*'
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
@@ -13143,11 +9058,8 @@ packages:
optional: true
react-style-singleton@2.2.3:
- resolution:
- {
- integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==}
+ engines: {node: '>=10'}
peerDependencies:
'@types/react': '*'
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
@@ -13156,253 +9068,145 @@ packages:
optional: true
react-test-renderer@19.2.4:
- resolution:
- {
- integrity: sha512-Ttl5D7Rnmi6JGMUpri4UjB4BAN0FPs4yRDnu2XSsigCWOLm11o8GwRlVsh27ER+4WFqsGtrBuuv5zumUaRCmKw==,
- }
+ resolution: {integrity: sha512-Ttl5D7Rnmi6JGMUpri4UjB4BAN0FPs4yRDnu2XSsigCWOLm11o8GwRlVsh27ER+4WFqsGtrBuuv5zumUaRCmKw==}
peerDependencies:
react: ^19.2.4
react@19.2.4:
- resolution:
- {
- integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==}
+ engines: {node: '>=0.10.0'}
read-cmd-shim@4.0.0:
- resolution:
- {
- integrity: sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q==,
- }
- engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+ resolution: {integrity: sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
read-package-json-fast@3.0.2:
- resolution:
- {
- integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==,
- }
- engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+ resolution: {integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
read-pkg-up@3.0.0:
- resolution:
- {
- integrity: sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==}
+ engines: {node: '>=4'}
read-pkg-up@7.0.1:
- resolution:
- {
- integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==}
+ engines: {node: '>=8'}
read-pkg@3.0.0:
- resolution:
- {
- integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==}
+ engines: {node: '>=4'}
read-pkg@5.2.0:
- resolution:
- {
- integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==}
+ engines: {node: '>=8'}
read@3.0.1:
- resolution:
- {
- integrity: sha512-SLBrDU/Srs/9EoWhU5GdbAoxG1GzpQHo/6qiGItaoLJ1thmYpcNIM1qISEUvyHBzfGlWIyd6p2DNi1oV1VmAuw==,
- }
- engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+ resolution: {integrity: sha512-SLBrDU/Srs/9EoWhU5GdbAoxG1GzpQHo/6qiGItaoLJ1thmYpcNIM1qISEUvyHBzfGlWIyd6p2DNi1oV1VmAuw==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
readable-stream@1.0.34:
- resolution:
- {
- integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==,
- }
+ resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==}
readable-stream@2.3.8:
- resolution:
- {
- integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==,
- }
+ resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
readable-stream@3.6.2:
- resolution:
- {
- integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==,
- }
- engines: { node: '>= 6' }
+ resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
+ engines: {node: '>= 6'}
readdirp@3.6.0:
- resolution:
- {
- integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==,
- }
- engines: { node: '>=8.10.0' }
+ resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
+ engines: {node: '>=8.10.0'}
redent@3.0.0:
- resolution:
- {
- integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==}
+ engines: {node: '>=8'}
regenerator-runtime@0.10.5:
- resolution:
- {
- integrity: sha512-02YopEIhAgiBHWeoTiA8aitHDt8z6w+rQqNuIftlM+ZtvSl/brTouaU7DW6GO/cHtvxJvS4Hwv2ibKdxIRi24w==,
- }
+ resolution: {integrity: sha512-02YopEIhAgiBHWeoTiA8aitHDt8z6w+rQqNuIftlM+ZtvSl/brTouaU7DW6GO/cHtvxJvS4Hwv2ibKdxIRi24w==}
relateurl@0.2.7:
- resolution:
- {
- integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==,
- }
- engines: { node: '>= 0.10' }
+ resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==}
+ engines: {node: '>= 0.10'}
remove-accents@0.5.0:
- resolution:
- {
- integrity: sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A==,
- }
+ resolution: {integrity: sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A==}
request-ip@3.3.0:
- resolution:
- {
- integrity: sha512-cA6Xh6e0fDBBBwH77SLJaJPBmD3nWVAcF9/XAcsrIHdjhFzFiB5aNQFytdjCGPezU3ROwrR11IddKAM08vohxA==,
- }
+ resolution: {integrity: sha512-cA6Xh6e0fDBBBwH77SLJaJPBmD3nWVAcF9/XAcsrIHdjhFzFiB5aNQFytdjCGPezU3ROwrR11IddKAM08vohxA==}
require-directory@2.1.1:
- resolution:
- {
- integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
+ engines: {node: '>=0.10.0'}
require-from-string@2.0.2:
- resolution:
- {
- integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
+ engines: {node: '>=0.10.0'}
require-main-filename@2.0.0:
- resolution:
- {
- integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==,
- }
+ resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==}
requires-port@1.0.0:
- resolution:
- {
- integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==,
- }
+ resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==}
resolve-cwd@3.0.0:
- resolution:
- {
- integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==}
+ engines: {node: '>=8'}
resolve-from@4.0.0:
- resolution:
- {
- integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
+ engines: {node: '>=4'}
resolve-from@5.0.0:
- resolution:
- {
- integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
+ engines: {node: '>=8'}
resolve-pkg-maps@1.0.0:
- resolution:
- {
- integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==,
- }
+ resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
resolve.exports@2.0.3:
- resolution:
- {
- integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==}
+ engines: {node: '>=10'}
resolve@1.22.11:
- resolution:
- {
- integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==}
+ engines: {node: '>= 0.4'}
hasBin: true
restore-cursor@3.1.0:
- resolution:
- {
- integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==}
+ engines: {node: '>=8'}
retry@0.12.0:
- resolution:
- {
- integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==,
- }
- engines: { node: '>= 4' }
+ resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==}
+ engines: {node: '>= 4'}
retry@0.13.1:
- resolution:
- {
- integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==,
- }
- engines: { node: '>= 4' }
+ resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==}
+ engines: {node: '>= 4'}
reusify@1.1.0:
- resolution:
- {
- integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==,
- }
- engines: { iojs: '>=1.0.0', node: '>=0.10.0' }
+ resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
+ engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
rimraf@3.0.2:
- resolution:
- {
- integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==,
- }
+ resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
deprecated: Rimraf versions prior to v4 are no longer supported
hasBin: true
rimraf@4.4.1:
- resolution:
- {
- integrity: sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==,
- }
- engines: { node: '>=14' }
+ resolution: {integrity: sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==}
+ engines: {node: '>=14'}
hasBin: true
rimraf@6.1.3:
- resolution:
- {
- integrity: sha512-LKg+Cr2ZF61fkcaK1UdkH2yEBBKnYjTyWzTJT6KNPcSPaiT7HSdhtMXQuN5wkTX0Xu72KQ1l8S42rlmexS2hSA==,
- }
- engines: { node: 20 || >=22 }
+ resolution: {integrity: sha512-LKg+Cr2ZF61fkcaK1UdkH2yEBBKnYjTyWzTJT6KNPcSPaiT7HSdhtMXQuN5wkTX0Xu72KQ1l8S42rlmexS2hSA==}
+ engines: {node: 20 || >=22}
hasBin: true
rollup-plugin-visualizer@6.0.5:
- resolution:
- {
- integrity: sha512-9+HlNgKCVbJDs8tVtjQ43US12eqaiHyyiLMdBwQ7vSZPiHMysGNo2E88TAp1si5wx8NAoYriI2A5kuKfIakmJg==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-9+HlNgKCVbJDs8tVtjQ43US12eqaiHyyiLMdBwQ7vSZPiHMysGNo2E88TAp1si5wx8NAoYriI2A5kuKfIakmJg==}
+ engines: {node: '>=18'}
hasBin: true
peerDependencies:
rolldown: 1.x || ^1.0.0-beta
@@ -13414,39 +9218,24 @@ packages:
optional: true
rollup@4.57.1:
- resolution:
- {
- integrity: sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A==,
- }
- engines: { node: '>=18.0.0', npm: '>=8.0.0' }
+ resolution: {integrity: sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A==}
+ engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
router@2.2.0:
- resolution:
- {
- integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==,
- }
- engines: { node: '>= 18' }
+ resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==}
+ engines: {node: '>= 18'}
run-async@2.4.1:
- resolution:
- {
- integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==,
- }
- engines: { node: '>=0.12.0' }
+ resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==}
+ engines: {node: '>=0.12.0'}
run-parallel@1.2.0:
- resolution:
- {
- integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==,
- }
+ resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
ruru-types@2.0.0:
- resolution:
- {
- integrity: sha512-7dBZHeU8Pnj0V+tLiPzr8RhpdsNuAwu5yhZqcolu6pzpItLG/LKKzN+gKAiCp17z6Lfpdu7bXs+9JS39PO+VxA==,
- }
- engines: { node: '>=22' }
+ resolution: {integrity: sha512-7dBZHeU8Pnj0V+tLiPzr8RhpdsNuAwu5yhZqcolu6pzpItLG/LKKzN+gKAiCp17z6Lfpdu7bXs+9JS39PO+VxA==}
+ engines: {node: '>=22'}
peerDependencies:
graphql: 16.13.0
react: ^18 || ^19
@@ -13458,11 +9247,8 @@ packages:
optional: true
ruru@2.0.0:
- resolution:
- {
- integrity: sha512-I8N4Jw0jsgFqgUnsLMR9BHnWyVX0xj7GfDYIjsvjt538zIVs/PiggdepsYjH6K2ul9bjHoS15p7XL2SnywSdCw==,
- }
- engines: { node: '>=22' }
+ resolution: {integrity: sha512-I8N4Jw0jsgFqgUnsLMR9BHnWyVX0xj7GfDYIjsvjt538zIVs/PiggdepsYjH6K2ul9bjHoS15p7XL2SnywSdCw==}
+ engines: {node: '>=22'}
hasBin: true
peerDependencies:
graphile-config: ^1.0.0-rc.5
@@ -13476,703 +9262,394 @@ packages:
optional: true
rxjs@7.8.2:
- resolution:
- {
- integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==,
- }
+ resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==}
safe-buffer@5.1.2:
- resolution:
- {
- integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==,
- }
+ resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
safe-buffer@5.2.1:
- resolution:
- {
- integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==,
- }
+ resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
safer-buffer@2.1.2:
- resolution:
- {
- integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==,
- }
+ resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
scheduler@0.27.0:
- resolution:
- {
- integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==,
- }
+ resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==}
schema-typescript@0.14.3:
- resolution:
- {
- integrity: sha512-DvagD66tMo1rDmvCQKZvBNCadk54vGJF/glzBvS4M57IRCOSpbczWHpq0dwEcLpl+EbsIusK4cUsL+RKXVaeYA==,
- }
+ resolution: {integrity: sha512-DvagD66tMo1rDmvCQKZvBNCadk54vGJF/glzBvS4M57IRCOSpbczWHpq0dwEcLpl+EbsIusK4cUsL+RKXVaeYA==}
semver@5.7.2:
- resolution:
- {
- integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==,
- }
+ resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
hasBin: true
semver@6.3.1:
- resolution:
- {
- integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==,
- }
+ resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
hasBin: true
semver@7.7.3:
- resolution:
- {
- integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==}
+ engines: {node: '>=10'}
hasBin: true
semver@7.7.4:
- resolution:
- {
- integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==}
+ engines: {node: '>=10'}
hasBin: true
send@1.2.1:
- resolution:
- {
- integrity: sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==,
- }
- engines: { node: '>= 18' }
+ resolution: {integrity: sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==}
+ engines: {node: '>= 18'}
serve-static@2.2.1:
- resolution:
- {
- integrity: sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==,
- }
- engines: { node: '>= 18' }
+ resolution: {integrity: sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==}
+ engines: {node: '>= 18'}
set-blocking@2.0.0:
- resolution:
- {
- integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==,
- }
+ resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
set-value@4.1.0:
- resolution:
- {
- integrity: sha512-zTEg4HL0RwVrqcWs3ztF+x1vkxfm0lP+MQQFPiMJTKVceBwEV0A569Ou8l9IYQG8jOZdMVI1hGsc0tmeD2o/Lw==,
- }
- engines: { node: '>=11.0' }
+ resolution: {integrity: sha512-zTEg4HL0RwVrqcWs3ztF+x1vkxfm0lP+MQQFPiMJTKVceBwEV0A569Ou8l9IYQG8jOZdMVI1hGsc0tmeD2o/Lw==}
+ engines: {node: '>=11.0'}
setprototypeof@1.2.0:
- resolution:
- {
- integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==,
- }
+ resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
shallow-clone@3.0.1:
- resolution:
- {
- integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==}
+ engines: {node: '>=8'}
shallowequal@1.1.0:
- resolution:
- {
- integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==,
- }
+ resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==}
shebang-command@2.0.0:
- resolution:
- {
- integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
+ engines: {node: '>=8'}
shebang-regex@3.0.0:
- resolution:
- {
- integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
+ engines: {node: '>=8'}
shelljs@0.10.0:
- resolution:
- {
- integrity: sha512-Jex+xw5Mg2qMZL3qnzXIfaxEtBaC4n7xifqaqtrZDdlheR70OGkydrPJWT0V1cA1k3nanC86x9FwAmQl6w3Klw==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-Jex+xw5Mg2qMZL3qnzXIfaxEtBaC4n7xifqaqtrZDdlheR70OGkydrPJWT0V1cA1k3nanC86x9FwAmQl6w3Klw==}
+ engines: {node: '>=18'}
side-channel-list@1.0.0:
- resolution:
- {
- integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
+ engines: {node: '>= 0.4'}
side-channel-map@1.0.1:
- resolution:
- {
- integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==}
+ engines: {node: '>= 0.4'}
side-channel-weakmap@1.0.2:
- resolution:
- {
- integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==}
+ engines: {node: '>= 0.4'}
side-channel@1.1.0:
- resolution:
- {
- integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
+ engines: {node: '>= 0.4'}
signal-exit@3.0.7:
- resolution:
- {
- integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==,
- }
+ resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
signal-exit@4.1.0:
- resolution:
- {
- integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==,
- }
- engines: { node: '>=14' }
+ resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
+ engines: {node: '>=14'}
sigstore@2.3.1:
- resolution:
- {
- integrity: sha512-8G+/XDU8wNsJOQS5ysDVO0Etg9/2uA5gR9l4ZwijjlwxBcrU6RPfwi2+jJmbP+Ap1Hlp/nVAaEO4Fj22/SL2gQ==,
- }
- engines: { node: ^16.14.0 || >=18.0.0 }
+ resolution: {integrity: sha512-8G+/XDU8wNsJOQS5ysDVO0Etg9/2uA5gR9l4ZwijjlwxBcrU6RPfwi2+jJmbP+Ap1Hlp/nVAaEO4Fj22/SL2gQ==}
+ engines: {node: ^16.14.0 || >=18.0.0}
simple-update-notifier@2.0.0:
- resolution:
- {
- integrity: sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==}
+ engines: {node: '>=10'}
slash@3.0.0:
- resolution:
- {
- integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
+ engines: {node: '>=8'}
slick@1.12.2:
- resolution:
- {
- integrity: sha512-4qdtOGcBjral6YIBCWJ0ljFSKNLz9KkhbWtuGvUyRowl1kxfuE1x/Z/aJcaiilpb3do9bl5K7/1h9XC5wWpY/A==,
- }
+ resolution: {integrity: sha512-4qdtOGcBjral6YIBCWJ0ljFSKNLz9KkhbWtuGvUyRowl1kxfuE1x/Z/aJcaiilpb3do9bl5K7/1h9XC5wWpY/A==}
smart-buffer@4.2.0:
- resolution:
- {
- integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==,
- }
- engines: { node: '>= 6.0.0', npm: '>= 3.0.0' }
+ resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==}
+ engines: {node: '>= 6.0.0', npm: '>= 3.0.0'}
smtp-server@3.18.1:
- resolution:
- {
- integrity: sha512-zlUXA6n3HkO0jMyNNc2S67uw7DWHOoLU9vjPo5oW2c8ehJMpRlSumyw4riuvfWPfW/8mryd7ED5PVf4YVg8Y6w==,
- }
- engines: { node: '>=18.18.0' }
+ resolution: {integrity: sha512-zlUXA6n3HkO0jMyNNc2S67uw7DWHOoLU9vjPo5oW2c8ehJMpRlSumyw4riuvfWPfW/8mryd7ED5PVf4YVg8Y6w==}
+ engines: {node: '>=18.18.0'}
socks-proxy-agent@8.0.5:
- resolution:
- {
- integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==,
- }
- engines: { node: '>= 14' }
+ resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==}
+ engines: {node: '>= 14'}
socks@2.8.7:
- resolution:
- {
- integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==,
- }
- engines: { node: '>= 10.0.0', npm: '>= 3.0.0' }
+ resolution: {integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==}
+ engines: {node: '>= 10.0.0', npm: '>= 3.0.0'}
sort-keys@2.0.0:
- resolution:
- {
- integrity: sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==}
+ engines: {node: '>=4'}
sorted-array-functions@1.3.0:
- resolution:
- {
- integrity: sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA==,
- }
+ resolution: {integrity: sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA==}
source-map-js@1.2.1:
- resolution:
- {
- integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
+ engines: {node: '>=0.10.0'}
source-map-resolve@0.6.0:
- resolution:
- {
- integrity: sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==,
- }
+ resolution: {integrity: sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==}
deprecated: See https://github.com/lydell/source-map-resolve#deprecated
source-map-support@0.5.13:
- resolution:
- {
- integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==,
- }
+ resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==}
source-map@0.6.1:
- resolution:
- {
- integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
+ engines: {node: '>=0.10.0'}
source-map@0.7.6:
- resolution:
- {
- integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==,
- }
- engines: { node: '>= 12' }
+ resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==}
+ engines: {node: '>= 12'}
spdx-correct@3.2.0:
- resolution:
- {
- integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==,
- }
+ resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
spdx-exceptions@2.5.0:
- resolution:
- {
- integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==,
- }
+ resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==}
spdx-expression-parse@3.0.1:
- resolution:
- {
- integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==,
- }
+ resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
spdx-license-ids@3.0.22:
- resolution:
- {
- integrity: sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==,
- }
+ resolution: {integrity: sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==}
split2@3.2.2:
- resolution:
- {
- integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==,
- }
+ resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==}
split2@4.2.0:
- resolution:
- {
- integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==,
- }
- engines: { node: '>= 10.x' }
+ resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==}
+ engines: {node: '>= 10.x'}
split@1.0.1:
- resolution:
- {
- integrity: sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==,
- }
+ resolution: {integrity: sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==}
sprintf-js@1.0.3:
- resolution:
- {
- integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==,
- }
+ resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
ssri@10.0.6:
- resolution:
- {
- integrity: sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==,
- }
- engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+ resolution: {integrity: sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
stack-utils@2.0.6:
- resolution:
- {
- integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==}
+ engines: {node: '>=10'}
statuses@1.5.0:
- resolution:
- {
- integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==,
- }
- engines: { node: '>= 0.6' }
+ resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==}
+ engines: {node: '>= 0.6'}
statuses@2.0.2:
- resolution:
- {
- integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==,
- }
- engines: { node: '>= 0.8' }
+ resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==}
+ engines: {node: '>= 0.8'}
stream-browserify@3.0.0:
- resolution:
- {
- integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==,
- }
+ resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==}
streamsearch@0.1.2:
- resolution:
- {
- integrity: sha512-jos8u++JKm0ARcSUTAZXOVC0mSox7Bhn6sBgty73P1f3JGf7yG2clTbBNHUdde/kdvP2FESam+vM6l8jBrNxHA==,
- }
- engines: { node: '>=0.8.0' }
+ resolution: {integrity: sha512-jos8u++JKm0ARcSUTAZXOVC0mSox7Bhn6sBgty73P1f3JGf7yG2clTbBNHUdde/kdvP2FESam+vM6l8jBrNxHA==}
+ engines: {node: '>=0.8.0'}
streamsearch@1.1.0:
- resolution:
- {
- integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==,
- }
- engines: { node: '>=10.0.0' }
+ resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==}
+ engines: {node: '>=10.0.0'}
strfy-js@3.2.1:
- resolution:
- {
- integrity: sha512-HSw2lkUJVPZ75I+E3HM7UqHMKvBCwjRt1MIAxPPNtLFjuqCrnDVKQQGfotdj/3qHxuhB6NDQ1rYmNjVpPBiNEA==,
- }
+ resolution: {integrity: sha512-HSw2lkUJVPZ75I+E3HM7UqHMKvBCwjRt1MIAxPPNtLFjuqCrnDVKQQGfotdj/3qHxuhB6NDQ1rYmNjVpPBiNEA==}
string-length@4.0.2:
- resolution:
- {
- integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==}
+ engines: {node: '>=10'}
string-width@4.2.3:
- resolution:
- {
- integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
+ engines: {node: '>=8'}
string-width@5.1.2:
- resolution:
- {
- integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==,
- }
- engines: { node: '>=12' }
+ resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
+ engines: {node: '>=12'}
string_decoder@0.10.31:
- resolution:
- {
- integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==,
- }
+ resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==}
string_decoder@1.1.1:
- resolution:
- {
- integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==,
- }
+ resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
string_decoder@1.3.0:
- resolution:
- {
- integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==,
- }
+ resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
strip-ansi@6.0.1:
- resolution:
- {
- integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
+ engines: {node: '>=8'}
strip-ansi@7.1.2:
- resolution:
- {
- integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==,
- }
- engines: { node: '>=12' }
+ resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==}
+ engines: {node: '>=12'}
strip-bom@3.0.0:
- resolution:
- {
- integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
+ engines: {node: '>=4'}
strip-bom@4.0.0:
- resolution:
- {
- integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==}
+ engines: {node: '>=8'}
strip-final-newline@2.0.0:
- resolution:
- {
- integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
+ engines: {node: '>=6'}
strip-indent@3.0.0:
- resolution:
- {
- integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==}
+ engines: {node: '>=8'}
strip-json-comments@3.1.1:
- resolution:
- {
- integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
+ engines: {node: '>=8'}
strnum@2.2.0:
- resolution:
- {
- integrity: sha512-Y7Bj8XyJxnPAORMZj/xltsfo55uOiyHcU2tnAVzHUnSJR/KsEX+9RoDeXEnsXtl/CX4fAcrt64gZ13aGaWPeBg==,
- }
+ resolution: {integrity: sha512-Y7Bj8XyJxnPAORMZj/xltsfo55uOiyHcU2tnAVzHUnSJR/KsEX+9RoDeXEnsXtl/CX4fAcrt64gZ13aGaWPeBg==}
styled-components@5.3.11:
- resolution:
- {
- integrity: sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw==}
+ engines: {node: '>=10'}
peerDependencies:
react: '>= 16.8.0'
react-dom: '>= 16.8.0'
react-is: '>= 16.8.0'
styled-system@5.1.5:
- resolution:
- {
- integrity: sha512-7VoD0o2R3RKzOzPK0jYrVnS8iJdfkKsQJNiLRDjikOpQVqQHns/DXWaPZOH4tIKkhAT7I6wIsy9FWTWh2X3q+A==,
- }
+ resolution: {integrity: sha512-7VoD0o2R3RKzOzPK0jYrVnS8iJdfkKsQJNiLRDjikOpQVqQHns/DXWaPZOH4tIKkhAT7I6wIsy9FWTWh2X3q+A==}
superagent@10.3.0:
- resolution:
- {
- integrity: sha512-B+4Ik7ROgVKrQsXTV0Jwp2u+PXYLSlqtDAhYnkkD+zn3yg8s/zjA2MeGayPoY/KICrbitwneDHrjSotxKL+0XQ==,
- }
- engines: { node: '>=14.18.0' }
+ resolution: {integrity: sha512-B+4Ik7ROgVKrQsXTV0Jwp2u+PXYLSlqtDAhYnkkD+zn3yg8s/zjA2MeGayPoY/KICrbitwneDHrjSotxKL+0XQ==}
+ engines: {node: '>=14.18.0'}
supertest@7.2.2:
- resolution:
- {
- integrity: sha512-oK8WG9diS3DlhdUkcFn4tkNIiIbBx9lI2ClF8K+b2/m8Eyv47LSawxUzZQSNKUrVb2KsqeTDCcjAAVPYaSLVTA==,
- }
- engines: { node: '>=14.18.0' }
+ resolution: {integrity: sha512-oK8WG9diS3DlhdUkcFn4tkNIiIbBx9lI2ClF8K+b2/m8Eyv47LSawxUzZQSNKUrVb2KsqeTDCcjAAVPYaSLVTA==}
+ engines: {node: '>=14.18.0'}
supports-color@5.5.0:
- resolution:
- {
- integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
+ engines: {node: '>=4'}
supports-color@7.2.0:
- resolution:
- {
- integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
+ engines: {node: '>=8'}
supports-color@8.1.1:
- resolution:
- {
- integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
+ engines: {node: '>=10'}
supports-preserve-symlinks-flag@1.0.0:
- resolution:
- {
- integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
+ engines: {node: '>= 0.4'}
synckit@0.11.12:
- resolution:
- {
- integrity: sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==,
- }
- engines: { node: ^14.18.0 || >=16.0.0 }
+ resolution: {integrity: sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==}
+ engines: {node: ^14.18.0 || >=16.0.0}
tabbable@6.4.0:
- resolution:
- {
- integrity: sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==,
- }
+ resolution: {integrity: sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==}
tamedevil@0.1.0:
- resolution:
- {
- integrity: sha512-Ry2HVNPnFW6yzNALT+LuABIg2YiTf9orzSl2tCh2mfxLIl0LrnAyadmFDfANdQFzPbPW3Y1DY03QwDoCqJuc/A==,
- }
- engines: { node: '>=22' }
+ resolution: {integrity: sha512-Ry2HVNPnFW6yzNALT+LuABIg2YiTf9orzSl2tCh2mfxLIl0LrnAyadmFDfANdQFzPbPW3Y1DY03QwDoCqJuc/A==}
+ engines: {node: '>=22'}
tar-stream@2.2.0:
- resolution:
- {
- integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==}
+ engines: {node: '>=6'}
tar@6.2.1:
- resolution:
- {
- integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==}
+ engines: {node: '>=10'}
deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
temp-dir@1.0.0:
- resolution:
- {
- integrity: sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==}
+ engines: {node: '>=4'}
test-exclude@6.0.0:
- resolution:
- {
- integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==}
+ engines: {node: '>=8'}
text-extensions@1.9.0:
- resolution:
- {
- integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==,
- }
- engines: { node: '>=0.10' }
+ resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==}
+ engines: {node: '>=0.10'}
through2@2.0.5:
- resolution:
- {
- integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==,
- }
+ resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==}
through@2.3.8:
- resolution:
- {
- integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==,
- }
+ resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
tinyglobby@0.2.12:
- resolution:
- {
- integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==,
- }
- engines: { node: '>=12.0.0' }
+ resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==}
+ engines: {node: '>=12.0.0'}
tinyglobby@0.2.15:
- resolution:
- {
- integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==,
- }
- engines: { node: '>=12.0.0' }
+ resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==}
+ engines: {node: '>=12.0.0'}
tinypool@2.1.0:
- resolution:
- {
- integrity: sha512-Pugqs6M0m7Lv1I7FtxN4aoyToKg1C4tu+/381vH35y8oENM/Ai7f7C4StcoK4/+BSw9ebcS8jRiVrORFKCALLw==,
- }
- engines: { node: ^20.0.0 || >=22.0.0 }
+ resolution: {integrity: sha512-Pugqs6M0m7Lv1I7FtxN4aoyToKg1C4tu+/381vH35y8oENM/Ai7f7C4StcoK4/+BSw9ebcS8jRiVrORFKCALLw==}
+ engines: {node: ^20.0.0 || >=22.0.0}
tmp@0.2.5:
- resolution:
- {
- integrity: sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==,
- }
- engines: { node: '>=14.14' }
+ resolution: {integrity: sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==}
+ engines: {node: '>=14.14'}
tmpl@1.0.5:
- resolution:
- {
- integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==,
- }
+ resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==}
to-regex-range@5.0.1:
- resolution:
- {
- integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==,
- }
- engines: { node: '>=8.0' }
+ resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
+ engines: {node: '>=8.0'}
toidentifier@1.0.1:
- resolution:
- {
- integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==,
- }
- engines: { node: '>=0.6' }
+ resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
+ engines: {node: '>=0.6'}
touch@3.1.1:
- resolution:
- {
- integrity: sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==,
- }
+ resolution: {integrity: sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==}
hasBin: true
tr46@0.0.3:
- resolution:
- {
- integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==,
- }
+ resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
transliteration@2.6.1:
- resolution:
- {
- integrity: sha512-hJ9BhrQAOnNTbpOr1MxsNjZISkn7ppvF5TKUeFmTE1mG4ZPD/XVxF0L0LUoIUCWmQyxH0gJpVtfYLAWf298U9w==,
- }
- engines: { node: '>=20.0.0' }
+ resolution: {integrity: sha512-hJ9BhrQAOnNTbpOr1MxsNjZISkn7ppvF5TKUeFmTE1mG4ZPD/XVxF0L0LUoIUCWmQyxH0gJpVtfYLAWf298U9w==}
+ engines: {node: '>=20.0.0'}
hasBin: true
treeverse@3.0.0:
- resolution:
- {
- integrity: sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ==,
- }
- engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+ resolution: {integrity: sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
trim-newlines@3.0.1:
- resolution:
- {
- integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==}
+ engines: {node: '>=8'}
ts-api-utils@2.4.0:
- resolution:
- {
- integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==,
- }
- engines: { node: '>=18.12' }
+ resolution: {integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==}
+ engines: {node: '>=18.12'}
peerDependencies:
typescript: '>=4.8.4'
ts-jest@29.4.6:
- resolution:
- {
- integrity: sha512-fSpWtOO/1AjSNQguk43hb/JCo16oJDnMJf3CdEGNkqsEX3t0KX96xvyX1D7PfLCpVoKu4MfVrqUkFyblYoY4lA==,
- }
- engines: { node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0 }
+ resolution: {integrity: sha512-fSpWtOO/1AjSNQguk43hb/JCo16oJDnMJf3CdEGNkqsEX3t0KX96xvyX1D7PfLCpVoKu4MfVrqUkFyblYoY4lA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0}
hasBin: true
peerDependencies:
'@babel/core': '>=7.0.0-beta.0 <8'
@@ -14198,10 +9675,7 @@ packages:
optional: true
ts-node@10.9.2:
- resolution:
- {
- integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==,
- }
+ resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==}
hasBin: true
peerDependencies:
'@swc/core': '>=1.2.50'
@@ -14215,257 +9689,146 @@ packages:
optional: true
tsconfig-paths@4.2.0:
- resolution:
- {
- integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==}
+ engines: {node: '>=6'}
tslib@2.8.1:
- resolution:
- {
- integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==,
- }
+ resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
tsx@4.21.0:
- resolution:
- {
- integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==}
+ engines: {node: '>=18.0.0'}
hasBin: true
tuf-js@2.2.1:
- resolution:
- {
- integrity: sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA==,
- }
- engines: { node: ^16.14.0 || >=18.0.0 }
+ resolution: {integrity: sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA==}
+ engines: {node: ^16.14.0 || >=18.0.0}
type-check@0.4.0:
- resolution:
- {
- integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==,
- }
- engines: { node: '>= 0.8.0' }
+ resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
+ engines: {node: '>= 0.8.0'}
type-detect@4.0.8:
- resolution:
- {
- integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==}
+ engines: {node: '>=4'}
type-fest@0.18.1:
- resolution:
- {
- integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==}
+ engines: {node: '>=10'}
type-fest@0.21.3:
- resolution:
- {
- integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
+ engines: {node: '>=10'}
type-fest@0.4.1:
- resolution:
- {
- integrity: sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==}
+ engines: {node: '>=6'}
type-fest@0.6.0:
- resolution:
- {
- integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==}
+ engines: {node: '>=8'}
type-fest@0.8.1:
- resolution:
- {
- integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==}
+ engines: {node: '>=8'}
type-fest@4.41.0:
- resolution:
- {
- integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==,
- }
- engines: { node: '>=16' }
+ resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==}
+ engines: {node: '>=16'}
type-is@1.6.18:
- resolution:
- {
- integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==,
- }
- engines: { node: '>= 0.6' }
+ resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==}
+ engines: {node: '>= 0.6'}
type-is@2.0.1:
- resolution:
- {
- integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==,
- }
- engines: { node: '>= 0.6' }
+ resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==}
+ engines: {node: '>= 0.6'}
typedarray@0.0.6:
- resolution:
- {
- integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==,
- }
+ resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==}
typescript@5.9.3:
- resolution:
- {
- integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==,
- }
- engines: { node: '>=14.17' }
+ resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
+ engines: {node: '>=14.17'}
hasBin: true
uc.micro@2.1.0:
- resolution:
- {
- integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==,
- }
+ resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==}
uglify-js@3.19.3:
- resolution:
- {
- integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==,
- }
- engines: { node: '>=0.8.0' }
+ resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==}
+ engines: {node: '>=0.8.0'}
hasBin: true
uglify-js@3.4.10:
- resolution:
- {
- integrity: sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==,
- }
- engines: { node: '>=0.8.0' }
+ resolution: {integrity: sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==}
+ engines: {node: '>=0.8.0'}
hasBin: true
undefsafe@2.0.5:
- resolution:
- {
- integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==,
- }
+ resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==}
undici-types@6.21.0:
- resolution:
- {
- integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==,
- }
+ resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
undici-types@7.18.2:
- resolution:
- {
- integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==,
- }
+ resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==}
undici@7.24.6:
- resolution:
- {
- integrity: sha512-Xi4agocCbRzt0yYMZGMA6ApD7gvtUFaxm4ZmeacWI4cZxaF6C+8I8QfofC20NAePiB/IcvZmzkJ7XPa471AEtA==,
- }
- engines: { node: '>=20.18.1' }
+ resolution: {integrity: sha512-Xi4agocCbRzt0yYMZGMA6ApD7gvtUFaxm4ZmeacWI4cZxaF6C+8I8QfofC20NAePiB/IcvZmzkJ7XPa471AEtA==}
+ engines: {node: '>=20.18.1'}
unique-filename@3.0.0:
- resolution:
- {
- integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==,
- }
- engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+ resolution: {integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
unique-slug@4.0.0:
- resolution:
- {
- integrity: sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==,
- }
- engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+ resolution: {integrity: sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
universal-user-agent@6.0.1:
- resolution:
- {
- integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==,
- }
+ resolution: {integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==}
universalify@2.0.1:
- resolution:
- {
- integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==,
- }
- engines: { node: '>= 10.0.0' }
+ resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
+ engines: {node: '>= 10.0.0'}
unload@2.2.0:
- resolution:
- {
- integrity: sha512-B60uB5TNBLtN6/LsgAf3udH9saB5p7gqJwcFfbOEZ8BcBHnGwCf6G/TGiEqkRAxX7zAFIUtzdrXQSdL3Q/wqNA==,
- }
+ resolution: {integrity: sha512-B60uB5TNBLtN6/LsgAf3udH9saB5p7gqJwcFfbOEZ8BcBHnGwCf6G/TGiEqkRAxX7zAFIUtzdrXQSdL3Q/wqNA==}
unpipe@1.0.0:
- resolution:
- {
- integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==,
- }
- engines: { node: '>= 0.8' }
+ resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
+ engines: {node: '>= 0.8'}
unrs-resolver@1.11.1:
- resolution:
- {
- integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==,
- }
+ resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==}
untildify@4.0.0:
- resolution:
- {
- integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==}
+ engines: {node: '>=8'}
upath@2.0.1:
- resolution:
- {
- integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==}
+ engines: {node: '>=4'}
update-browserslist-db@1.2.3:
- resolution:
- {
- integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==,
- }
+ resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==}
hasBin: true
peerDependencies:
browserslist: '>= 4.21.0'
upper-case@1.1.3:
- resolution:
- {
- integrity: sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==,
- }
+ resolution: {integrity: sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==}
uri-js@4.4.1:
- resolution:
- {
- integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==,
- }
+ resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
url-join@4.0.1:
- resolution:
- {
- integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==,
- }
+ resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==}
use-callback-ref@1.3.3:
- resolution:
- {
- integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==}
+ engines: {node: '>=10'}
peerDependencies:
'@types/react': '*'
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
@@ -14474,11 +9837,8 @@ packages:
optional: true
use-sidecar@1.1.3:
- resolution:
- {
- integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==}
+ engines: {node: '>=10'}
peerDependencies:
'@types/react': '*'
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
@@ -14487,72 +9847,42 @@ packages:
optional: true
use-sync-external-store@1.6.0:
- resolution:
- {
- integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==,
- }
+ resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
util-deprecate@1.0.2:
- resolution:
- {
- integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==,
- }
+ resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
uuid@10.0.0:
- resolution:
- {
- integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==,
- }
+ resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==}
hasBin: true
v8-compile-cache-lib@3.0.1:
- resolution:
- {
- integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==,
- }
+ resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==}
v8-to-istanbul@9.3.0:
- resolution:
- {
- integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==,
- }
- engines: { node: '>=10.12.0' }
+ resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==}
+ engines: {node: '>=10.12.0'}
valid-data-url@3.0.1:
- resolution:
- {
- integrity: sha512-jOWVmzVceKlVVdwjNSenT4PbGghU0SBIizAev8ofZVgivk/TVHXSbNL8LP6M3spZvkR9/QolkyJavGSX5Cs0UA==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-jOWVmzVceKlVVdwjNSenT4PbGghU0SBIizAev8ofZVgivk/TVHXSbNL8LP6M3spZvkR9/QolkyJavGSX5Cs0UA==}
+ engines: {node: '>=10'}
validate-npm-package-license@3.0.4:
- resolution:
- {
- integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==,
- }
+ resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
validate-npm-package-name@5.0.1:
- resolution:
- {
- integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==,
- }
- engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+ resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
vary@1.1.2:
- resolution:
- {
- integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==,
- }
- engines: { node: '>= 0.8' }
+ resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
+ engines: {node: '>= 0.8'}
vite@6.4.1:
- resolution:
- {
- integrity: sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==,
- }
- engines: { node: ^18.0.0 || ^20.0.0 || >=22.0.0 }
+ resolution: {integrity: sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==}
+ engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
hasBin: true
peerDependencies:
'@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0
@@ -14591,170 +9921,95 @@ packages:
optional: true
vscode-languageserver-types@3.17.5:
- resolution:
- {
- integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==,
- }
+ resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==}
walk-up-path@3.0.1:
- resolution:
- {
- integrity: sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==,
- }
+ resolution: {integrity: sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==}
walker@1.0.8:
- resolution:
- {
- integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==,
- }
+ resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==}
warning@3.0.0:
- resolution:
- {
- integrity: sha512-jMBt6pUrKn5I+OGgtQ4YZLdhIeJmObddh6CsibPxyQ5yPZm1XExSyzC1LCNX7BzhxWgiHmizBWJTHJIjMjTQYQ==,
- }
+ resolution: {integrity: sha512-jMBt6pUrKn5I+OGgtQ4YZLdhIeJmObddh6CsibPxyQ5yPZm1XExSyzC1LCNX7BzhxWgiHmizBWJTHJIjMjTQYQ==}
wcwidth@1.0.1:
- resolution:
- {
- integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==,
- }
+ resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==}
web-resource-inliner@5.0.0:
- resolution:
- {
- integrity: sha512-AIihwH+ZmdHfkJm7BjSXiEClVt4zUFqX4YlFAzjL13wLtDuUneSaFvDBTbdYRecs35SiU7iNKbMnN+++wVfb6A==,
- }
- engines: { node: '>=10.0.0' }
+ resolution: {integrity: sha512-AIihwH+ZmdHfkJm7BjSXiEClVt4zUFqX4YlFAzjL13wLtDuUneSaFvDBTbdYRecs35SiU7iNKbMnN+++wVfb6A==}
+ engines: {node: '>=10.0.0'}
webidl-conversions@3.0.1:
- resolution:
- {
- integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==,
- }
+ resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
whatwg-encoding@3.1.1:
- resolution:
- {
- integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==}
+ engines: {node: '>=18'}
deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation
whatwg-mimetype@4.0.0:
- resolution:
- {
- integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==}
+ engines: {node: '>=18'}
whatwg-url@5.0.0:
- resolution:
- {
- integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==,
- }
+ resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
which-module@2.0.1:
- resolution:
- {
- integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==,
- }
+ resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==}
which@2.0.2:
- resolution:
- {
- integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==,
- }
- engines: { node: '>= 8' }
+ resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
+ engines: {node: '>= 8'}
hasBin: true
which@4.0.0:
- resolution:
- {
- integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==,
- }
- engines: { node: ^16.13.0 || >=18.0.0 }
+ resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==}
+ engines: {node: ^16.13.0 || >=18.0.0}
hasBin: true
wide-align@1.1.5:
- resolution:
- {
- integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==,
- }
+ resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==}
word-wrap@1.2.5:
- resolution:
- {
- integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
+ engines: {node: '>=0.10.0'}
wordwrap@1.0.0:
- resolution:
- {
- integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==,
- }
+ resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==}
wrap-ansi@6.2.0:
- resolution:
- {
- integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==,
- }
- engines: { node: '>=8' }
+ 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' }
+ resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
+ engines: {node: '>=10'}
wrap-ansi@8.1.0:
- resolution:
- {
- integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==,
- }
- engines: { node: '>=12' }
+ resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
+ engines: {node: '>=12'}
wrappy@1.0.2:
- resolution:
- {
- integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==,
- }
+ resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
write-file-atomic@2.4.3:
- resolution:
- {
- integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==,
- }
+ resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==}
write-file-atomic@5.0.1:
- resolution:
- {
- integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==,
- }
- engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+ resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
write-json-file@3.2.0:
- resolution:
- {
- integrity: sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ==}
+ engines: {node: '>=6'}
write-pkg@4.0.0:
- resolution:
- {
- integrity: sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA==}
+ engines: {node: '>=8'}
ws@8.19.0:
- resolution:
- {
- integrity: sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==,
- }
- engines: { node: '>=10.0.0' }
+ resolution: {integrity: sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==}
+ engines: {node: '>=10.0.0'}
peerDependencies:
bufferutil: ^4.0.1
utf-8-validate: '>=5.0.2'
@@ -14765,113 +10020,65 @@ packages:
optional: true
xtend@4.0.2:
- resolution:
- {
- integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==,
- }
- engines: { node: '>=0.4' }
+ resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
+ engines: {node: '>=0.4'}
y18n@4.0.3:
- resolution:
- {
- integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==,
- }
+ resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==}
y18n@5.0.8:
- resolution:
- {
- integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
+ engines: {node: '>=10'}
yallist@3.1.1:
- resolution:
- {
- integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==,
- }
+ resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
yallist@4.0.0:
- resolution:
- {
- integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==,
- }
+ resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
yaml@2.8.2:
- resolution:
- {
- integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==,
- }
- engines: { node: '>= 14.6' }
+ resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==}
+ engines: {node: '>= 14.6'}
hasBin: true
yanse@0.2.1:
- resolution:
- {
- integrity: sha512-SMi3ZO1IqsvPLLXuy8LBCP1orqcjOT8VygiuyAlplaGeH2g+n4ZSSyWlA/BZjuUuN58TyOcz89mVkflSqIPxxQ==,
- }
+ resolution: {integrity: sha512-SMi3ZO1IqsvPLLXuy8LBCP1orqcjOT8VygiuyAlplaGeH2g+n4ZSSyWlA/BZjuUuN58TyOcz89mVkflSqIPxxQ==}
yargs-parser@18.1.3:
- resolution:
- {
- integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==}
+ engines: {node: '>=6'}
yargs-parser@20.2.9:
- resolution:
- {
- integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==}
+ engines: {node: '>=10'}
yargs-parser@21.1.1:
- resolution:
- {
- integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==,
- }
- engines: { node: '>=12' }
+ 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' }
+ resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==}
+ engines: {node: '>=8'}
yargs@16.2.0:
- resolution:
- {
- integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==}
+ engines: {node: '>=10'}
yargs@17.7.2:
- resolution:
- {
- integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==,
- }
- engines: { node: '>=12' }
+ resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
+ engines: {node: '>=12'}
yn@3.1.1:
- resolution:
- {
- integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==}
+ engines: {node: '>=6'}
yocto-queue@0.1.0:
- resolution:
- {
- integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
+ engines: {node: '>=10'}
zustand@5.0.11:
- resolution:
- {
- integrity: sha512-fdZY+dk7zn/vbWNCYmzZULHRrss0jx5pPFiOuMZ/5HJN6Yv3u+1Wswy/4MpZEkEGhtNH+pwxZB8OKgUBPzYAGg==,
- }
- engines: { node: '>=12.20.0' }
+ resolution: {integrity: sha512-fdZY+dk7zn/vbWNCYmzZULHRrss0jx5pPFiOuMZ/5HJN6Yv3u+1Wswy/4MpZEkEGhtNH+pwxZB8OKgUBPzYAGg==}
+ engines: {node: '>=12.20.0'}
peerDependencies:
'@types/react': '>=18.0.0'
immer: '>=9.0.6'
@@ -14888,6 +10095,7 @@ packages:
optional: true
snapshots:
+
'@0no-co/graphql.web@1.2.0(graphql@16.13.0)':
optionalDependencies:
graphql: 16.13.0